khronosfws/openmax_al/src/mediarecorder/xarecorditf.c
changeset 55 e267340986c9
parent 42 1fa3fb47b1e3
equal deleted inserted replaced
52:4ce423f34688 55:e267340986c9
    15  *
    15  *
    16  */
    16  */
    17 
    17 
    18 #include <stdio.h>
    18 #include <stdio.h>
    19 #include <stdlib.h>
    19 #include <stdlib.h>
    20 #include <assert.h>
       
    21 #include "xarecorditf.h"
    20 #include "xarecorditf.h"
    22 
    21 
    23 #include "xarecorditfadaptation.h"
    22 #include "xarecorditfadaptation.h"
    24 
    23 
    25 #include "xarecorditfadaptationmmf.h"
    24 #include "xarecorditfadaptationmmf.h"
   236         XAuint32 eventFlags)
   235         XAuint32 eventFlags)
   237     {
   236     {
   238     XAresult ret = XA_RESULT_SUCCESS;
   237     XAresult ret = XA_RESULT_SUCCESS;
   239     XARecordItfImpl* impl = GetImpl(self);
   238     XARecordItfImpl* impl = GetImpl(self);
   240     DEBUG_API_A1("->XARecordItfImpl_SetCallbackEventsMask- %lu", eventFlags);
   239     DEBUG_API_A1("->XARecordItfImpl_SetCallbackEventsMask- %lu", eventFlags);
   241     XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaRecorder);
   240     //XA_IMPL_THREAD_SAFETY_ENTRY(XATSMediaRecorder);
   242 
   241 
   243     if (!impl || (eventFlags > (XA_RECORDEVENT_HEADATLIMIT
   242     if (!impl || (eventFlags > (XA_RECORDEVENT_HEADATLIMIT
   244             | XA_RECORDEVENT_HEADATMARKER | XA_RECORDEVENT_HEADATNEWPOS
   243             | XA_RECORDEVENT_HEADATMARKER | XA_RECORDEVENT_HEADATNEWPOS
   245             | XA_RECORDEVENT_HEADMOVING | XA_RECORDEVENT_HEADSTALLED
   244             | XA_RECORDEVENT_HEADMOVING | XA_RECORDEVENT_HEADSTALLED
   246             | XA_RECORDEVENT_BUFFER_FULL)))
   245             | XA_RECORDEVENT_BUFFER_FULL)))
   304                 {
   303                 {
   305                 impl->positionupdateOn = XA_BOOLEAN_FALSE;
   304                 impl->positionupdateOn = XA_BOOLEAN_FALSE;
   306                 }
   305                 }
   307             }
   306             }
   308         }
   307         }
   309     XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder);
   308     //XA_IMPL_THREAD_SAFETY_EXIT(XATSMediaRecorder);
   310     DEBUG_API("<-XARecordItfImpl_SetCallbackEventsMask");
   309     DEBUG_API("<-XARecordItfImpl_SetCallbackEventsMask");
   311     return ret;
   310     return ret;
   312     }
   311     }
   313 
   312 
   314 /**
   313 /**
   321     {
   320     {
   322     XAresult ret = XA_RESULT_SUCCESS;
   321     XAresult ret = XA_RESULT_SUCCESS;
   323     XARecordItfImpl *impl = GetImpl(self);
   322     XARecordItfImpl *impl = GetImpl(self);
   324     DEBUG_API("->XARecordItfImpl_GetCallbackEventsMask");
   323     DEBUG_API("->XARecordItfImpl_GetCallbackEventsMask");
   325 
   324 
   326     DEBUG_INFO_A1("pEventFlags - %u", pEventFlags);
   325     DEBUG_INFO_A1("pEventFlags - %u", (int) pEventFlags);
   327 
   326 
   328     if (!impl || !pEventFlags)
   327     if (!impl || !pEventFlags)
   329         {
   328         {
   330         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   329         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   331         DEBUG_API("<-XARecordItfImpl_GetCallbackEventsMask");
   330         DEBUG_API("<-XARecordItfImpl_GetCallbackEventsMask");
   405         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   404         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   406         DEBUG_API("<-XARecordItfImpl_GetMarkerPosition");
   405         DEBUG_API("<-XARecordItfImpl_GetMarkerPosition");
   407         /* invalid parameter */
   406         /* invalid parameter */
   408         return XA_RESULT_PARAMETER_INVALID;
   407         return XA_RESULT_PARAMETER_INVALID;
   409         }
   408         }
       
   409     
   410     if (impl->markerPosition == NO_POSITION)
   410     if (impl->markerPosition == NO_POSITION)
   411         {
   411         {
   412         DEBUG_ERR("No marker position set.");
   412         DEBUG_ERR("No marker position set.");
   413         return XA_RESULT_PRECONDITIONS_VIOLATED;
   413         return XA_RESULT_PRECONDITIONS_VIOLATED;
   414         }
   414         }
   531  * Description: Free all resources reserved at XARecordItfImpl_Create
   531  * Description: Free all resources reserved at XARecordItfImpl_Create
   532  **/
   532  **/
   533 void XARecordItfImpl_Free(XARecordItfImpl* self)
   533 void XARecordItfImpl_Free(XARecordItfImpl* self)
   534     {
   534     {
   535     DEBUG_API("->XARecordItfImpl_Free");
   535     DEBUG_API("->XARecordItfImpl_Free");
   536     assert( self==self->self );
       
   537     XAAdaptationBase_RemoveEventHandler(self->adapCtx,
   536     XAAdaptationBase_RemoveEventHandler(self->adapCtx,
   538             &XARecordItfImpl_AdaptCb);
   537             &XARecordItfImpl_AdaptCb);
   539     free(self);
   538     free(self);
   540     DEBUG_API("<-XARecordItfImpl_Free");
   539     DEBUG_API("<-XARecordItfImpl_Free");
   541     }
   540     }
   552         {
   551         {
   553         DEBUG_ERR("XARecordItfImpl_AdaptCb, invalid context pointer!");
   552         DEBUG_ERR("XARecordItfImpl_AdaptCb, invalid context pointer!");
   554         DEBUG_API("<-XARecordItfImpl_AdaptCb");
   553         DEBUG_API("<-XARecordItfImpl_AdaptCb");
   555         return;
   554         return;
   556         }
   555         }
   557     assert(event);
       
   558     /* check position update events */
   556     /* check position update events */
   559     if (event->eventid == XA_ADAPT_POSITION_UPDATE_EVT)
   557     if (event->eventid == XA_ADAPT_POSITION_UPDATE_EVT)
   560         {
   558         {
   561         XAuint32 newpos = 0;
   559         XAuint32 newpos = 0;
   562         assert(event->data);
       
   563         newpos = *((XAuint32*) (event->data));
   560         newpos = *((XAuint32*) (event->data));
   564         DEBUG_INFO_A1("new position %u",newpos);
   561         DEBUG_INFO_A1("new position %u",newpos);
   565         /* check if marker passed and callback needed */
   562         /* check if marker passed and callback needed */
   566         if ((impl->markerPosition != NO_POSITION) && (impl->eventFlags
   563         if ((impl->markerPosition != NO_POSITION) && (impl->eventFlags
   567                 & XA_RECORDEVENT_HEADATMARKER))
   564                 & XA_RECORDEVENT_HEADATMARKER))