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 } |