khronosfws/openmax_al/src/engine/xavideodecodercapabilitiesitf.c
changeset 16 43d09473c595
parent 12 5a06f39ad45b
equal deleted inserted replaced
14:80975da52420 16:43d09473c595
    21 #include <string.h>
    21 #include <string.h>
    22 
    22 
    23 
    23 
    24 #include "xaglobals.h"
    24 #include "xaglobals.h"
    25 #include "xavideodecodercapabilitiesitf.h"
    25 #include "xavideodecodercapabilitiesitf.h"
    26 #ifdef _GSTREAMER_BACKEND_  
    26 #include "xacapabilitiesmgr.h"   
    27 #include "XAStaticCapsAdaptation.h"
    27 
    28 #endif
    28 
    29 /* XAVideoDecoderCapabilitiesItfImpl* GetImpl
    29 /* XAVideoDecoderCapabilitiesItfImpl* GetImpl
    30  * Description: Validate interface pointer and cast it to implementation pointer.
    30  * Description: Validate interface pointer and cast it to implementation pointer.
    31  */
    31  */
    32 static XAVideoDecoderCapabilitiesItfImpl* GetImpl(XAVideoDecoderCapabilitiesItf self)
    32 static XAVideoDecoderCapabilitiesItfImpl* GetImpl(XAVideoDecoderCapabilitiesItf self)
    33 {
    33 {
    75                 res = XA_RESULT_BUFFER_INSUFFICIENT;
    75                 res = XA_RESULT_BUFFER_INSUFFICIENT;
    76             }
    76             }
    77             else
    77             else
    78             {
    78             {
    79                 
    79                 
    80 #ifdef _GSTREAMER_BACKEND_  
    80   
    81                 XAuint32 i = 0;
    81                 XAuint32 i = 0;
    82                 XAStaticCapsData temp;
    82                 XACapabilities temp;
    83                 for( i=0; i<impl->numCodecs; i++ )
    83                 for( i=0; i<impl->numCodecs; i++ )
    84                 {
    84                 {
    85                     /* query decoder id from adaptation using index value */
    85                     /* query decoder id from adaptation using index value */
    86                     XAStaticCapsAdapt_GetCapsByIdx(XACAP_DECODER|XACAP_VIDEO, i, &temp);
    86                     XACapabilitiesMgr_GetCapsByIdx(NULL, (XACapsType)(XACAP_DECODER|XACAP_VIDEO), i, &temp);
    87                     pDecoderIds[i] = temp.xaid;
    87                     pDecoderIds[i] = temp.xaid;
    88                 }
    88                 }
    89 #endif
    89 
    90             }
    90             }
    91         }
    91         }
    92         /* return number of decoders */
    92         /* return number of decoders */
    93         *pNumDecoders = impl->numCodecs;
    93         *pNumDecoders = impl->numCodecs;
    94     }
    94     }
   130                 res = XA_RESULT_PARAMETER_INVALID;
   130                 res = XA_RESULT_PARAMETER_INVALID;
   131             }
   131             }
   132             else
   132             else
   133             {
   133             {
   134                 /* query capabilities from adaptation using codec id */
   134                 /* query capabilities from adaptation using codec id */
   135 #ifdef _GSTREAMER_BACKEND_  
   135   
   136                 XAStaticCapsData temp;
   136                 XACapabilities temp;
   137                 memset(pDescriptor,0,sizeof(XAVideoCodecDescriptor));
   137                 memset(pDescriptor,0,sizeof(XAVideoCodecDescriptor));
   138                 res = XAStaticCapsAdapt_GetCapsById(XACAP_DECODER|XACAP_VIDEO, decoderId, &temp);
   138                 res = XACapabilitiesMgr_GetCapsById(NULL, (XACapsType)(XACAP_DECODER|XACAP_VIDEO), decoderId, &temp);
   139                 if( res == XA_RESULT_SUCCESS )
   139                 if( res == XA_RESULT_SUCCESS )
   140                 {
   140                 {
       
   141                     XAVideoCodecDescriptor* desc = (XAVideoCodecDescriptor*)(&temp.pEntry);
   141                     /* map applicable values to XAVideoCodecCapabilities */
   142                     /* map applicable values to XAVideoCodecCapabilities */
   142                     pDescriptor->codecId = temp.xaid;
   143                     pDescriptor->codecId = temp.xaid;
   143                     pDescriptor->maxWidth = temp.maxW;
   144                     pDescriptor->maxWidth = desc->maxWidth;
   144                     pDescriptor->maxHeight = temp.maxH;
   145                     pDescriptor->maxHeight = desc->maxHeight;
   145                     pDescriptor->maxFrameRate = (temp.maxFR & 0xffff)<<16;
   146                     pDescriptor->maxFrameRate = (desc->maxFrameRate & 0xffff)<<16;
   146                     pDescriptor->maxBitRate = temp.maxBR;
   147                     pDescriptor->maxBitRate = desc->maxBitRate;
   147                     /*other caps undefined*/
   148                     /*other caps undefined*/
   148                     pDescriptor->rateControlSupported = 0; /* reserved in decoders */
   149                     pDescriptor->rateControlSupported = 0; /* reserved in decoders */
   149                     pDescriptor->profileSetting = 0; /* unknown for theora or motionjpeg */
   150                     pDescriptor->profileSetting = 0; /* unknown for theora or motionjpeg */
   150                     pDescriptor->levelSetting = 0; /* unknown for theora or motionjpeg */
   151                     pDescriptor->levelSetting = 0; /* unknown for theora or motionjpeg */
   151                 }
   152                 }
   152 #endif
   153 
   153             }
   154             }
   154         }
   155         }
   155     }
   156     }
   156 
   157 
   157     DEBUG_API("<-XAVideoDecoderCapabilitiesItfImpl_GetDecoderCapabilities");
   158     DEBUG_API("<-XAVideoDecoderCapabilitiesItfImpl_GetDecoderCapabilities");
   177         self->itf.GetVideoDecoders =
   178         self->itf.GetVideoDecoders =
   178             XAVideoDecoderCapabilitiesItfImpl_GetVideoDecoders;
   179             XAVideoDecoderCapabilitiesItfImpl_GetVideoDecoders;
   179         self->itf.GetVideoDecoderCapabilities =
   180         self->itf.GetVideoDecoderCapabilities =
   180             XAVideoDecoderCapabilitiesItfImpl_GetVideoDecoderCapabilities;
   181             XAVideoDecoderCapabilitiesItfImpl_GetVideoDecoderCapabilities;
   181 
   182 
   182 #ifdef _GSTREAMER_BACKEND_  
   183   
   183         /* init variables */
   184         /* init variables */
   184         assert( XAStaticCapsAdapt_GetCapsCount( XACAP_DECODER|XACAP_VIDEO,
   185         assert( XACapabilitiesMgr_GetCapsCount( NULL, (XACapsType)(XACAP_DECODER|XACAP_VIDEO),
   185                                   &(self->numCodecs) ) == XA_RESULT_SUCCESS );
   186                                   &(self->numCodecs) ) == XA_RESULT_SUCCESS );
   186 #endif
   187 
   187         self->self = self;
   188         self->self = self;
   188     }
   189     }
   189     DEBUG_API("<-XAVideoDecoderCapabilitiesItfImpl_Create");
   190     DEBUG_API("<-XAVideoDecoderCapabilitiesItfImpl_Create");
   190     return self;
   191     return self;
   191 }
   192 }