khronosfws/openmax_al/src/mediaplayer/xaprefetchstatusitf.c
changeset 55 e267340986c9
parent 16 43d09473c595
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 
    20 
    22 #include "xaprefetchstatusitf.h"
    21 #include "xaprefetchstatusitf.h"
    23 
    22 
    24 #include "xaadaptationgst.h"
    23 #include "xaadaptationgst.h"
       
    24 #include "xaprefetchstatusitfadaptationmmf.h"
       
    25 
    25 
    26 
    26 
    27 
    27 static XAPrefetchStatusItfImpl* GetImpl(XAPrefetchStatusItf self)
    28 static XAPrefetchStatusItfImpl* GetImpl(XAPrefetchStatusItf self)
    28 {
    29 {
    29     if(self)
    30     if(self)
    49         /* invalid parameter */
    50         /* invalid parameter */
    50         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
    51         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
    51         DEBUG_API("<-XAPrefetchStatusItfImpl_GetPrefetchStatus");
    52         DEBUG_API("<-XAPrefetchStatusItfImpl_GetPrefetchStatus");
    52         return XA_RESULT_PARAMETER_INVALID;
    53         return XA_RESULT_PARAMETER_INVALID;
    53     }
    54     }
    54 
    55 	
    55     *pStatus = impl->pStatus;
    56     if (impl->adaptationCtx->fwtype == FWMgrFWMMF)
       
    57     {
       
    58 	    ret = XAPrefetchStatusItfAdaptMMF_GetPrefetchStatus(impl->adaptationCtx, pStatus);
       
    59     }
    56 
    60 
    57     DEBUG_API("<-XAPrefetchStatusItfImpl_GetPrefetchStatus");
    61     DEBUG_API("<-XAPrefetchStatusItfImpl_GetPrefetchStatus");
    58     return ret;
    62     return ret;
    59 }
    63 }
    60 
    64 
    70         /* invalid parameter */
    74         /* invalid parameter */
    71         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
    75         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
    72         DEBUG_API("<-XAPrefetchStatusItfImpl_GetFillLevel");
    76         DEBUG_API("<-XAPrefetchStatusItfImpl_GetFillLevel");
    73         return XA_RESULT_PARAMETER_INVALID;
    77         return XA_RESULT_PARAMETER_INVALID;
    74     }
    78     }
    75 
    79 	
    76     *pLevel = impl->pLevel;
    80     if (impl->adaptationCtx->fwtype == FWMgrFWMMF)
       
    81     {
       
    82 	    ret = XAPrefetchStatusItfAdaptMMF_GetFillLevel(impl->adaptationCtx, pLevel);
       
    83     }
    77 
    84 
    78     DEBUG_API("<-XAPrefetchStatusItfImpl_GetFillLevel");
    85     DEBUG_API("<-XAPrefetchStatusItfImpl_GetFillLevel");
    79     return ret;
    86     return ret;
    80 }
    87 }
    81 
    88 
    97 
   104 
    98     /* Can be null to reset callback */
   105     /* Can be null to reset callback */
    99     impl->callback = callback;
   106     impl->callback = callback;
   100     impl->cbcontext = pContext;
   107     impl->cbcontext = pContext;
   101     impl->cbPtrToSelf = self;
   108     impl->cbPtrToSelf = self;
       
   109 	
       
   110     if (impl->adaptationCtx->fwtype == FWMgrFWMMF)
       
   111     {
       
   112 	    ret = XAPrefetchStatusItfAdaptMMF_RegisterCallback(impl->adaptationCtx, callback);
       
   113     }
   102 
   114 
   103     DEBUG_API("<-XAPrefetchStatusItfImpl_RegisterCallback");
   115     DEBUG_API("<-XAPrefetchStatusItfImpl_RegisterCallback");
   104     return ret;
   116     return ret;
   105 }
   117 }
   106 
   118 
   109 {
   121 {
   110     XAresult ret = XA_RESULT_SUCCESS;
   122     XAresult ret = XA_RESULT_SUCCESS;
   111     XAPrefetchStatusItfImpl *impl = GetImpl(self);
   123     XAPrefetchStatusItfImpl *impl = GetImpl(self);
   112     DEBUG_API("->XAPrefetchStatusItfImpl_SetCallbackEventsMask");
   124     DEBUG_API("->XAPrefetchStatusItfImpl_SetCallbackEventsMask");
   113 
   125 
   114     if(!impl  )
   126     if(!impl || eventFlags > (XA_PREFETCHEVENT_STATUSCHANGE|XA_PREFETCHEVENT_FILLLEVELCHANGE))
   115     {
   127     {
   116         /* invalid parameter */
   128         /* invalid parameter */
   117         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   129         DEBUG_ERR("XA_RESULT_PARAMETER_INVALID");
   118         DEBUG_API("<-XAPrefetchStatusItfImpl_SetCallbackEventsMask");
   130         DEBUG_API("<-XAPrefetchStatusItfImpl_SetCallbackEventsMask");
   119         return XA_RESULT_PARAMETER_INVALID;
   131         return XA_RESULT_PARAMETER_INVALID;
   120     }
   132     }
   121 
   133 
   122     impl->eventFlags = eventFlags;
   134     impl->eventFlags = eventFlags;
       
   135 	
       
   136     if (impl->adaptationCtx->fwtype == FWMgrFWMMF)
       
   137     {
       
   138 	    ret = XAPrefetchStatusItfAdaptMMF_SetCallbackEventsMask(impl->adaptationCtx, eventFlags);
       
   139     }
   123 
   140 
   124     DEBUG_API("<-XAPrefetchStatusItfImpl_SetCallbackEventsMask");
   141     DEBUG_API("<-XAPrefetchStatusItfImpl_SetCallbackEventsMask");
   125     return ret;
   142     return ret;
   126 }
   143 }
   127 
   144 
   160         DEBUG_API("<-XAPrefetchStatusItfImpl_SetFillUpdatePeriod");
   177         DEBUG_API("<-XAPrefetchStatusItfImpl_SetFillUpdatePeriod");
   161         return XA_RESULT_PARAMETER_INVALID;
   178         return XA_RESULT_PARAMETER_INVALID;
   162     }
   179     }
   163 
   180 
   164     impl->fillUpdatePeriod = period;
   181     impl->fillUpdatePeriod = period;
       
   182 
       
   183     if (impl->adaptationCtx->fwtype == FWMgrFWMMF)
       
   184     {
       
   185 	    ret = XAPrefetchStatusItfAdaptMMF_SetFillUpdatePeriod(impl->adaptationCtx, period);
       
   186     }
   165 
   187 
   166     DEBUG_API("<-XAPrefetchStatusItfImpl_SetFillUpdatePeriod");
   188     DEBUG_API("<-XAPrefetchStatusItfImpl_SetFillUpdatePeriod");
   167     return ret;
   189     return ret;
   168 }
   190 }
   169 
   191 
   227 
   249 
   228 
   250 
   229 void XAPrefetchStatusItfImpl_Free(XAPrefetchStatusItfImpl* self)
   251 void XAPrefetchStatusItfImpl_Free(XAPrefetchStatusItfImpl* self)
   230 {
   252 {
   231     DEBUG_API("->XAPrefetchStatusItfImpl_Free");
   253     DEBUG_API("->XAPrefetchStatusItfImpl_Free");
   232     assert(self==self->self);
       
   233     XAAdaptationBase_RemoveEventHandler( (XAAdaptationBaseCtx*)self->adaptationCtx, &XAPrefetchStatusItfImpl_AdaptCb );
   254     XAAdaptationBase_RemoveEventHandler( (XAAdaptationBaseCtx*)self->adaptationCtx, &XAPrefetchStatusItfImpl_AdaptCb );
   234     free(self);
   255     free(self);
   235     DEBUG_API("<-XAPrefetchStatusItfImpl_Free");
   256     DEBUG_API("<-XAPrefetchStatusItfImpl_Free");
   236 }
   257 }
   237 
   258 
   246     {
   267     {
   247         DEBUG_ERR("XAPrefetchStatusItfImpl_AdaptCb, invalid context pointer!");
   268         DEBUG_ERR("XAPrefetchStatusItfImpl_AdaptCb, invalid context pointer!");
   248         DEBUG_API("<-XAPrefetchStatusItfImpl_AdaptCb");
   269         DEBUG_API("<-XAPrefetchStatusItfImpl_AdaptCb");
   249         return;
   270         return;
   250     }
   271     }
   251     assert(event);
   272 	
   252     if( event->eventid == XA_ADAPT_BUFFERING )
   273     if (impl->adaptationCtx->fwtype == FWMgrFWMMF)
   253     {
   274     {
   254         /* Adaptation sends percents convert it to permille */
   275         impl->callback(impl->cbPtrToSelf, impl->cbcontext, event->eventid);
   255         impl->fillUpdatePeriod = ((*(XAint32*)(event->data))*10);
   276         DEBUG_API("<-XAPrefetchStatusItfImpl_AdaptCb");
   256 
   277         return;
   257         /*Check do we have to send event */
   278     }
   258         if( impl->callback && impl->eventFlags & XA_PREFETCHEVENT_FILLLEVELCHANGE )
   279 	
   259         {
       
   260             if ( (*(XAint32*)event->data) >  impl->fillUpdatePeriod / 10 )
       
   261             {
       
   262                 impl->callback(impl->cbPtrToSelf, impl->cbcontext, XA_PREFETCHEVENT_FILLLEVELCHANGE);
       
   263             }
       
   264         }
       
   265     }
       
   266 
       
   267     DEBUG_API("<-XAPrefetchStatusItfImpl_AdaptCb");
   280     DEBUG_API("<-XAPrefetchStatusItfImpl_AdaptCb");
   268 }
   281 }
   269 
   282