1826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev/*--------------------------------------------------------------------------
2e4010605f233a213cf0d972397bb33c34c364227Patrick TjinCopyright (c) 2012-2016, The Linux Foundation. All rights reserved.
3826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
4826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan MalchevRedistribution and use in source and binary forms, with or without
56eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittalmodification, are permitted provided that the following conditions are
66eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittalmet:
7826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev    * Redistributions of source code must retain the above copyright
8826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev      notice, this list of conditions and the following disclaimer.
96eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    * Redistributions in binary form must reproduce the above
106eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal      copyright notice, this list of conditions and the following
116eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal      disclaimer in the documentation and/or other materials provided
126eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal      with the distribution.
136eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    * Neither the name of The Linux Foundation nor the names of its
146eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal      contributors may be used to endorse or promote products derived
156eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal      from this software without specific prior written permission.
166eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
176eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalTHIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
186eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalWARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
196eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
206eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
216eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalBE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
226eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
236eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalSUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
246eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
256eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalWHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
266eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
276eec4d1ea65df853450a6e158718981cba900bf6Shashank MittalIF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev--------------------------------------------------------------------------*/
29826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifndef __OMX_VENC_DEV__
30826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#define __OMX_VENC_DEV__
31826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
32826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include "OMX_Types.h"
33826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include "OMX_Core.h"
347beb72122c9b88f2a04e5ef30e370b3d35483d04Jorge Solano Altamirano#include "OMX_VideoExt.h"
35826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include "OMX_QCOMExtns.h"
36826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include "qc_omx_component.h"
37e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#ifdef _VQZIP_
38e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#include "VQZip.h"
39e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#endif
40826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include "omx_video_common.h"
41826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include "omx_video_base.h"
42826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include "omx_video_encoder.h"
43826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include <linux/videodev2.h>
44e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#include <media/msm_vidc.h>
45826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#include <poll.h>
46826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
476eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal#define TIMEOUT 5*60*1000
48f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan#define BIT(num) (1 << (num))
49f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan#define MAX_HYB_HIERP_LAYERS 6
50bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch#define MAX_AVC_HP_LAYERS (4)
51e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#define MAX_V4L2_BUFS 64 //VB2_MAX_FRAME
526eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
53f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavanenum hier_type {
54f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan    HIER_NONE = 0x0,
55f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan    HIER_P = 0x1,
56f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan    HIER_B = 0x2,
57f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan    HIER_P_HYBRID = 0x3,
58f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan};
59826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
6061a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_switch {
6161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned char    status;
62826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
63826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
6461a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_allocatorproperty {
6561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long     mincount;
6661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long     actualcount;
6761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long     datasize;
6861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long     suffixsize;
6961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long     alignment;
7061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long     bufpoolid;
71826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
72826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
7361a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_basecfg {
7461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    input_width;
7561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    input_height;
7661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    dvs_width;
7761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    dvs_height;
7861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    codectype;
7961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    fps_num;
8061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    fps_den;
8161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    targetbitrate;
8261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    inputformat;
83826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
84826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
8561a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_profile {
8661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    profile;
87826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
8861a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_profilelevel {
8961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    level;
90826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
91826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
9261a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_sessionqp {
9361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    iframeqp;
948767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    unsigned long    pframeqp;
958767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    unsigned long    bframeqp;
968767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan};
978767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan
988767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanstruct msm_venc_initqp {
998767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    unsigned long    iframeqp;
1008767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    unsigned long    pframeqp;
1018767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    unsigned long    bframeqp;
1028767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    unsigned long    enableinitqp;
103826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
104826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
10561a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_qprange {
10661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    maxqp;
10761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    minqp;
108826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
10961a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_intraperiod {
11061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    num_pframes;
11161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    num_bframes;
112826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
11361a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_seqheader {
11461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned char *hdrbufptr;
11561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    bufsize;
11661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    hdrlen;
117826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
118826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
11961a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_capability {
12061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    codec_types;
12161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    maxframe_width;
12261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    maxframe_height;
12361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    maxtarget_bitrate;
12461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    maxframe_rate;
12561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    input_formats;
12661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned char    dvs;
127826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
128826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
12961a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_entropycfg {
13061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned longentropysel;
13161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    cabacmodel;
132826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
133826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
13461a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_dbcfg {
13561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    db_mode;
13661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    slicealpha_offset;
13761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    slicebeta_offset;
138826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
139826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
14061a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_intrarefresh {
14161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    irmode;
14261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    mbcount;
143826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
144826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
14561a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_multiclicecfg {
14661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    mslice_mode;
14761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    mslice_size;
148826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
149826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
15061a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_bufferflush {
15161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    flush_mode;
152826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
153826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
15461a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_ratectrlcfg {
15561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    rcmode;
156826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
157826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
15861a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct    msm_venc_voptimingcfg {
15961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    voptime_resolution;
160826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
16161a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_framerate {
16261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    fps_denominator;
16361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    fps_numerator;
164826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
165826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
16661a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_targetbitrate {
16761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    target_bitrate;
168826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
169826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
170826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
17161a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_rotation {
17261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    rotation;
173826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
174826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
17561a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_timeout {
17661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    millisec;
177826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
178826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
17961a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_headerextension {
18061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long    header_extension;
181826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
182826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
1836eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittalstruct msm_venc_video_capability {
1846eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    unsigned int min_width;
1856eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    unsigned int max_width;
1866eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    unsigned int min_height;
1876eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal    unsigned int max_height;
1886eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal};
1896eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
19061a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_idrperiod {
19161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long idrperiod;
19261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan};
19361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan
19461a2c6a19dbd06a317a419623020e02056661876Praveen Chavanstruct msm_venc_slice_delivery {
19561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    unsigned long enable;
19661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan};
19761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan
1988767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanstruct msm_venc_hierlayers {
1998767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    unsigned int numlayers;
200f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan    enum hier_type hier_mode;
2018767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan};
2028767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan
2038767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanstruct msm_venc_ltrinfo {
2048767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    unsigned int enabled;
2058767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    unsigned int count;
2068767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan};
2078767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan
2088767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanstruct msm_venc_perf_level {
2098767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    unsigned int perflevel;
2108767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan};
2118767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan
2128767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanstruct msm_venc_vui_timing_info {
2138767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    unsigned int enabled;
2148767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan};
2158767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan
216e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinstruct msm_venc_vqzip_sei_info {
217e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    unsigned int enabled;
218e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin};
219e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin
2208767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavanstruct msm_venc_peak_bitrate {
2218767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan    unsigned int peakbitrate;
2228767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan};
2238767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan
224f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavanstruct msm_venc_vpx_error_resilience {
225f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan    unsigned int enable;
226f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan};
227f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan
228eb0227e4c228b54e9b56d3753054a8b3cc8f49aePraveen Chavanstruct msm_venc_priority {
229eb0227e4c228b54e9b56d3753054a8b3cc8f49aePraveen Chavan    OMX_U32 priority;
230eb0227e4c228b54e9b56d3753054a8b3cc8f49aePraveen Chavan};
231eb0227e4c228b54e9b56d3753054a8b3cc8f49aePraveen Chavan
232e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinstruct msm_venc_hybrid_hp {
233e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin   unsigned int nSize;
234e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin   unsigned int nKeyFrameInterval;
235e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin   unsigned int nTemporalLayerBitrateRatio[OMX_VIDEO_MAX_HP_LAYERS];
236e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin   unsigned int nMinQuantizer;
237e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin   unsigned int nMaxQuantizer;
238e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin   unsigned int nHpLayers;
239e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin};
240e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin
241bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetschstruct msm_venc_temporal_layers {
242bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch    enum hier_type hier_mode;
243bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch    OMX_U32 nMaxLayers;
244bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch    OMX_U32 nMaxBLayers;
245bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch    OMX_U32 nPLayers;
246bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch    OMX_U32 nBLayers;
247bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch    OMX_BOOL bIsBitrateRatioValid;
248bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch    // cumulative ratio: eg [25, 50, 75, 100] means [L0=25%, L1=25%, L2=25%, L3=25%]
249bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch    OMX_U32 nTemporalLayerBitrateRatio[OMX_VIDEO_ANDROID_MAXTEMPORALLAYERS];
250bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch    // Layerwise ratio: eg [L0=25%, L1=25%, L2=25%, L3=25%]
251bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch    OMX_U32 nTemporalLayerBitrateFraction[OMX_VIDEO_ANDROID_MAXTEMPORALLAYERS];
252bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch};
253bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch
254da491142bd05b7bbb5704579b04f1b968b47a9b6Praveen Chavanstruct msm_venc_color_space {
255da491142bd05b7bbb5704579b04f1b968b47a9b6Praveen Chavan    OMX_U32 primaries;
256da491142bd05b7bbb5704579b04f1b968b47a9b6Praveen Chavan    OMX_U32 range;
257da491142bd05b7bbb5704579b04f1b968b47a9b6Praveen Chavan    OMX_U32 matrix_coeffs;
258da491142bd05b7bbb5704579b04f1b968b47a9b6Praveen Chavan    OMX_U32 transfer_chars;
259da491142bd05b7bbb5704579b04f1b968b47a9b6Praveen Chavan};
260da491142bd05b7bbb5704579b04f1b968b47a9b6Praveen Chavan
2616eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittalenum v4l2_ports {
26261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    CAPTURE_PORT,
26361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    OUTPUT_PORT,
26461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MAX_PORT
2656eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal};
2666eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
267e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinclass encExtradata {
268e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinprivate:
269e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    enum {
270e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        FREE,
271e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        BUSY,
272e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        FOR_CONFIG,
273e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    };
274e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    struct info {
275e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        int status;
276e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        void *cookie;
277e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    };
278e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    pthread_mutex_t lock;
279e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    unsigned int mCount;
280e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    ssize_t mSize;
281e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    char *mUaddr;
282e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    struct venc_ion mIon;
283e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    struct info mIndex[MAX_V4L2_BUFS];
284e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    class omx_venc *mVencHandle;
285e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    int __get(char **userptr, int *fd, unsigned *offset, ssize_t *size, int type);
286e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    OMX_ERRORTYPE __allocate();
287e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    void __free();
288e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    void __debug();
289e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinpublic:
290e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    unsigned int mDbgEtbCount;
291e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    encExtradata(class omx_venc *venc_handle);
292e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    ~encExtradata();
293e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    void update(unsigned int count, ssize_t size);
294e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    /* Get extradata whose status is FREE. */
295e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    OMX_ERRORTYPE get(char **userptr, int *fd, unsigned *offset, ssize_t *size);
296e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    /* Get extradata which is tagged with cookie via setCookieForConfigExtradata. If no extradata is tagged with this cookie then get extradata whose status is FREE. */
297e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    OMX_ERRORTYPE get(void *cookie, char **userptr, int *fd, unsigned *offset, ssize_t *size);
298e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    /* return the extradata back to the pool of FREE extradata. */
299e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    OMX_ERRORTYPE put(char *userptr);
300e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    /* If there is already an extradata with status FOR_CONFIG, return that else return FREE extradata. */
301e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    OMX_ERRORTYPE getForConfig(char **userptr, int *fd, unsigned *offset, ssize_t *size);
302e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    /* Return the extradata pointer corresponding to the index. Does not change status of extradata. */
303e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    OMX_ERRORTYPE peek(unsigned index, char **userptr, int *fd, unsigned* offset, ssize_t *size);
304e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    /* Attach a cookie to extradata. Extradata with this cookie can be retrieved via getExtradata call.*/
305e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    void setCookieForConfig(void *cookie);
306e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    ssize_t getBufferSize();
307e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    unsigned int getBufferCount();
308e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    bool vqzip_sei_found;
309e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin};
310e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin
311e4010605f233a213cf0d972397bb33c34c364227Patrick Tjinstruct statistics {
312e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    struct timeval prev_tv;
313e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    int prev_fbd;
314e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin    int bytes_generated;
3156eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal};
3166eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
317f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavanenum rc_modes {
318f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan    RC_VBR_VFR = BIT(0),
319f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan    RC_VBR_CFR = BIT(1),
320f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan    RC_CBR_VFR = BIT(2),
321f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan    RC_CBR_CFR = BIT(3),
322f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan    RC_ALL = (RC_VBR_VFR | RC_VBR_CFR
323f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan        | RC_CBR_VFR | RC_CBR_CFR)
324f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan};
325f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan
326826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevclass venc_dev
327826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev{
32861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    public:
32961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        venc_dev(class omx_venc *venc_class); //constructor
33061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        ~venc_dev(); //des
33161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan
33261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        static void* async_venc_message_thread (void *);
33361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_open(OMX_U32);
33461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        void venc_close();
33561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        unsigned venc_stop(void);
33661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        unsigned venc_pause(void);
33761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        unsigned venc_start(void);
33861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        unsigned venc_flush(unsigned);
339826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef _ANDROID_ICS_
34061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_meta_mode(bool);
341826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif
34261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        unsigned venc_resume(void);
34361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        unsigned venc_start_done(void);
34461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        unsigned venc_stop_done(void);
34561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        unsigned venc_set_message_thread_id(pthread_t);
34661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_use_buf(void*, unsigned,unsigned);
34761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_free_buf(void*, unsigned);
34861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_empty_buf(void *, void *,unsigned,unsigned);
34961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_fill_buf(void *, void *,unsigned,unsigned);
35061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan
3518767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_get_buf_req(OMX_U32 *,OMX_U32 *,
3528767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan                OMX_U32 *,OMX_U32);
3538767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_set_buf_req(OMX_U32 *,OMX_U32 *,
3548767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan                OMX_U32 *,OMX_U32);
35561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_param(void *,OMX_INDEXTYPE);
35661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_config(void *configData, OMX_INDEXTYPE index);
35761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_get_profile_level(OMX_U32 *eProfile,OMX_U32 *eLevel);
358f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan        bool venc_get_seq_hdr(void *, unsigned, unsigned *);
3594cde8d5ef09e0be475e9d3ae5ff6b8b81e631f76Praveen Chavan        bool venc_get_dimensions(OMX_U32 portIndex, OMX_U32 *w, OMX_U32 *h);
36061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_loaded_start(void);
36161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_loaded_stop(void);
36261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_loaded_start_done(void);
36361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_loaded_stop_done(void);
36461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_is_video_session_supported(unsigned long width, unsigned long height);
365c66f61266df4158140e76c2fab3946dad764eee8Praveen Chavan        bool venc_color_align(OMX_BUFFERHEADERTYPE *buffer, OMX_U32 width,
366c66f61266df4158140e76c2fab3946dad764eee8Praveen Chavan                        OMX_U32 height);
3678767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_get_performance_level(OMX_U32 *perflevel);
3688767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_get_vui_timing_info(OMX_U32 *enabled);
369e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_get_vqzip_sei_info(OMX_U32 *enabled);
3708767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_get_peak_bitrate(OMX_U32 *peakbitrate);
371e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_get_batch_size(OMX_U32 *size);
372bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch        bool venc_get_temporal_layer_caps(OMX_U32 * /*nMaxLayers*/,
373bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch                OMX_U32 * /*nMaxBLayers*/);
3748767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_get_output_log_flag();
375e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_check_valid_config();
3768767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        int venc_output_log_buffers(const char *buffer_addr, int buffer_len);
377e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        int venc_input_log_buffers(OMX_BUFFERHEADERTYPE *buffer, int fd, int plane_offset,
378e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                        unsigned long inputformat);
3798767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        int venc_extradata_log_buffers(char *buffer_addr);
380e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_set_bitrate_type(OMX_U32 type);
381e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        int venc_roiqp_log_buffers(OMX_QTI_VIDEO_CONFIG_ROIINFO *roiInfo);
382e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin
383e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#ifdef _VQZIP_
384e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        class venc_dev_vqzip
385e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        {
386e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            public:
387e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                venc_dev_vqzip();
388e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                ~venc_dev_vqzip();
389e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                bool init();
390e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                void deinit();
391e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                struct VQZipConfig pConfig;
392e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                int tempSEI[300];
393e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                int fill_stats_data(void* pBuf, void *pStats);
394e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                typedef void (*vqzip_deinit_t)(void*);
395e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                typedef void* (*vqzip_init_t)(void);
396e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                typedef VQZipStatus (*vqzip_compute_stats_t)(void* const , const void * const , const VQZipConfig* ,VQZipStats*);
397e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            private:
398e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                pthread_mutex_t lock;
399e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                void *mLibHandle;
400e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                void *mVQZIPHandle;
401e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                vqzip_init_t mVQZIPInit;
402e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                vqzip_deinit_t mVQZIPDeInit;
403e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin                vqzip_compute_stats_t mVQZIPComputeStats;
404e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        };
405e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        venc_dev_vqzip vqzip;
406e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin#endif
4078767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        struct venc_debug_cap m_debug;
40861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        OMX_U32 m_nDriver_fd;
409e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        int m_poll_efd;
41061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool m_profile_set;
41161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool m_level_set;
412e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        int num_input_planes, num_output_planes;
41361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        int etb, ebd, ftb, fbd;
41461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct recon_buffer {
41561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            unsigned char* virtual_address;
41661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            int pmem_fd;
41761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            int size;
41861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            int alignment;
41961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            int offset;
420826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef USE_ION
42161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            int ion_device_fd;
42261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            struct ion_allocation_data alloc_data;
42361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            struct ion_fd_data ion_alloc_fd;
424826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif
42561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        };
42661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan
42761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        int stopped;
4282e277fbebd51de1d4f029f7950ed2a98731177dcArun Menon        int resume_in_stopped;
42961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool m_max_allowed_bitrate_check;
43061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        pthread_t m_tid;
43161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool async_thread_created;
432e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool async_thread_force_stop;
43361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        class omx_venc *venc_handle;
4348767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        int append_mbi_extradata(void *, struct msm_vidc_extradata_header*);
435e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool handle_output_extradata(void *);
436e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool handle_input_extradata(void *, int);
43761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        int venc_set_format(int);
4388767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool deinterlace_enabled;
439f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan        bool hw_overload;
440e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool is_gralloc_source_ubwc;
441e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool is_camera_source_ubwc;
442da491142bd05b7bbb5704579b04f1b968b47a9b6Praveen Chavan        bool is_csc_enabled;
443e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        OMX_U32 fd_list[64];
444e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        encExtradata mInputExtradata;
445e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        encExtradata mOutputExtradata;
446e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin
44761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    private:
4488767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        OMX_U32                             m_codec;
44961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_basecfg             m_sVenc_cfg;
45061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_ratectrlcfg         rate_ctrl;
45161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_targetbitrate       bitrate;
45261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_intraperiod         intra_period;
45361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_profile             codec_profile;
45461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_profilelevel        profile_level;
45561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_switch              set_param;
45661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_voptimingcfg        time_inc;
45761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_allocatorproperty   m_sInput_buff_property;
45861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_allocatorproperty   m_sOutput_buff_property;
45961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_sessionqp           session_qp;
4608767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        struct msm_venc_initqp              init_qp;
4618767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        struct msm_venc_qprange             session_qp_range;
4628767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        struct msm_venc_qprange             session_qp_values;
46361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_multiclicecfg       multislice;
46461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_entropycfg          entropy;
46561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_dbcfg               dbkfilter;
46661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_intrarefresh        intra_refresh;
46761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_headerextension     hec;
46861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_voptimingcfg        voptimecfg;
46961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_video_capability    capability;
47061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_idrperiod           idrperiod;
47161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        struct msm_venc_slice_delivery      slice_mode;
472f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan        struct msm_venc_hierlayers          hier_layers;
4738767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        struct msm_venc_perf_level          performance_level;
4748767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        struct msm_venc_vui_timing_info     vui_timing_info;
475e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        struct msm_venc_vqzip_sei_info      vqzip_sei_info;
4768767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        struct msm_venc_peak_bitrate        peak_bitrate;
477f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan        struct msm_venc_ltrinfo             ltrinfo;
478f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan        struct msm_venc_vpx_error_resilience vpx_err_resilience;
479eb0227e4c228b54e9b56d3753054a8b3cc8f49aePraveen Chavan        struct msm_venc_priority            sess_priority;
480dce0acfcb3cdf6eceef84f22def392cc6d4557abPraveen Chavan        OMX_U32                             operating_rate;
481e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        int rc_off_level;
482e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        struct msm_venc_hybrid_hp           hybrid_hp;
483bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch        msm_venc_temporal_layers            temporal_layers_config;
484da491142bd05b7bbb5704579b04f1b968b47a9b6Praveen Chavan        struct msm_venc_color_space         color_space;
48561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan
48661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_profile_level(OMX_U32 eProfile,OMX_U32 eLevel);
48788cb130018b5b78cca238a4e22ef4dc88295d8dfPraveen Chavan        bool venc_set_intra_period_config(OMX_U32 nPFrames, OMX_U32 nBFrames);
48861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_intra_period(OMX_U32 nPFrames, OMX_U32 nBFrames);
48961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_target_bitrate(OMX_U32 nTargetBitrate, OMX_U32 config);
49061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_ratectrl_cfg(OMX_VIDEO_CONTROLRATETYPE eControlRate);
49161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_session_qp(OMX_U32 i_frame_qp, OMX_U32 p_frame_qp,OMX_U32 b_frame_qp);
4928767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_set_session_qp_range(OMX_U32 min_qp, OMX_U32 max_qp);
49361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_encode_framerate(OMX_U32 encode_framerate, OMX_U32 config);
49461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_intra_vop_refresh(OMX_BOOL intra_vop_refresh);
49561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_color_format(OMX_COLOR_FORMATTYPE color_format);
49661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_validate_profile_level(OMX_U32 *eProfile, OMX_U32 *eLevel);
49761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_multislice_cfg(OMX_INDEXTYPE codec, OMX_U32 slicesize);
49861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_entropy_config(OMX_BOOL enable, OMX_U32 i_cabac_level);
49961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_inloop_filter(OMX_VIDEO_AVCLOOPFILTERTYPE loop_filter);
50061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_intra_refresh (OMX_VIDEO_INTRAREFRESHTYPE intrarefresh, OMX_U32 nMBs);
50161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_error_resilience(OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE* error_resilience);
50261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_voptiming_cfg(OMX_U32 nTimeIncRes);
50361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        void venc_config_print();
50461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_slice_delivery_mode(OMX_U32 enable);
5058767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_set_extradata(OMX_U32 extra_data, OMX_BOOL enable);
50661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool venc_set_idr_period(OMX_U32 nPFrames, OMX_U32 nIDRPeriod);
5072e277fbebd51de1d4f029f7950ed2a98731177dcArun Menon        bool venc_reconfig_reqbufs();
5088767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_set_vpe_rotation(OMX_S32 rotation_angle);
5098767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_set_deinterlace(OMX_U32 enable);
5108767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_set_ltrmode(OMX_U32 enable, OMX_U32 count);
511e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_enable_initial_qp(QOMX_EXTNINDEX_VIDEO_INITIALQP* initqp);
512f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan        bool venc_set_useltr(OMX_U32 frameIdx);
513f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan        bool venc_set_markltr(OMX_U32 frameIdx);
5148767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_set_inband_video_header(OMX_BOOL enable);
5158767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_set_au_delimiter(OMX_BOOL enable);
5168767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_set_hier_layers(QOMX_VIDEO_HIERARCHICALCODINGTYPE type, OMX_U32 num_layers);
5178767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_set_perf_level(QOMX_VIDEO_PERF_LEVEL ePerfLevel);
5188767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_set_vui_timing_info(OMX_BOOL enable);
5198767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_set_peak_bitrate(OMX_U32 nPeakBitrate);
5208767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool venc_set_searchrange();
521f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan        bool venc_set_vpx_error_resilience(OMX_BOOL enable);
522f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan        bool venc_set_perf_mode(OMX_U32 mode);
523e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_set_mbi_statistics_mode(OMX_U32 mode);
524e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_set_vqzip_sei_type(OMX_BOOL enable);
525e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_set_hybrid_hierp(QOMX_EXTNINDEX_VIDEO_HYBRID_HP_MODE* hhp);
526e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_set_batch_size(OMX_U32 size);
527f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan        bool venc_calibrate_gop();
528e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_set_vqzip_defaults();
529f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan        bool venc_validate_hybridhp_params(OMX_U32 layers, OMX_U32 bFrames, OMX_U32 count, int mode);
530bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch        bool venc_set_hierp_layers(OMX_U32 hierp_layers);
531e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_set_baselayerid(OMX_U32 baseid);
532e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_set_qp(OMX_U32 nQp);
533e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_set_aspectratio(void *nSar);
534e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_set_priority(OMX_U32 priority);
535eb0227e4c228b54e9b56d3753054a8b3cc8f49aePraveen Chavan        bool venc_set_session_priority(OMX_U32 priority);
536dce0acfcb3cdf6eceef84f22def392cc6d4557abPraveen Chavan        bool venc_set_operatingrate(OMX_U32 rate);
537bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch        bool venc_set_layer_bitrates(OMX_U32 *pLayerBitrates, OMX_U32 numLayers);
538e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_set_roi_qp_info(OMX_QTI_VIDEO_CONFIG_ROIINFO *roiInfo);
5398a54976f56d2a2d7770f78e7bff7bdbbdf47744aLajos Molnar        OMX_ERRORTYPE venc_set_temporal_layers(OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE *pTemporalParams);
540bb6e2c659c093ccb6266b679b07513cbeeb9fb24Steve Pfetsch        OMX_ERRORTYPE venc_set_temporal_layers_internal();
541da491142bd05b7bbb5704579b04f1b968b47a9b6Praveen Chavan        bool venc_set_colorspace(OMX_U32 primaries, OMX_U32 range, OMX_U32 transfer_chars, OMX_U32 matrix_coeffs);
542da491142bd05b7bbb5704579b04f1b968b47a9b6Praveen Chavan
543826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#ifdef MAX_RES_1080P
54461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        OMX_U32 pmem_free();
54561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        OMX_U32 pmem_allocate(OMX_U32 size, OMX_U32 alignment, OMX_U32 count);
54661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        OMX_U32 venc_allocate_recon_buffers();
54761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        inline int clip2(int x) {
54861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            x = x -1;
54961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            x = x | x >> 1;
55061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            x = x | x >> 2;
55161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            x = x | x >> 4;
55261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            x = x | x >> 16;
55361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            x = x + 1;
55461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan            return x;
55561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        }
556826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif
55761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        int metadatamode;
55861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool streaming[MAX_PORT];
55961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool extradata;
56061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan
56161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        pthread_mutex_t pause_resume_mlock;
56261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        pthread_cond_t pause_resume_cond;
56361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        bool paused;
56461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan        int color_format;
5658767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool is_searchrange_set;
5668767726b6d6b2194cbb3704d7d82f0c7ef34eeb3Praveen Chavan        bool enable_mv_narrow_searchrange;
567f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan        int supported_rc_modes;
568e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool is_thulium_v1;
569f3ca23b5bd0c3d78d321ccf5c5af5eb0d461ff1aPraveen Chavan        bool camera_mode_enabled;
570e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin
571e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        bool venc_empty_batch (OMX_BUFFERHEADERTYPE *buf, unsigned index);
572e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        static const int kMaxBuffersInBatch = 16;
573e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        unsigned int mBatchSize;
574e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        struct BatchInfo {
575e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            BatchInfo();
576e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            /* register a buffer and obtain its unique id (v4l2-buf-id)
577e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin             */
578e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            int registerBuffer(int bufferId);
579e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            /* retrieve the buffer given its v4l2-buf-id
580e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin             */
581e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            int retrieveBufferAt(int v4l2Id);
582e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            bool isPending(int bufferId);
583e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin
584e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin          private:
585e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            static const int kMaxBufs = 64;
586e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            static const int kBufIDFree = -1;
587e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            pthread_mutex_t mLock;
588e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            int mBufMap[64];  // Map with slots for each buffer
589e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            size_t mNumPending;
590e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin
591e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin          public:
592e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            // utility methods to parse entities in batch
593e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            // payload format for batch of 3
594e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            //| fd0 | fd1 | fd2 | off0 | off1 | off2 | len0 | len1 | len2 | csc0 | csc1 | csc2 | dTS0 | dTS1 | dTS2|
595e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            static inline int getFdAt(native_handle_t *, int index);
596e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            static inline int getOffsetAt(native_handle_t *, int index);
597e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            static inline int getSizeAt(native_handle_t *, int index);
598e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            static inline int getColorFormatAt(native_handle_t *, int index);
599e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin            static inline int getTimeStampAt(native_handle_t *, int index);
600e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        };
601e4010605f233a213cf0d972397bb33c34c364227Patrick Tjin        BatchInfo mBatchInfo;
60270929c9d4f5f9a789c39d272581c72d3fa6aefe5Praveen Chavan        bool mUseAVTimerTimestamps;
603826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
604826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev
605826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchevenum instance_state {
60661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_CORE_UNINIT_DONE = 0x0001,
60761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_CORE_INIT,
60861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_CORE_INIT_DONE,
60961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_OPEN,
61061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_OPEN_DONE,
61161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_LOAD_RESOURCES,
61261a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_LOAD_RESOURCES_DONE,
61361a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_START,
61461a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_START_DONE,
61561a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_STOP,
61661a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_STOP_DONE,
61761a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_RELEASE_RESOURCES,
61861a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_RELEASE_RESOURCES_DONE,
61961a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_CLOSE,
62061a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_CLOSE_DONE,
62161a2c6a19dbd06a317a419623020e02056661876Praveen Chavan    MSM_VIDC_CORE_UNINIT,
622826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev};
623826ececcbea342f7a0b92ec61847f1c95d384e05Iliyan Malchev#endif
6246eec4d1ea65df853450a6e158718981cba900bf6Shashank Mittal
625