120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/* 220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * 338ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang * Copyright 2012 Samsung Electronics S.LSI Co. LTD 420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * 520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * Licensed under the Apache License, Version 2.0 (the "License"); 620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * you may not use this file except in compliance with the License. 720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * You may obtain a copy of the License at 820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * 920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * http://www.apache.org/licenses/LICENSE-2.0 1020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * 1120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * Unless required by applicable law or agreed to in writing, software 1220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * distributed under the License is distributed on an "AS IS" BASIS, 1320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * See the License for the specific language governing permissions and 1520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * limitations under the License. 1620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */ 1720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 1820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/* 1920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @file Exynos_OMX_Basecomponent.h 2020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @brief 2120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @author SeungBeom Kim (sbcrux.kim@samsung.com) 2220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * Yunji Kim (yunji.kim@samsung.com) 2338ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang * @version 2.0.0 2420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @history 2538ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang * 2012.02.20 : Create 2620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */ 2720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 2820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#ifndef EXYNOS_OMX_BASECOMP 2920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define EXYNOS_OMX_BASECOMP 3020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 3120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#include "Exynos_OMX_Def.h" 3220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#include "OMX_Component.h" 3320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#include "Exynos_OSAL_Queue.h" 3420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#include "Exynos_OMX_Baseport.h" 3520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 3620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 3720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct _EXYNOS_OMX_MESSAGE 3820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang{ 3920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_U32 messageType; 4020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_U32 messageParam; 4120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_PTR pCmdData; 4220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} EXYNOS_OMX_MESSAGE; 4320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 4420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/* for Check TimeStamp after Seek */ 4520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct _EXYNOS_OMX_TIMESTAMP 4620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang{ 4720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_BOOL needSetStartTimeStamp; 4820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_BOOL needCheckStartTimeStamp; 4920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_TICKS startTimeStamp; 5020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_U32 nStartFlags; 5120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} EXYNOS_OMX_TIMESTAMP; 5220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 5320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct _EXYNOS_OMX_BASECOMPONENT 5420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang{ 5520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_STRING componentName; 5620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_VERSIONTYPE componentVersion; 5720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_VERSIONTYPE specVersion; 5820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 5920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_STATETYPE currentState; 6020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang EXYNOS_OMX_TRANS_STATETYPE transientState; 61d9966f64b1a4f195c099ccff95672d8fc7b8fed6SeungBeom Kim OMX_BOOL abendState; 62d9966f64b1a4f195c099ccff95672d8fc7b8fed6SeungBeom Kim OMX_HANDLETYPE abendStateEvent; 6320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 6420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang EXYNOS_CODEC_TYPE codecType; 6520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang EXYNOS_OMX_PRIORITYMGMTTYPE compPriority; 6620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_MARKTYPE propagateMarkType; 6720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_HANDLETYPE compMutex; 6820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 6920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_HANDLETYPE hComponentHandle; 7020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 7120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang /* Message Handler */ 7220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_BOOL bExitMessageHandlerThread; 7320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_HANDLETYPE hMessageHandler; 7420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_HANDLETYPE msgSemaphoreHandle; 7520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang EXYNOS_QUEUE messageQ; 7620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 7720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang /* Port */ 7820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_PORT_PARAM_TYPE portParam; 7920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang EXYNOS_OMX_BASEPORT *pExynosPort; 8020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 8120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_HANDLETYPE pauseEvent; 8220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 8320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang /* Callback function */ 8420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_CALLBACKTYPE *pCallbacks; 8520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_PTR callbackData; 8620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 8720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang /* Save Timestamp */ 8820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_TICKS timeStamp[MAX_TIMESTAMP]; 8920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang EXYNOS_OMX_TIMESTAMP checkTimeStamp; 9020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 9120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang /* Save Flags */ 9220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_U32 nFlags[MAX_FLAGS]; 9320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 9420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_BOOL getAllDelayBuffer; 9520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_BOOL reInputData; 9620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 9720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_BOOL bUseFlagEOF; 9820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_BOOL bSaveFlagEOS; 9920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 10038ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang /* Check for Old & New OMX Process type switch */ 10138ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang OMX_BOOL bMultiThreadProcess; 10238ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang 10338ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang OMX_ERRORTYPE (*exynos_codec_componentInit)(OMX_COMPONENTTYPE *pOMXComponent); 10438ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang OMX_ERRORTYPE (*exynos_codec_componentTerminate)(OMX_COMPONENTTYPE *pOMXComponent); 10520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 10620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_ERRORTYPE (*exynos_AllocateTunnelBuffer)(EXYNOS_OMX_BASEPORT *pOMXBasePort, OMX_U32 nPortIndex); 10720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_ERRORTYPE (*exynos_FreeTunnelBuffer)(EXYNOS_OMX_BASEPORT *pOMXBasePort, OMX_U32 nPortIndex); 10838ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang OMX_ERRORTYPE (*exynos_BufferProcessCreate)(OMX_COMPONENTTYPE *pOMXComponent); 10938ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang OMX_ERRORTYPE (*exynos_BufferProcessTerminate)(OMX_COMPONENTTYPE *pOMXComponent); 11038ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang OMX_ERRORTYPE (*exynos_BufferFlush)(OMX_COMPONENTTYPE *pOMXComponent, OMX_S32 nPortIndex, OMX_BOOL bEvent); 11120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} EXYNOS_OMX_BASECOMPONENT; 11220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 11320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho ChangOMX_ERRORTYPE Exynos_OMX_GetParameter( 11420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_IN OMX_HANDLETYPE hComponent, 11520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_IN OMX_INDEXTYPE nParamIndex, 11620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_INOUT OMX_PTR ComponentParameterStructure); 11720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 11820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho ChangOMX_ERRORTYPE Exynos_OMX_SetParameter( 11920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_IN OMX_HANDLETYPE hComponent, 12020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_IN OMX_INDEXTYPE nIndex, 12120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_IN OMX_PTR ComponentParameterStructure); 12220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 12320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho ChangOMX_ERRORTYPE Exynos_OMX_GetConfig( 12420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_IN OMX_HANDLETYPE hComponent, 12520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_IN OMX_INDEXTYPE nIndex, 12620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_INOUT OMX_PTR pComponentConfigStructure); 12720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 12820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho ChangOMX_ERRORTYPE Exynos_OMX_SetConfig( 12920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_IN OMX_HANDLETYPE hComponent, 13020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_IN OMX_INDEXTYPE nIndex, 13120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_IN OMX_PTR pComponentConfigStructure); 13220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 13320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho ChangOMX_ERRORTYPE Exynos_OMX_GetExtensionIndex( 13420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_IN OMX_HANDLETYPE hComponent, 13520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_IN OMX_STRING cParameterName, 13620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_OUT OMX_INDEXTYPE *pIndexType); 13720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 13820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho ChangOMX_ERRORTYPE Exynos_OMX_BaseComponent_Constructor(OMX_IN OMX_HANDLETYPE hComponent); 13920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho ChangOMX_ERRORTYPE Exynos_OMX_BaseComponent_Destructor(OMX_IN OMX_HANDLETYPE hComponent); 14020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 14120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#ifdef __cplusplus 14220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changextern "C" { 14320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif 14420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 14520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang OMX_ERRORTYPE Exynos_OMX_Check_SizeVersion(OMX_PTR header, OMX_U32 size); 14620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 14720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 14820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#ifdef __cplusplus 14920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang}; 15020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif 15120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang 15220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif 153