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_Mpeg4enc.h
2020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @brief
2120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @author      Yunji Kim (yunji.kim@samsung.com)
2238ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang * @version     2.0.0
2320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @history
2438ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang *   2012.02.20 : Create
2520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
2620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
2720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#ifndef EXYNOS_OMX_MPEG4_ENC_COMPONENT
2820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define EXYNOS_OMX_MPEG4_ENC_COMPONENT
2920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
3020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#include "Exynos_OMX_Def.h"
3120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#include "OMX_Component.h"
32800a8d754f6251b19a56b1aebde0e239c0e5f3cdJiho Chang#include "OMX_Video.h"
3320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
3420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum _CODEC_TYPE
3520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang{
3620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    CODEC_TYPE_H263,
3720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    CODEC_TYPE_MPEG4
3820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} CODEC_TYPE;
3920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
4020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct _EXYNOS_MFC_MPEG4ENC_HANDLE
4120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang{
4220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_HANDLETYPE             hMFCHandle;
43800a8d754f6251b19a56b1aebde0e239c0e5f3cdJiho Chang
4420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32                    indexTimestamp;
4538ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    OMX_U32 outputIndexTimestamp;
4638ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    OMX_BOOL bConfiguredMFCSrc;
4738ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    OMX_BOOL bConfiguredMFCDst;
4820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    CODEC_TYPE                 codecType;
4938ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang
5038ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    ExynosVideoDecOps *pEncOps;
5138ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    ExynosVideoDecBufferOps *pInbufOps;
5238ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    ExynosVideoDecBufferOps *pOutbufOps;
5338ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    ExynosVideoEncParam      encParam;
5420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} EXYNOS_MFC_MPEG4ENC_HANDLE;
5520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
5620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct _EXYNOS_MPEG4ENC_HANDLE
5720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang{
5820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    /* OMX Codec specific */
5920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VIDEO_PARAM_H263TYPE  h263Component[ALL_PORT_NUM];
6020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VIDEO_PARAM_MPEG4TYPE mpeg4Component[ALL_PORT_NUM];
6120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE errorCorrectionType[ALL_PORT_NUM];
6220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
6320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    /* SEC MFC Codec specific */
6420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    EXYNOS_MFC_MPEG4ENC_HANDLE   hMFCMpeg4Handle;
6538ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang
6638ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    OMX_BOOL bSourceStart;
6738ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    OMX_BOOL bDestinationStart;
6838ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    OMX_HANDLETYPE hSourceStartEvent;
6938ef2572d26fc760c584a1855a3d002f34eb0231Jiho Chang    OMX_HANDLETYPE hDestinationStartEvent;
7020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} EXYNOS_MPEG4ENC_HANDLE;
7120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
7220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
7320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#ifdef __cplusplus
7420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changextern "C" {
7520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif
7620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
7720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho ChangOSCL_EXPORT_REF OMX_ERRORTYPE Exynos_OMX_ComponentInit(OMX_HANDLETYPE hComponent, OMX_STRING componentName);
7820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                OMX_ERRORTYPE Exynos_OMX_ComponentDeinit(OMX_HANDLETYPE hComponent);
7920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
8020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#ifdef __cplusplus
8120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang};
8220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif
8320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
8420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif
85