1e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly/*--------------------------------------------------------------------------
261a2c6a19dbd06a317a419623020e02056661876Praveen ChavanCopyright (c) 2010-2011, 2013, The Linux Foundation. All rights reserved.
3e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly
4e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyRedistribution and use in source and binary forms, with or without
5e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pellymodification, are permitted provided that the following conditions are met:
6e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly    * Redistributions of source code must retain the above copyright
7e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly      notice, this list of conditions and the following disclaimer.
8e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly    * Redistributions in binary form must reproduce the above copyright
9e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly      notice, this list of conditions and the following disclaimer in the
10e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly      documentation and/or other materials provided with the distribution.
116eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    * Neither the name of The Linux Foundation nor
12e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly      the names of its contributors may be used to endorse or promote
13e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly      products derived from this software without specific prior written
14e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly      permission.
15e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly
16e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyIMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyNON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyEXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyPROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
23e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyOR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyOTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26e7273837b521d16f87dd5fb6eea3750a51ea92daNick PellyADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly--------------------------------------------------------------------------*/
28e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly
29e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#ifndef __OMX_VIDEO_COMMON_H__
30e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define __OMX_VIDEO_COMMON_H__
31e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly//////////////////////////////////////////////////////////////////////////////
32e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly//                             Include Files
33e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly//////////////////////////////////////////////////////////////////////////////
34e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly
35e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#include<stdlib.h>
36e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#include <stdio.h>
37826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef USE_ION
38278952ff92fab2da0c47b912daeb662130676be1Haynes Mathew George#include <linux/msm_ion.h>
39826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif
40e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly
418767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#ifdef _ANDROID_
428767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#include <cutils/properties.h>
438767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#else
448767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define PROPERTY_VALUE_MAX 92
458767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#endif
468767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan
47e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define OMX_VIDEO_DEC_NUM_INPUT_BUFFERS   2
48e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define OMX_VIDEO_DEC_NUM_OUTPUT_BUFFERS  2
49e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly
50e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#ifdef FEATURE_QTV_WVGA_ENABLE
51e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define OMX_VIDEO_DEC_INPUT_BUFFER_SIZE   (256*1024)
52e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#else
53e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define OMX_VIDEO_DEC_INPUT_BUFFER_SIZE   (128*1024)
54e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#endif
55e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly
56e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define OMX_CORE_CONTROL_CMDQ_SIZE   100
57e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define OMX_CORE_QCIF_HEIGHT         144
58e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define OMX_CORE_QCIF_WIDTH          176
59e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define OMX_CORE_VGA_HEIGHT          480
60e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define OMX_CORE_VGA_WIDTH           640
61e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define OMX_CORE_WVGA_HEIGHT         480
62e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#define OMX_CORE_WVGA_WIDTH          800
638767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define OMX_CORE_720P_WIDTH          1280
648767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define OMX_CORE_720P_HEIGHT          720
658767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define OMX_CORE_1080P_WIDTH         1920
668767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan#define OMX_CORE_1080P_HEIGHT        1080
67e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#define OMX_CORE_4KUHD_WIDTH         3840
68e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#define OMX_CORE_4KUHD_HEIGHT        2160
69e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#define OMX_CORE_4KDCI_WIDTH         4096
70e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#define OMX_CORE_4KDCI_HEIGHT        2160
71e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly
7261a2c6a19dbd06a317a419623020e02056661876Praveen Chavanenum PortIndexType {
7361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    PORT_INDEX_IN = 0,
7461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    PORT_INDEX_OUT = 1,
7561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    PORT_INDEX_BOTH = -1,
7661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    PORT_INDEX_NONE = -2
77e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly};
78e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly
7961a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct pmem {
8061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    void *buffer;
8161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    int fd;
8261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned offset;
8361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned size;
84e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly};
858767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan
868767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanstruct venc_debug_cap {
878767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    bool in_buffer_log;
888767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    bool out_buffer_log;
898767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    bool extradata_log;
90e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    bool roiqp_log;
918767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    char infile_name[PROPERTY_VALUE_MAX];
928767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    char outfile_name[PROPERTY_VALUE_MAX];
938767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    char extradatafile_name[PROPERTY_VALUE_MAX];
94e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    char roiqpfile_name[PROPERTY_VALUE_MAX];
958767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    char log_loc[PROPERTY_VALUE_MAX];
968767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    FILE *infile;
978767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    FILE *outfile;
988767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    FILE *extradatafile;
99e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    FILE *roiqpfile;
1008767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan};
101826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef USE_ION
10261a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct venc_ion {
103826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    int ion_device_fd;
104826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    struct ion_fd_data fd_ion_data;
105826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    struct ion_allocation_data ion_alloc_data;
106826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
107e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin
108826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif
109e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly#endif // __OMX_VIDEO_COMMON_H__
110e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly
111e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly
112e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly
113e7273837b521d16f87dd5fb6eea3750a51ea92daNick Pelly
114