khronosfws/openmax_al/src/common/xametadatatraversalitf.c
changeset 16 43d09473c595
parent 12 5a06f39ad45b
equal deleted inserted replaced
14:80975da52420 16:43d09473c595
    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     }
   105             *pCount = 0;
   105             *pCount = 0;
   106             res = XA_RESULT_SUCCESS;
   106             res = XA_RESULT_SUCCESS;
   107         }
   107         }
   108         else
   108         else
   109         {
   109         {
   110 #ifdef _GSTREAMER_BACKEND_  
   110 
   111             res = XAMetadataTraversalItfAdapt_GetChildCount(impl->adaptCtx, pCount);
   111             res = XAMetadataTraversalItfAdapt_GetChildCount((XAAdaptationGstCtx*)impl->adaptCtx, pCount);
   112 #endif
   112 
   113         }
   113         }
   114     }
   114     }
   115 
   115 
   116     DEBUG_API("<-XAMetadataTraversalItfImpl_GetChildCount");
   116     DEBUG_API("<-XAMetadataTraversalItfImpl_GetChildCount");
   117     return res;
   117     return res;
   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 )
   289         self->self = self;
   288         self->self = self;
   290     }
   289     }
   291     DEBUG_API("<-XAMetadataTraversalItfImpl_Create");
   290     DEBUG_API("<-XAMetadataTraversalItfImpl_Create");
   292     return self;
   291     return self;
   293 }
   292 }
   294 #endif
   293 
   295 /* void XAMetadataTraversalItfImpl_Free(XAMetadataTraversalImpl* self)
   294 /* void XAMetadataTraversalItfImpl_Free(XAMetadataTraversalImpl* self)
   296  * Description: Free all resources reserved at XAMetadataTraversalItfImpl_Create
   295  * Description: Free all resources reserved at XAMetadataTraversalItfImpl_Create
   297  */
   296  */
   298 void XAMetadataTraversalItfImpl_Free(XAMetadataTraversalImpl* self)
   297 void XAMetadataTraversalItfImpl_Free(XAMetadataTraversalImpl* self)
   299 {
   298 {