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_Mpeg4dec.h
2020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @brief
2120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @author      Yunji Kim (yunji.kim@samsung.com)
22d03573a4a182b0a36eaa16fb7638d98429d1c3fbSeungBeom Kim * @author      SeungBeom Kim (sbcrux.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_MPEG4_DEC_COMPONENT
2920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define EXYNOS_OMX_MPEG4_DEC_COMPONENT
3020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
3120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#include "Exynos_OMX_Def.h"
3220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#include "OMX_Component.h"
3338ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang#include "OMX_Video.h"
3438ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang#include "ExynosVideoApi.h"
3520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
3620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
3720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum _CODEC_TYPE
3820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang{
3920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    CODEC_TYPE_H263,
4020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    CODEC_TYPE_MPEG4
4120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} CODEC_TYPE;
4220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
4320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/*
4420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * This structure is the same as BitmapInfoHhr struct in pv_avifile_typedefs.h file
4520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
4620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct _BitmapInfoHhr
4720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang{
4820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32    BiSize;
4920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32    BiWidth;
5020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32    BiHeight;
5120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U16    BiPlanes;
5220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U16    BiBitCount;
5320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32    BiCompression;
5420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32    BiSizeImage;
5520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32    BiXPelsPerMeter;
5620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32    BiYPelsPerMeter;
5720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32    BiClrUsed;
5820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32    BiClrImportant;
5920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} BitmapInfoHhr;
6020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
6138ef2572d26fc760c584a1855a3d002f34eb0231Jiho Changtypedef struct _EXYNOS_MFC_MPEG4DEC_HANDLE
6220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang{
63d03573a4a182b0a36eaa16fb7638d98429d1c3fbSeungBeom Kim    OMX_HANDLETYPE             hMFCHandle;
64d03573a4a182b0a36eaa16fb7638d98429d1c3fbSeungBeom Kim    OMX_U32                    indexTimestamp;
65d03573a4a182b0a36eaa16fb7638d98429d1c3fbSeungBeom Kim    OMX_U32                    outputIndexTimestamp;
66d03573a4a182b0a36eaa16fb7638d98429d1c3fbSeungBeom Kim    OMX_BOOL                   bConfiguredMFCSrc;
67d03573a4a182b0a36eaa16fb7638d98429d1c3fbSeungBeom Kim    OMX_BOOL                   bConfiguredMFCDst;
68bef6209319d736ba1006de1699a04b5ad89e2454SeungBeom Kim    OMX_U32                    maxDPBNum;
69d03573a4a182b0a36eaa16fb7638d98429d1c3fbSeungBeom Kim    CODEC_TYPE                 codecType;
7020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
7138ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    ExynosVideoColorFormatType MFCOutputColorType;
72d03573a4a182b0a36eaa16fb7638d98429d1c3fbSeungBeom Kim    ExynosVideoDecOps         *pDecOps;
73d03573a4a182b0a36eaa16fb7638d98429d1c3fbSeungBeom Kim    ExynosVideoDecBufferOps   *pInbufOps;
74d03573a4a182b0a36eaa16fb7638d98429d1c3fbSeungBeom Kim    ExynosVideoDecBufferOps   *pOutbufOps;
75d03573a4a182b0a36eaa16fb7638d98429d1c3fbSeungBeom Kim    ExynosVideoGeometry        codecOutbufConf;
7638ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang} EXYNOS_MFC_MPEG4DEC_HANDLE;
7738ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang
7838ef2572d26fc760c584a1855a3d002f34eb0231Jiho Changtypedef struct _EXYNOS_MPEG4DEC_HANDLE
7920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang{
8020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    /* OMX Codec specific */
8120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VIDEO_PARAM_H263TYPE            h263Component[ALL_PORT_NUM];
8220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VIDEO_PARAM_MPEG4TYPE           mpeg4Component[ALL_PORT_NUM];
8320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE errorCorrectionType[ALL_PORT_NUM];
8420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
8520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    /* EXYNOS MFC Codec specific */
86d03573a4a182b0a36eaa16fb7638d98429d1c3fbSeungBeom Kim    EXYNOS_MFC_MPEG4DEC_HANDLE          hMFCMpeg4Handle;
8738ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang
8838ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    OMX_BOOL bSourceStart;
8938ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    OMX_BOOL bDestinationStart;
9038ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    OMX_HANDLETYPE hSourceStartEvent;
9138ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    OMX_HANDLETYPE hDestinationStartEvent;
9238ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang} EXYNOS_MPEG4DEC_HANDLE;
9320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
9420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#ifdef __cplusplus
9520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changextern "C" {
9620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif
9720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
9820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho ChangOSCL_EXPORT_REF OMX_ERRORTYPE Exynos_OMX_ComponentInit(
9920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_HANDLETYPE hComponent,
10020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_STRING componentName);
10120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho ChangOMX_ERRORTYPE Exynos_OMX_ComponentDeinit(
10220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_HANDLETYPE hComponent);
10320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
10420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#ifdef __cplusplus
10520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang};
10620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif
10720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
10820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif
109