Home | History | Annotate | Download | only in common
      1 /*
      2  *
      3  * Copyright 2012 Samsung Electronics S.LSI Co. LTD
      4  *
      5  * Licensed under the Apache License, Version 2.0 (the "License");
      6  * you may not use this file except in compliance with the License.
      7  * You may obtain a copy of the License at
      8  *
      9  *      http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  */
     17 
     18 /*
     19  * @file       Exynos_OMX_Basecomponent.h
     20  * @brief
     21  * @author     SeungBeom Kim (sbcrux.kim (at) samsung.com)
     22  *             Yunji Kim (yunji.kim (at) samsung.com)
     23  * @version    2.0.0
     24  * @history
     25  *    2012.02.20 : Create
     26  */
     27 
     28 #ifndef EXYNOS_OMX_BASECOMP
     29 #define EXYNOS_OMX_BASECOMP
     30 
     31 #include "Exynos_OMX_Def.h"
     32 #include "OMX_Component.h"
     33 #include "Exynos_OSAL_Queue.h"
     34 #include "Exynos_OMX_Baseport.h"
     35 
     36 
     37 typedef struct _EXYNOS_OMX_MESSAGE
     38 {
     39     OMX_U32 messageType;
     40     OMX_U32 messageParam;
     41     OMX_PTR pCmdData;
     42 } EXYNOS_OMX_MESSAGE;
     43 
     44 /* for Check TimeStamp after Seek */
     45 typedef struct _EXYNOS_OMX_TIMESTAMP
     46 {
     47     OMX_BOOL  needSetStartTimeStamp;
     48     OMX_BOOL  needCheckStartTimeStamp;
     49     OMX_TICKS startTimeStamp;
     50     OMX_U32   nStartFlags;
     51 } EXYNOS_OMX_TIMESTAMP;
     52 
     53 typedef struct _EXYNOS_OMX_BASECOMPONENT
     54 {
     55     OMX_STRING                  componentName;
     56     OMX_VERSIONTYPE             componentVersion;
     57     OMX_VERSIONTYPE             specVersion;
     58 
     59     OMX_STATETYPE               currentState;
     60     EXYNOS_OMX_TRANS_STATETYPE  transientState;
     61     OMX_BOOL                    abendState;
     62     OMX_HANDLETYPE              abendStateEvent;
     63 
     64     EXYNOS_CODEC_TYPE           codecType;
     65     EXYNOS_OMX_PRIORITYMGMTTYPE compPriority;
     66     OMX_MARKTYPE                propagateMarkType;
     67     OMX_HANDLETYPE              compMutex;
     68 
     69     OMX_HANDLETYPE              hComponentHandle;
     70 
     71     /* Message Handler */
     72     OMX_BOOL                    bExitMessageHandlerThread;
     73     OMX_HANDLETYPE              hMessageHandler;
     74     OMX_HANDLETYPE              msgSemaphoreHandle;
     75     EXYNOS_QUEUE                messageQ;
     76 
     77     /* Port */
     78     OMX_PORT_PARAM_TYPE         portParam;
     79     EXYNOS_OMX_BASEPORT        *pExynosPort;
     80 
     81     OMX_HANDLETYPE              pauseEvent;
     82 
     83     /* Callback function */
     84     OMX_CALLBACKTYPE           *pCallbacks;
     85     OMX_PTR                     callbackData;
     86 
     87     /* Save Timestamp */
     88     OMX_TICKS                   timeStamp[MAX_TIMESTAMP];
     89     EXYNOS_OMX_TIMESTAMP        checkTimeStamp;
     90 
     91     /* Save Flags */
     92     OMX_U32                     nFlags[MAX_FLAGS];
     93 
     94     OMX_BOOL                    getAllDelayBuffer;
     95     OMX_BOOL                    reInputData;
     96 
     97     OMX_BOOL bUseFlagEOF;
     98     OMX_BOOL bSaveFlagEOS;    //bSaveFlagEOS is OMX_TRUE, if EOS flag is incoming.
     99     OMX_BOOL bBehaviorEOS;    //bBehaviorEOS is OMX_TRUE, if EOS flag with Data are incoming.
    100 
    101     /* Check for Old & New OMX Process type switch */
    102     OMX_BOOL bMultiThreadProcess;
    103 
    104     OMX_ERRORTYPE (*exynos_codec_componentInit)(OMX_COMPONENTTYPE *pOMXComponent);
    105     OMX_ERRORTYPE (*exynos_codec_componentTerminate)(OMX_COMPONENTTYPE *pOMXComponent);
    106 
    107     OMX_ERRORTYPE (*exynos_AllocateTunnelBuffer)(EXYNOS_OMX_BASEPORT *pOMXBasePort, OMX_U32 nPortIndex);
    108     OMX_ERRORTYPE (*exynos_FreeTunnelBuffer)(EXYNOS_OMX_BASEPORT *pOMXBasePort, OMX_U32 nPortIndex);
    109     OMX_ERRORTYPE (*exynos_BufferProcessCreate)(OMX_COMPONENTTYPE *pOMXComponent);
    110     OMX_ERRORTYPE (*exynos_BufferProcessTerminate)(OMX_COMPONENTTYPE *pOMXComponent);
    111     OMX_ERRORTYPE (*exynos_BufferFlush)(OMX_COMPONENTTYPE *pOMXComponent, OMX_S32 nPortIndex, OMX_BOOL bEvent);
    112 } EXYNOS_OMX_BASECOMPONENT;
    113 
    114 OMX_ERRORTYPE Exynos_OMX_GetParameter(
    115     OMX_IN OMX_HANDLETYPE hComponent,
    116     OMX_IN OMX_INDEXTYPE  nParamIndex,
    117     OMX_INOUT OMX_PTR     ComponentParameterStructure);
    118 
    119 OMX_ERRORTYPE Exynos_OMX_SetParameter(
    120     OMX_IN OMX_HANDLETYPE hComponent,
    121     OMX_IN OMX_INDEXTYPE  nIndex,
    122     OMX_IN OMX_PTR        ComponentParameterStructure);
    123 
    124 OMX_ERRORTYPE Exynos_OMX_GetConfig(
    125     OMX_IN OMX_HANDLETYPE hComponent,
    126     OMX_IN OMX_INDEXTYPE  nIndex,
    127     OMX_INOUT OMX_PTR     pComponentConfigStructure);
    128 
    129 OMX_ERRORTYPE Exynos_OMX_SetConfig(
    130     OMX_IN OMX_HANDLETYPE hComponent,
    131     OMX_IN OMX_INDEXTYPE  nIndex,
    132     OMX_IN OMX_PTR        pComponentConfigStructure);
    133 
    134 OMX_ERRORTYPE Exynos_OMX_GetExtensionIndex(
    135     OMX_IN OMX_HANDLETYPE  hComponent,
    136     OMX_IN OMX_STRING      cParameterName,
    137     OMX_OUT OMX_INDEXTYPE *pIndexType);
    138 
    139 OMX_ERRORTYPE Exynos_OMX_BaseComponent_Constructor(OMX_IN OMX_HANDLETYPE hComponent);
    140 OMX_ERRORTYPE Exynos_OMX_BaseComponent_Destructor(OMX_IN OMX_HANDLETYPE hComponent);
    141 
    142 #ifdef __cplusplus
    143 extern "C" {
    144 #endif
    145 
    146     OMX_ERRORTYPE Exynos_OMX_Check_SizeVersion(OMX_PTR header, OMX_U32 size);
    147 
    148 
    149 #ifdef __cplusplus
    150 };
    151 #endif
    152 
    153 #endif
    154