khronosfws/openmax_al/src/engine/xavideoencodercapabilitiesitf.c
changeset 16 43d09473c595
parent 12 5a06f39ad45b
equal deleted inserted replaced
14:80975da52420 16:43d09473c595
    20 #include <assert.h>
    20 #include <assert.h>
    21 #include <string.h>
    21 #include <string.h>
    22 
    22 
    23 #include "xaglobals.h"
    23 #include "xaglobals.h"
    24 #include "xavideoencodercapabilitiesitf.h"
    24 #include "xavideoencodercapabilitiesitf.h"
    25 #ifdef _GSTREAMER_BACKEND_  
    25 
    26 #include "XAStaticCapsAdaptation.h"
    26 #include "xacapabilitiesmgr.h"
    27 #endif
    27 
    28 /* XAVideoEncoderCapabilitiesItfImpl* GetImpl
    28 /* XAVideoEncoderCapabilitiesItfImpl* GetImpl
    29  * Description: Validate interface pointer and cast it to implementation pointer.
    29  * Description: Validate interface pointer and cast it to implementation pointer.
    30  */
    30  */
    31 static XAVideoEncoderCapabilitiesItfImpl* GetImpl(XAVideoEncoderCapabilitiesItf self)
    31 static XAVideoEncoderCapabilitiesItfImpl* GetImpl(XAVideoEncoderCapabilitiesItf self)
    32 {
    32 {
    72                 res = XA_RESULT_BUFFER_INSUFFICIENT;
    72                 res = XA_RESULT_BUFFER_INSUFFICIENT;
    73             }
    73             }
    74             else
    74             else
    75             {
    75             {
    76                 
    76                 
    77 #ifdef _GSTREAMER_BACKEND_  
    77   
    78                 XAuint32 i = 0;
    78                 XAuint32 i = 0;
    79                 XAStaticCapsData temp;
    79                 XACapabilities temp;
    80                 for( i=0; i<impl->numCodecs; i++ )
    80                 for( i=0; i<impl->numCodecs; i++ )
    81                 {
    81                 {
    82                     /* query encoder id from adaptation using index value */
    82                     /* query encoder id from adaptation using index value */
    83                     XAStaticCapsAdapt_GetCapsByIdx(XACAP_ENCODER|XACAP_VIDEO, i, &temp);
    83                     XACapabilitiesMgr_GetCapsByIdx(NULL, (XACapsType)(XACAP_ENCODER|XACAP_VIDEO), i, &temp);
    84                     pEncoderIds[i] = temp.xaid;
    84                     pEncoderIds[i] = temp.xaid;
    85                 }
    85                 }
    86 #endif
    86 
    87             }
    87             }
    88         }
    88         }
    89         /* return number of encoders */
    89         /* return number of encoders */
    90         *pNumEncoders = impl->numCodecs;
    90         *pNumEncoders = impl->numCodecs;
    91     }
    91     }
   126                 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   126                 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   127                 res = XA_RESULT_PARAMETER_INVALID;
   127                 res = XA_RESULT_PARAMETER_INVALID;
   128             }
   128             }
   129             else
   129             else
   130             {
   130             {
   131 #ifdef _GSTREAMER_BACKEND_  
   131   
   132                 /* query capabilities from adaptation using codec id */
   132                 /* query capabilities from adaptation using codec id */
   133                 XAStaticCapsData temp;
   133                 XACapabilities temp;
   134                 memset(pDescriptor,0,sizeof(XAVideoCodecDescriptor));
   134                 memset(pDescriptor,0,sizeof(XAVideoCodecDescriptor));
   135                 res = XAStaticCapsAdapt_GetCapsById(XACAP_ENCODER|XACAP_VIDEO, encoderId, &temp);
   135                 res = XACapabilitiesMgr_GetCapsById(NULL, (XACapsType)(XACAP_ENCODER|XACAP_VIDEO), encoderId, &temp);
   136                 if( res == XA_RESULT_SUCCESS )
   136                 if( res == XA_RESULT_SUCCESS )
   137                 {
   137                 {
   138                     /* map applicable values to XAAudioCodecCapabilities */
   138                     XAVideoCodecDescriptor* desc = (XAVideoCodecDescriptor*)(&temp.pEntry);
       
   139                     /* map applicable values to XAVideoCodecCapabilities */
   139                     pDescriptor->codecId = temp.xaid;
   140                     pDescriptor->codecId = temp.xaid;
   140                     pDescriptor->maxWidth = temp.maxW;
   141                     pDescriptor->maxWidth = desc->maxWidth;
   141                     pDescriptor->maxHeight = temp.maxH;
   142                     pDescriptor->maxHeight = desc->maxHeight;
   142                     pDescriptor->maxFrameRate = (temp.maxFR & 0xffff)<<16;
   143                     pDescriptor->maxFrameRate = (desc->maxFrameRate & 0xffff)<<16;
   143                     pDescriptor->maxBitRate = temp.maxBR;
   144                     pDescriptor->maxBitRate = desc->maxBitRate;
   144                     /*other caps undefined*/
   145                     /*other caps undefined*/
   145                     pDescriptor->rateControlSupported = XA_RATECONTROLMODE_CONSTANTBITRATE;
   146                     pDescriptor->rateControlSupported = XA_RATECONTROLMODE_CONSTANTBITRATE;
   146                     pDescriptor->profileSetting = 0; /* unknown for theora or motionjpeg */
   147                     pDescriptor->profileSetting = 0; /* unknown for theora or motionjpeg */
   147                     pDescriptor->levelSetting = 0; /* unknown for theora or motionjpeg */
   148                     pDescriptor->levelSetting = 0; /* unknown for theora or motionjpeg */
   148                 }
   149                 }
   149 #endif            
   150             
   150             }
   151             }
   151         }
   152         }
   152     }
   153     }
   153 
   154 
   154     DEBUG_API("<-XAVideoEncoderCapabilitiesItfImpl_GetEncoderCapabilities");
   155     DEBUG_API("<-XAVideoEncoderCapabilitiesItfImpl_GetEncoderCapabilities");
   174         self->itf.GetVideoEncoders =
   175         self->itf.GetVideoEncoders =
   175             XAVideoEncoderCapabilitiesItfImpl_GetVideoEncoders;
   176             XAVideoEncoderCapabilitiesItfImpl_GetVideoEncoders;
   176         self->itf.GetVideoEncoderCapabilities =
   177         self->itf.GetVideoEncoderCapabilities =
   177             XAVideoEncoderCapabilitiesItfImpl_GetVideoEncoderCapabilities;
   178             XAVideoEncoderCapabilitiesItfImpl_GetVideoEncoderCapabilities;
   178 
   179 
   179 #ifdef _GSTREAMER_BACKEND_  
   180   
   180         /* init variables */
   181         /* init variables */
   181         assert( XAStaticCapsAdapt_GetCapsCount( XACAP_ENCODER|XACAP_VIDEO,
   182         assert( XACapabilitiesMgr_GetCapsCount( NULL, (XACapsType)(XACAP_ENCODER|XACAP_VIDEO),
   182                                   &(self->numCodecs) ) == XA_RESULT_SUCCESS );
   183                                   &(self->numCodecs) ) == XA_RESULT_SUCCESS );
   183 #endif
   184 
   184         self->self = self;
   185         self->self = self;
   185     }
   186     }
   186     DEBUG_API("<-XAVideoEncoderCapabilitiesItfImpl_Create");
   187     DEBUG_API("<-XAVideoEncoderCapabilitiesItfImpl_Create");
   187     return self;
   188     return self;
   188 }
   189 }