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