24 #include "xadynintmgmtitf.h" |
24 #include "xadynintmgmtitf.h" |
25 #include "xaimagecontrolsitf.h" |
25 #include "xaimagecontrolsitf.h" |
26 #include "xaimageeffectsitf.h" |
26 #include "xaimageeffectsitf.h" |
27 #include "xavideopostprocessingitf.h" |
27 #include "xavideopostprocessingitf.h" |
28 #include "xathreadsafety.h" |
28 #include "xathreadsafety.h" |
|
29 #include "xaframeworkmgr.h" |
|
30 #include "xacameraadaptctx.h" |
|
31 #include "xacapabilitiesmgr.h" |
29 |
32 |
30 /* Static mapping of enumeration XACameraDeviceInterfaces to interface iids */ |
33 /* Static mapping of enumeration XACameraDeviceInterfaces to interface iids */ |
31 static const XAInterfaceID* XACameraDeviceItfIIDs[CAMERA_ITFCOUNT]= |
34 static const XAInterfaceID* XACameraDeviceItfIIDs[CAMERA_ITFCOUNT]= |
32 { |
35 { |
33 &XA_IID_OBJECT, |
36 &XA_IID_OBJECT, |
45 *****************************************************************************/ |
48 *****************************************************************************/ |
46 |
49 |
47 /* XAResult XACameraDeviceImpl_Create |
50 /* XAResult XACameraDeviceImpl_Create |
48 * Description: Create object |
51 * Description: Create object |
49 */ |
52 */ |
50 XAresult XACameraDeviceImpl_CreateCameraDevice(XAObjectItf* pDevice, |
53 XAresult XACameraDeviceImpl_CreateCameraDevice(FrameworkMap* mapper, |
|
54 XACapabilities* capabilities, |
|
55 XAObjectItf* pDevice, |
51 XAuint32 deviceID, |
56 XAuint32 deviceID, |
52 XAuint32 numInterfaces, |
57 XAuint32 numInterfaces, |
53 const XAInterfaceID * pInterfaceIds, |
58 const XAInterfaceID * pInterfaceIds, |
54 const XAboolean * pInterfaceRequired) |
59 const XAboolean * pInterfaceRequired) |
55 { |
60 { |
128 |
133 |
129 /* Mark interfaces that can be handled dynamically */ |
134 /* Mark interfaces that can be handled dynamically */ |
130 /* Mandated dynamic itfs */ |
135 /* Mandated dynamic itfs */ |
131 pBaseObj->interfaceMap[CAMERA_IMAGEEFFECTSITF].isDynamic = XA_BOOLEAN_TRUE; |
136 pBaseObj->interfaceMap[CAMERA_IMAGEEFFECTSITF].isDynamic = XA_BOOLEAN_TRUE; |
132 |
137 |
133 |
|
134 /* Initialize XACameraDeviceImpl variables */ |
|
135 pImpl->deviceID = deviceID; |
|
136 #ifdef _GSTREAMER_BACKEND_ |
|
137 pImpl->adaptationCtx = XACameraAdapt_Create(pImpl->deviceID); |
|
138 #endif |
|
139 |
|
140 |
|
141 /* This code is put here to return Feature Not Supported since adaptation is not present*/ |
138 /* This code is put here to return Feature Not Supported since adaptation is not present*/ |
142 /*************************************************/ |
139 /*************************************************/ |
143 XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); |
140 XAObjectItfImpl_Destroy((XAObjectItf)&(pBaseObj)); |
144 XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); |
141 XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); |
145 DEBUG_ERR("Required interface not found - abort creation!"); |
142 DEBUG_ERR("Required interface not found - abort creation!"); |
146 DEBUG_API("<-XACameraDeviceImpl_Create"); |
143 DEBUG_API("<-XACameraDeviceImpl_Create"); |
147 return XA_RESULT_FEATURE_UNSUPPORTED; |
144 return XA_RESULT_FEATURE_UNSUPPORTED; |
148 /*************************************************/ |
145 /*************************************************/ |
149 |
|
150 |
146 |
151 |
147 /* Initialize XACameraDeviceImpl variables |
152 |
148 pImpl->deviceID = deviceID; |
153 /* Set ObjectItf to point to newly created object */ |
149 |
154 /* |
150 pImpl->adaptationCtx = XACameraAdapt_Create(pImpl->deviceID); |
|
151 |
|
152 Set ObjectItf to point to newly created object |
155 *pDevice = (XAObjectItf)&(pBaseObj->self); |
153 *pDevice = (XAObjectItf)&(pBaseObj->self); |
156 |
154 |
157 XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); |
155 XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); |
158 DEBUG_API("<-XACameraDeviceImpl_Create"); |
156 DEBUG_API("<-XACameraDeviceImpl_Create"); |
159 return XA_RESULT_SUCCESS; |
157 return XA_RESULT_SUCCESS;*/ |
160 */ |
|
161 } |
158 } |
162 |
159 |
163 /* XAResult XACameraDeviceImpl_QueryNumSupportedInterfaces |
160 /* XAResult XACameraDeviceImpl_QueryNumSupportedInterfaces |
164 * Description: Statically query number of supported interfaces |
161 * Description: Statically query number of supported interfaces |
165 */ |
162 */ |
232 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
229 DEBUG_ERR("XA_RESULT_PARAMETER_INVALID"); |
233 DEBUG_API("<-XACameraDeviceImpl_DoRealize"); |
230 DEBUG_API("<-XACameraDeviceImpl_DoRealize"); |
234 return XA_RESULT_PARAMETER_INVALID; |
231 return XA_RESULT_PARAMETER_INVALID; |
235 } |
232 } |
236 |
233 |
237 #ifdef _GSTREAMER_BACKEND_ |
234 |
238 ret = XACameraAdapt_PostInit( pObjImpl->adaptationCtx ); |
235 ret = XACameraAdapt_PostInit( pObjImpl->adaptationCtx ); |
239 #endif |
236 |
240 if( ret != XA_RESULT_SUCCESS ) |
237 if( ret != XA_RESULT_SUCCESS ) |
241 { |
238 { |
242 XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); |
239 XA_IMPL_THREAD_SAFETY_EXIT(XATSCamera); |
243 DEBUG_ERR_A1("Camera adapt postinit - %d", ret); |
240 DEBUG_ERR_A1("Camera adapt postinit - %d", ret); |
244 DEBUG_API("<-XACameraDeviceImpl_DoRealize"); |
241 DEBUG_API("<-XACameraDeviceImpl_DoRealize"); |
262 XACameraDeviceImpl_DoAddItf, |
259 XACameraDeviceImpl_DoAddItf, |
263 XACameraDeviceImpl_DoResumeItf, |
260 XACameraDeviceImpl_DoResumeItf, |
264 XACameraDeviceImpl_DoRemoveItf); |
261 XACameraDeviceImpl_DoRemoveItf); |
265 } |
262 } |
266 break; |
263 break; |
267 #ifdef _GSTREAMER_BACKEND_ |
264 |
268 case CAMERA_CAMERAITF: |
265 case CAMERA_CAMERAITF: |
269 pItf = XACameraItfImpl_Create( pObjImpl->adaptationCtx ); |
266 pItf = XACameraItfImpl_Create( pObjImpl->adaptationCtx ); |
270 break; |
267 break; |
271 case CAMERA_CONFIGEXTENSIONITF: |
268 case CAMERA_CONFIGEXTENSIONITF: |
272 pItf = XAConfigExtensionsItfImpl_Create(); |
269 pItf = XAConfigExtensionsItfImpl_Create(); |
321 */ |
318 */ |
322 void XACameraDeviceImpl_FreeResources(XAObjectItf self) |
319 void XACameraDeviceImpl_FreeResources(XAObjectItf self) |
323 { |
320 { |
324 XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); |
321 XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); |
325 XAuint8 itfIdx = 0; |
322 XAuint8 itfIdx = 0; |
|
323 XACameraDeviceImpl* pImpl = (XACameraDeviceImpl*)(*self); |
|
324 assert( pObj && pImpl && pObj == pObj->self ); |
326 DEBUG_API("->XACameraDeviceImpl_FreeResources"); |
325 DEBUG_API("->XACameraDeviceImpl_FreeResources"); |
327 XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSCamera); |
326 XA_IMPL_THREAD_SAFETY_ENTRY_FOR_VOID_FUNCTIONS(XATSCamera); |
328 #ifdef _GSTREAMER_BACKEND_ |
327 |
329 XACameraDeviceImpl* pImpl = (XACameraDeviceImpl*)(*self); |
328 |
330 assert( pObj && pImpl && pObj == pObj->self ); |
|
331 #endif |
|
332 |
329 |
333 |
330 |
334 /* free all allocated interfaces */ |
331 /* free all allocated interfaces */ |
335 for(itfIdx = 0; itfIdx < CAMERA_ITFCOUNT; itfIdx++) |
332 for(itfIdx = 0; itfIdx < CAMERA_ITFCOUNT; itfIdx++) |
336 { |
333 { |
361 break; |
358 break; |
362 } |
359 } |
363 pObj->interfaceMap[itfIdx].pItf = NULL; |
360 pObj->interfaceMap[itfIdx].pItf = NULL; |
364 } |
361 } |
365 } |
362 } |
366 #ifdef _GSTREAMER_BACKEND_ |
363 |
367 if ( pImpl->adaptationCtx != NULL ) |
364 if ( pImpl->adaptationCtx != NULL ) |
368 { |
365 { |
369 XACameraAdapt_Destroy( pImpl->adaptationCtx ); |
366 XACameraAdapt_Destroy( pImpl->adaptationCtx ); |
370 pImpl->adaptationCtx = NULL; |
367 pImpl->adaptationCtx = NULL; |
371 } |
368 } |
372 #endif |
369 |
373 XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS(XATSCamera); |
370 XA_IMPL_THREAD_SAFETY_EXIT_FOR_VOID_FUNCTIONS(XATSCamera); |
374 DEBUG_API("<-XACameraDeviceImpl_FreeResources"); |
371 DEBUG_API("<-XACameraDeviceImpl_FreeResources"); |
375 return; |
372 return; |
376 } |
373 } |
377 |
374 |
382 /* XACameraDeviceImpl_DoAddItf |
379 /* XACameraDeviceImpl_DoAddItf |
383 * Dynamically add an interface, object specific parts |
380 * Dynamically add an interface, object specific parts |
384 */ |
381 */ |
385 XAresult XACameraDeviceImpl_DoAddItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ) |
382 XAresult XACameraDeviceImpl_DoAddItf(XAObjectItf self, XAObjItfMapEntry *mapEntry ) |
386 { |
383 { |
387 #ifdef _GSTREAMER_BACKEND_ |
384 |
388 XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); |
385 XAObjectItfImpl* pObj = (XAObjectItfImpl*)(*self); |
389 XACameraDeviceImpl* pImpl = (XACameraDeviceImpl*)(pObj); |
386 XACameraDeviceImpl* pImpl = (XACameraDeviceImpl*)(pObj); |
390 #endif |
387 |
391 XAresult ret = XA_RESULT_SUCCESS; |
388 XAresult ret = XA_RESULT_SUCCESS; |
392 DEBUG_API("->XACameraDeviceImpl_DoAddItf"); |
389 DEBUG_API("->XACameraDeviceImpl_DoAddItf"); |
393 if(mapEntry) |
390 if(mapEntry) |
394 { |
391 { |
395 switch( mapEntry->mapIdx ) |
392 switch( mapEntry->mapIdx ) |
396 { |
393 { |
397 case CAMERA_IMAGEEFFECTSITF: |
394 case CAMERA_IMAGEEFFECTSITF: |
398 #ifdef _GSTREAMER_BACKEND_ |
|
399 mapEntry->pItf = XAImageEffectsItfImpl_Create( pImpl->adaptationCtx ); |
395 mapEntry->pItf = XAImageEffectsItfImpl_Create( pImpl->adaptationCtx ); |
400 #endif |
|
401 break; |
396 break; |
402 default: |
397 default: |
403 DEBUG_ERR("XACameraDeviceImpl_DoAddItf unknown id"); |
398 DEBUG_ERR("XACameraDeviceImpl_DoAddItf unknown id"); |
404 ret = XA_RESULT_FEATURE_UNSUPPORTED; |
399 ret = XA_RESULT_FEATURE_UNSUPPORTED; |
405 break; |
400 break; |