3 * Copyright 2012 Samsung Electronics S.LSI Co. LTD
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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
19 * @file Exynos_OMX_Basecomponent.h
21 * @author SeungBeom Kim (sbcrux.kim@samsung.com)
22 * Yunji Kim (yunji.kim@samsung.com)
28 #ifndef EXYNOS_OMX_BASECOMP
29 #define EXYNOS_OMX_BASECOMP
31 #include "Exynos_OMX_Def.h"
32 #include "OMX_Component.h"
33 #include "Exynos_OSAL_Queue.h"
34 #include "Exynos_OMX_Baseport.h"
37 typedef struct _EXYNOS_OMX_MESSAGE
44 /* for Check TimeStamp after Seek */
45 typedef struct _EXYNOS_OMX_TIMESTAMP
47 OMX_BOOL needSetStartTimeStamp;
48 OMX_BOOL needCheckStartTimeStamp;
49 OMX_TICKS startTimeStamp;
51 OMX_BOOL bImmediateDisplay;
52 } EXYNOS_OMX_TIMESTAMP;
54 typedef struct _EXYNOS_OMX_BASECOMPONENT
56 OMX_STRING componentName;
57 OMX_VERSIONTYPE componentVersion;
58 OMX_VERSIONTYPE specVersion;
60 OMX_STATETYPE currentState;
61 EXYNOS_OMX_TRANS_STATETYPE transientState;
63 EXYNOS_CODEC_TYPE codecType;
64 EXYNOS_OMX_PRIORITYMGMTTYPE compPriority;
65 OMX_MARKTYPE propagateMarkType;
66 OMX_HANDLETYPE compMutex;
68 OMX_HANDLETYPE hComponentHandle;
71 OMX_BOOL bExitMessageHandlerThread;
72 OMX_HANDLETYPE hMessageHandler;
73 OMX_HANDLETYPE msgSemaphoreHandle;
74 EXYNOS_QUEUE messageQ;
77 OMX_PORT_PARAM_TYPE portParam;
78 EXYNOS_OMX_BASEPORT *pExynosPort;
80 OMX_HANDLETYPE pauseEvent;
82 /* Callback function */
83 OMX_CALLBACKTYPE *pCallbacks;
87 OMX_TICKS timeStamp[MAX_TIMESTAMP];
88 EXYNOS_OMX_TIMESTAMP checkTimeStamp;
91 OMX_U32 nFlags[MAX_FLAGS];
93 OMX_BOOL getAllDelayBuffer;
97 OMX_BOOL bSaveFlagEOS;
99 /* Check for Old & New OMX Process type switch */
100 OMX_BOOL bMultiThreadProcess;
102 OMX_ERRORTYPE (*exynos_codec_componentInit)(OMX_COMPONENTTYPE *pOMXComponent);
103 OMX_ERRORTYPE (*exynos_codec_componentTerminate)(OMX_COMPONENTTYPE *pOMXComponent);
105 OMX_ERRORTYPE (*exynos_AllocateTunnelBuffer)(EXYNOS_OMX_BASEPORT *pOMXBasePort, OMX_U32 nPortIndex);
106 OMX_ERRORTYPE (*exynos_FreeTunnelBuffer)(EXYNOS_OMX_BASEPORT *pOMXBasePort, OMX_U32 nPortIndex);
107 OMX_ERRORTYPE (*exynos_BufferProcessCreate)(OMX_HANDLETYPE pOMXComponent);
108 OMX_ERRORTYPE (*exynos_BufferProcessTerminate)(OMX_HANDLETYPE pOMXComponent);
109 OMX_ERRORTYPE (*exynos_BufferFlush)(OMX_COMPONENTTYPE *pOMXComponent, OMX_S32 nPortIndex, OMX_BOOL bEvent);
110 } EXYNOS_OMX_BASECOMPONENT;
112 OMX_ERRORTYPE Exynos_OMX_GetParameter(
113 OMX_IN OMX_HANDLETYPE hComponent,
114 OMX_IN OMX_INDEXTYPE nParamIndex,
115 OMX_INOUT OMX_PTR ComponentParameterStructure);
117 OMX_ERRORTYPE Exynos_OMX_SetParameter(
118 OMX_IN OMX_HANDLETYPE hComponent,
119 OMX_IN OMX_INDEXTYPE nIndex,
120 OMX_IN OMX_PTR ComponentParameterStructure);
122 OMX_ERRORTYPE Exynos_OMX_GetConfig(
123 OMX_IN OMX_HANDLETYPE hComponent,
124 OMX_IN OMX_INDEXTYPE nIndex,
125 OMX_INOUT OMX_PTR pComponentConfigStructure);
127 OMX_ERRORTYPE Exynos_OMX_SetConfig(
128 OMX_IN OMX_HANDLETYPE hComponent,
129 OMX_IN OMX_INDEXTYPE nIndex,
130 OMX_IN OMX_PTR pComponentConfigStructure);
132 OMX_ERRORTYPE Exynos_OMX_GetExtensionIndex(
133 OMX_IN OMX_HANDLETYPE hComponent,
134 OMX_IN OMX_STRING cParameterName,
135 OMX_OUT OMX_INDEXTYPE *pIndexType);
137 OMX_ERRORTYPE Exynos_OMX_BaseComponent_Constructor(OMX_IN OMX_HANDLETYPE hComponent);
138 OMX_ERRORTYPE Exynos_OMX_BaseComponent_Destructor(OMX_IN OMX_HANDLETYPE hComponent);
144 OMX_ERRORTYPE Exynos_OMX_Check_SizeVersion(OMX_PTR header, OMX_U32 size);