18 #include <stdio.h> |
18 #include <stdio.h> |
19 #include <stdlib.h> |
19 #include <stdlib.h> |
20 #include <assert.h> |
20 #include <assert.h> |
21 |
21 |
22 #include "xametadatatraversalitf.h" |
22 #include "xametadatatraversalitf.h" |
23 #ifdef _GSTREAMER_BACKEND_ |
23 |
24 #include "XAMetadataAdaptation.h" |
24 #include "xametadataadaptation.h" |
25 #endif |
25 |
26 /* XAMetadataTraversalImpl* GetImpl(XAMetadataTraversalItf self) |
26 /* XAMetadataTraversalImpl* GetImpl(XAMetadataTraversalItf self) |
27 * Description: Validate interface pointer and cast it to implementation pointer. |
27 * Description: Validate interface pointer and cast it to implementation pointer. |
28 */ |
28 */ |
29 static XAMetadataTraversalImpl* GetImpl(XAMetadataTraversalItf self) |
29 static XAMetadataTraversalImpl* GetImpl(XAMetadataTraversalItf self) |
30 { |
30 { |
62 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
62 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
63 res = XA_RESULT_PARAMETER_INVALID; |
63 res = XA_RESULT_PARAMETER_INVALID; |
64 } |
64 } |
65 else if(impl->traversemode != mode) |
65 else if(impl->traversemode != mode) |
66 { |
66 { |
67 #ifdef _GSTREAMER_BACKEND_ |
67 |
68 res =XAMetadataTraversalItfAdapt_SetMode(impl->adaptCtx, mode); |
68 res =XAMetadataTraversalItfAdapt_SetMode((XAAdaptationGstCtx*)impl->adaptCtx, mode); |
69 #endif |
69 |
70 if( res == XA_RESULT_SUCCESS ) |
70 if( res == XA_RESULT_SUCCESS ) |
71 { |
71 { |
72 impl->traversemode = mode; |
72 impl->traversemode = mode; |
73 } |
73 } |
74 } |
74 } |
123 XAresult XAMetadataTraversalItfImpl_GetChildMIMETypeSize(XAMetadataTraversalItf self, |
123 XAresult XAMetadataTraversalItfImpl_GetChildMIMETypeSize(XAMetadataTraversalItf self, |
124 XAuint32 index, |
124 XAuint32 index, |
125 XAuint32 *pSize) |
125 XAuint32 *pSize) |
126 { |
126 { |
127 XAMetadataTraversalImpl *impl = NULL; |
127 XAMetadataTraversalImpl *impl = NULL; |
128 #ifdef _GSTREAMER_BACKEND_ |
128 |
129 XAuint32 chCount = 0; |
129 XAuint32 chCount = 0; |
130 #endif |
130 |
131 XAresult res = XA_RESULT_SUCCESS; |
131 XAresult res = XA_RESULT_SUCCESS; |
132 |
132 |
133 DEBUG_API("->XAMetadataTraversalItfImpl_GetChildMIMETypeSize"); |
133 DEBUG_API("->XAMetadataTraversalItfImpl_GetChildMIMETypeSize"); |
134 impl = GetImpl(self); |
134 impl = GetImpl(self); |
135 |
135 |
138 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
138 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
139 res = XA_RESULT_PARAMETER_INVALID; |
139 res = XA_RESULT_PARAMETER_INVALID; |
140 } |
140 } |
141 else |
141 else |
142 { |
142 { |
143 #ifdef _GSTREAMER_BACKEND_ |
143 |
144 res = XAMetadataTraversalItfAdapt_GetChildCount(impl->adaptCtx, &chCount); |
144 res = XAMetadataTraversalItfAdapt_GetChildCount((XAAdaptationGstCtx*)impl->adaptCtx, &chCount); |
145 if(index >= chCount || res != XA_RESULT_SUCCESS) |
145 if(index >= chCount || res != XA_RESULT_SUCCESS) |
146 { |
146 { |
147 /* out of bounds */ |
147 /* out of bounds */ |
148 res = XA_RESULT_PARAMETER_INVALID; |
148 res = XA_RESULT_PARAMETER_INVALID; |
149 } |
149 } |
150 res = XAMetadataTraversalItfAdapt_GetChildMIMETypeSize(impl->adaptCtx, index, pSize); |
150 res = XAMetadataTraversalItfAdapt_GetChildMIMETypeSize((XAAdaptationGstCtx*)impl->adaptCtx, index, pSize); |
151 #endif |
151 |
152 } |
152 } |
153 |
153 |
154 DEBUG_API("<-XAMetadataTraversalItfImpl_GetChildMIMETypeSize"); |
154 DEBUG_API("<-XAMetadataTraversalItfImpl_GetChildMIMETypeSize"); |
155 return res; |
155 return res; |
156 } |
156 } |
164 XAuint32 *pType, |
164 XAuint32 *pType, |
165 XAuint32 size, |
165 XAuint32 size, |
166 XAchar *pMimeType) |
166 XAchar *pMimeType) |
167 { |
167 { |
168 XAMetadataTraversalImpl *impl = NULL; |
168 XAMetadataTraversalImpl *impl = NULL; |
169 #ifdef _GSTREAMER_BACKEND_ |
169 |
170 XAuint32 chCount = 0; |
170 XAuint32 chCount = 0; |
171 #endif |
171 |
172 XAresult res = XA_RESULT_SUCCESS; |
172 XAresult res = XA_RESULT_SUCCESS; |
173 |
173 |
174 DEBUG_API("->XAMetadataTraversalItfImpl_GetChildInfo"); |
174 DEBUG_API("->XAMetadataTraversalItfImpl_GetChildInfo"); |
175 impl = GetImpl(self); |
175 impl = GetImpl(self); |
176 if( !impl || !pNodeID || !pType ) |
176 if( !impl || !pNodeID || !pType ) |
178 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
178 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
179 res = XA_RESULT_PARAMETER_INVALID; |
179 res = XA_RESULT_PARAMETER_INVALID; |
180 } |
180 } |
181 else |
181 else |
182 { |
182 { |
183 #ifdef _GSTREAMER_BACKEND_ |
183 |
184 res = XAMetadataTraversalItfAdapt_GetChildCount(impl->adaptCtx, &chCount); |
184 res = XAMetadataTraversalItfAdapt_GetChildCount((XAAdaptationGstCtx*)impl->adaptCtx, &chCount); |
185 if(index >= chCount || res != XA_RESULT_SUCCESS) |
185 if(index >= chCount || res != XA_RESULT_SUCCESS) |
186 { |
186 { |
187 /* out of bounds */ |
187 /* out of bounds */ |
188 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
188 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
189 DEBUG_API("<-XAMetadataTraversalItfImpl_GetChildInfo"); |
189 DEBUG_API("<-XAMetadataTraversalItfImpl_GetChildInfo"); |
190 return XA_RESULT_PARAMETER_INVALID; |
190 return XA_RESULT_PARAMETER_INVALID; |
191 } |
191 } |
192 res = XAMetadataTraversalItfAdapt_GetChildInfo(impl->adaptCtx, index, |
192 res = XAMetadataTraversalItfAdapt_GetChildInfo((XAAdaptationGstCtx*)impl->adaptCtx, index, |
193 pNodeID, pType, size, pMimeType); |
193 pNodeID, pType, size, pMimeType); |
194 #endif |
194 |
195 } |
195 } |
196 |
196 |
197 DEBUG_API("<-XAMetadataTraversalItfImpl_GetChildInfo"); |
197 DEBUG_API("<-XAMetadataTraversalItfImpl_GetChildInfo"); |
198 return res; |
198 return res; |
199 } |
199 } |
203 */ |
203 */ |
204 XAresult XAMetadataTraversalItfImpl_SetActiveNode(XAMetadataTraversalItf self, |
204 XAresult XAMetadataTraversalItfImpl_SetActiveNode(XAMetadataTraversalItf self, |
205 XAuint32 index) |
205 XAuint32 index) |
206 { |
206 { |
207 XAMetadataTraversalImpl *impl = NULL; |
207 XAMetadataTraversalImpl *impl = NULL; |
208 #ifdef _GSTREAMER_BACKEND_ |
208 |
209 XAuint32 chCount = 0; |
209 XAuint32 chCount = 0; |
210 #endif |
210 |
211 XAresult res = XA_RESULT_SUCCESS; |
211 XAresult res = XA_RESULT_SUCCESS; |
212 |
212 |
213 DEBUG_API("->XAMetadataTraversalItfImpl_SetActiveNode"); |
213 DEBUG_API("->XAMetadataTraversalItfImpl_SetActiveNode"); |
214 impl = GetImpl(self); |
214 impl = GetImpl(self); |
215 if( !impl ) |
215 if( !impl ) |
217 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
217 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
218 res = XA_RESULT_PARAMETER_INVALID; |
218 res = XA_RESULT_PARAMETER_INVALID; |
219 } |
219 } |
220 else |
220 else |
221 { |
221 { |
222 #ifdef _GSTREAMER_BACKEND_ |
222 |
223 res = XAMetadataTraversalItfAdapt_GetChildCount(impl->adaptCtx, &chCount); |
223 res = XAMetadataTraversalItfAdapt_GetChildCount((XAAdaptationGstCtx*)impl->adaptCtx, &chCount); |
224 if( res == XA_RESULT_SUCCESS ) |
224 if( res == XA_RESULT_SUCCESS ) |
225 { |
225 { |
226 if((impl->nodedepth==0 && index==XA_NODE_PARENT) || |
226 if((impl->nodedepth==0 && index==XA_NODE_PARENT) || |
227 (index >= chCount && index!=XA_NODE_PARENT)) |
227 (index >= chCount && index!=XA_NODE_PARENT)) |
228 { |
228 { |
230 res = XA_RESULT_PARAMETER_INVALID; |
230 res = XA_RESULT_PARAMETER_INVALID; |
231 } |
231 } |
232 else |
232 else |
233 { |
233 { |
234 /* update node and childs */ |
234 /* update node and childs */ |
235 res = XAMetadataTraversalItfAdapt_SetActiveNode(impl->adaptCtx, index); |
235 res = XAMetadataTraversalItfAdapt_SetActiveNode((XAAdaptationGstCtx*)impl->adaptCtx, index); |
236 if( res == XA_RESULT_SUCCESS ) |
236 if( res == XA_RESULT_SUCCESS ) |
237 { |
237 { |
238 if(index==XA_NODE_PARENT) |
238 if(index==XA_NODE_PARENT) |
239 { |
239 { |
240 impl->nodedepth++; |
240 impl->nodedepth++; |
250 { |
250 { |
251 DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); |
251 DEBUG_ERR("XA_RESULT_INTERNAL_ERROR"); |
252 DEBUG_API("<-XAMetadataTraversalItfImpl_SetActiveNode"); |
252 DEBUG_API("<-XAMetadataTraversalItfImpl_SetActiveNode"); |
253 return XA_RESULT_INTERNAL_ERROR; |
253 return XA_RESULT_INTERNAL_ERROR; |
254 } |
254 } |
255 #endif |
255 |
256 } |
256 } |
257 |
257 |
258 DEBUG_API("<-XAMetadataTraversalItfImpl_SetActiveNode"); |
258 DEBUG_API("<-XAMetadataTraversalItfImpl_SetActiveNode"); |
259 return res; |
259 return res; |
260 } |
260 } |
261 |
261 |
262 /***************************************************************************** |
262 /***************************************************************************** |
263 * XAMetadataTraversalImpl -specific methods |
263 * XAMetadataTraversalImpl -specific methods |
264 *****************************************************************************/ |
264 *****************************************************************************/ |
265 #ifdef _GSTREAMER_BACKEND_ |
|
266 |
265 |
267 /* XAMetadataTraversalImpl* XAMetadataTraversalItfImpl_Create() |
266 /* XAMetadataTraversalImpl* XAMetadataTraversalItfImpl_Create() |
268 * Description: Allocate and initialize XAMetadataTraversalImpl |
267 * Description: Allocate and initialize XAMetadataTraversalImpl |
269 */ |
268 */ |
270 XAMetadataTraversalImpl* XAMetadataTraversalItfImpl_Create( XAAdaptationBaseCtx *adaptCtx ) |
269 XAMetadataTraversalImpl* XAMetadataTraversalItfImpl_Create( XAAdaptationBaseCtx *adaptCtx ) |