xref: /aosp_15_r20/external/libhevc/common/ivd.h (revision c83a76b084498d55f252f48b2e3786804cdf24b7)
1*c83a76b0SSuyog Pawar /******************************************************************************
2*c83a76b0SSuyog Pawar *
3*c83a76b0SSuyog Pawar * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
4*c83a76b0SSuyog Pawar *
5*c83a76b0SSuyog Pawar * Licensed under the Apache License, Version 2.0 (the "License");
6*c83a76b0SSuyog Pawar * you may not use this file except in compliance with the License.
7*c83a76b0SSuyog Pawar * You may obtain a copy of the License at:
8*c83a76b0SSuyog Pawar *
9*c83a76b0SSuyog Pawar * http://www.apache.org/licenses/LICENSE-2.0
10*c83a76b0SSuyog Pawar *
11*c83a76b0SSuyog Pawar * Unless required by applicable law or agreed to in writing, software
12*c83a76b0SSuyog Pawar * distributed under the License is distributed on an "AS IS" BASIS,
13*c83a76b0SSuyog Pawar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*c83a76b0SSuyog Pawar * See the License for the specific language governing permissions and
15*c83a76b0SSuyog Pawar * limitations under the License.
16*c83a76b0SSuyog Pawar *
17*c83a76b0SSuyog Pawar ******************************************************************************/
18*c83a76b0SSuyog Pawar /**
19*c83a76b0SSuyog Pawar *******************************************************************************
20*c83a76b0SSuyog Pawar * @file
21*c83a76b0SSuyog Pawar *  ivd.h
22*c83a76b0SSuyog Pawar *
23*c83a76b0SSuyog Pawar * @brief
24*c83a76b0SSuyog Pawar *  This file contains all the necessary structure and  enumeration
25*c83a76b0SSuyog Pawar * definitions needed for the Application  Program Interface(API) of the
26*c83a76b0SSuyog Pawar * Ittiam Video Decoders
27*c83a76b0SSuyog Pawar *
28*c83a76b0SSuyog Pawar * @author
29*c83a76b0SSuyog Pawar *  100239(RCY)
30*c83a76b0SSuyog Pawar *
31*c83a76b0SSuyog Pawar * @remarks
32*c83a76b0SSuyog Pawar *  None
33*c83a76b0SSuyog Pawar *
34*c83a76b0SSuyog Pawar *******************************************************************************
35*c83a76b0SSuyog Pawar */
36*c83a76b0SSuyog Pawar 
37*c83a76b0SSuyog Pawar #ifndef _IVD_H
38*c83a76b0SSuyog Pawar #define _IVD_H
39*c83a76b0SSuyog Pawar 
40*c83a76b0SSuyog Pawar /*****************************************************************************/
41*c83a76b0SSuyog Pawar /* Constant Macros                                                           */
42*c83a76b0SSuyog Pawar /*****************************************************************************/
43*c83a76b0SSuyog Pawar #define IVD_VIDDEC_MAX_IO_BUFFERS 64
44*c83a76b0SSuyog Pawar /*****************************************************************************/
45*c83a76b0SSuyog Pawar /* Typedefs                                                                  */
46*c83a76b0SSuyog Pawar /*****************************************************************************/
47*c83a76b0SSuyog Pawar 
48*c83a76b0SSuyog Pawar /*****************************************************************************/
49*c83a76b0SSuyog Pawar /* Enums                                                                     */
50*c83a76b0SSuyog Pawar /*****************************************************************************/
51*c83a76b0SSuyog Pawar 
52*c83a76b0SSuyog Pawar /* IVD_ARCH_T: Architecture Enumeration                               */
53*c83a76b0SSuyog Pawar typedef enum
54*c83a76b0SSuyog Pawar {
55*c83a76b0SSuyog Pawar     ARCH_NA                 =   0x7FFFFFFF,
56*c83a76b0SSuyog Pawar     ARCH_ARM_NONEON         =   0x0,
57*c83a76b0SSuyog Pawar     ARCH_ARM_A9Q,
58*c83a76b0SSuyog Pawar     ARCH_ARM_A9A,
59*c83a76b0SSuyog Pawar     ARCH_ARM_A9,
60*c83a76b0SSuyog Pawar     ARCH_ARM_A7,
61*c83a76b0SSuyog Pawar     ARCH_ARM_A5,
62*c83a76b0SSuyog Pawar     ARCH_ARM_A15,
63*c83a76b0SSuyog Pawar     ARCH_ARM_NEONINTR,
64*c83a76b0SSuyog Pawar     ARCH_ARMV8_GENERIC,
65*c83a76b0SSuyog Pawar     ARCH_X86_GENERIC        =   0x100,
66*c83a76b0SSuyog Pawar     ARCH_X86_SSSE3,
67*c83a76b0SSuyog Pawar     ARCH_X86_SSE42,
68*c83a76b0SSuyog Pawar     ARCH_X86_AVX2,
69*c83a76b0SSuyog Pawar     ARCH_MIPS_GENERIC       =   0x200,
70*c83a76b0SSuyog Pawar     ARCH_MIPS_32,
71*c83a76b0SSuyog Pawar     ARCH_RISCV64_GENERIC    =   0x400,
72*c83a76b0SSuyog Pawar }IVD_ARCH_T;
73*c83a76b0SSuyog Pawar 
74*c83a76b0SSuyog Pawar /* IVD_SOC_T: SOC Enumeration                               */
75*c83a76b0SSuyog Pawar typedef enum
76*c83a76b0SSuyog Pawar {
77*c83a76b0SSuyog Pawar     SOC_NA                  = 0x7FFFFFFF,
78*c83a76b0SSuyog Pawar     SOC_GENERIC             = 0x0,
79*c83a76b0SSuyog Pawar     SOC_HISI_37X            = 0x100,
80*c83a76b0SSuyog Pawar }IVD_SOC_T;
81*c83a76b0SSuyog Pawar 
82*c83a76b0SSuyog Pawar /* IVD_FRAME_SKIP_MODE_T:Skip mode Enumeration                               */
83*c83a76b0SSuyog Pawar 
84*c83a76b0SSuyog Pawar typedef enum {
85*c83a76b0SSuyog Pawar     IVD_SKIP_NONE                               = 0x7FFFFFFF,
86*c83a76b0SSuyog Pawar     IVD_SKIP_P                                  = 0x1,
87*c83a76b0SSuyog Pawar     IVD_SKIP_B                                  = 0x2,
88*c83a76b0SSuyog Pawar     IVD_SKIP_I                                  = 0x3,
89*c83a76b0SSuyog Pawar     IVD_SKIP_IP                                 = 0x4,
90*c83a76b0SSuyog Pawar     IVD_SKIP_IB                                 = 0x5,
91*c83a76b0SSuyog Pawar     IVD_SKIP_PB                                 = 0x6,
92*c83a76b0SSuyog Pawar     IVD_SKIP_IPB                                = 0x7,
93*c83a76b0SSuyog Pawar     IVD_SKIP_IDR                                = 0x8,
94*c83a76b0SSuyog Pawar     IVD_SKIP_DEFAULT                            = IVD_SKIP_NONE,
95*c83a76b0SSuyog Pawar }IVD_FRAME_SKIP_MODE_T;
96*c83a76b0SSuyog Pawar 
97*c83a76b0SSuyog Pawar /* IVD_VIDEO_DECODE_MODE_T: Set decoder to decode either frame worth of data */
98*c83a76b0SSuyog Pawar /* or only header worth of data                                              */
99*c83a76b0SSuyog Pawar 
100*c83a76b0SSuyog Pawar typedef enum {
101*c83a76b0SSuyog Pawar     IVD_DECODE_MODE_NA                          = 0x7FFFFFFF,
102*c83a76b0SSuyog Pawar 
103*c83a76b0SSuyog Pawar     /* This enables the codec to process all decodable units */
104*c83a76b0SSuyog Pawar     IVD_DECODE_FRAME                            = 0x0,
105*c83a76b0SSuyog Pawar 
106*c83a76b0SSuyog Pawar     /* This enables the codec to decode header only */
107*c83a76b0SSuyog Pawar     IVD_DECODE_HEADER                           = 0x1,
108*c83a76b0SSuyog Pawar 
109*c83a76b0SSuyog Pawar 
110*c83a76b0SSuyog Pawar 
111*c83a76b0SSuyog Pawar }IVD_VIDEO_DECODE_MODE_T;
112*c83a76b0SSuyog Pawar 
113*c83a76b0SSuyog Pawar 
114*c83a76b0SSuyog Pawar /* IVD_DISPLAY_FRAME_OUT_MODE_T: Video Display Frame Output Mode             */
115*c83a76b0SSuyog Pawar 
116*c83a76b0SSuyog Pawar typedef enum {
117*c83a76b0SSuyog Pawar 
118*c83a76b0SSuyog Pawar     IVD_DISPLAY_ORDER_NA                        = 0x7FFFFFFF,
119*c83a76b0SSuyog Pawar     /* To set codec to fill output buffers in display order */
120*c83a76b0SSuyog Pawar     IVD_DISPLAY_FRAME_OUT                       = 0x0,
121*c83a76b0SSuyog Pawar 
122*c83a76b0SSuyog Pawar     /* To set codec to fill output buffers in decode order */
123*c83a76b0SSuyog Pawar     IVD_DECODE_FRAME_OUT                        = 0x1,
124*c83a76b0SSuyog Pawar }IVD_DISPLAY_FRAME_OUT_MODE_T;
125*c83a76b0SSuyog Pawar 
126*c83a76b0SSuyog Pawar 
127*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T:API command type                                   */
128*c83a76b0SSuyog Pawar typedef enum {
129*c83a76b0SSuyog Pawar     IVD_CMD_VIDEO_NA                          = 0x7FFFFFFF,
130*c83a76b0SSuyog Pawar     IVD_CMD_CREATE                            = IV_CMD_DUMMY_ELEMENT + 1,
131*c83a76b0SSuyog Pawar     IVD_CMD_DELETE,
132*c83a76b0SSuyog Pawar     IVD_CMD_VIDEO_CTL,
133*c83a76b0SSuyog Pawar     IVD_CMD_VIDEO_DECODE,
134*c83a76b0SSuyog Pawar     IVD_CMD_GET_DISPLAY_FRAME,
135*c83a76b0SSuyog Pawar     IVD_CMD_REL_DISPLAY_FRAME,
136*c83a76b0SSuyog Pawar     IVD_CMD_SET_DISPLAY_FRAME
137*c83a76b0SSuyog Pawar }IVD_API_COMMAND_TYPE_T;
138*c83a76b0SSuyog Pawar 
139*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T: Video Control API command type            */
140*c83a76b0SSuyog Pawar 
141*c83a76b0SSuyog Pawar typedef enum {
142*c83a76b0SSuyog Pawar     IVD_CMD_NA                          = 0x7FFFFFFF,
143*c83a76b0SSuyog Pawar     IVD_CMD_CTL_GETPARAMS               = 0x0,
144*c83a76b0SSuyog Pawar     IVD_CMD_CTL_SETPARAMS               = 0x1,
145*c83a76b0SSuyog Pawar     IVD_CMD_CTL_RESET                   = 0x2,
146*c83a76b0SSuyog Pawar     IVD_CMD_CTL_SETDEFAULT              = 0x3,
147*c83a76b0SSuyog Pawar     IVD_CMD_CTL_FLUSH                   = 0x4,
148*c83a76b0SSuyog Pawar     IVD_CMD_CTL_GETBUFINFO              = 0x5,
149*c83a76b0SSuyog Pawar     IVD_CMD_CTL_GETVERSION              = 0x6,
150*c83a76b0SSuyog Pawar     IVD_CMD_CTL_CODEC_SUBCMD_START         = 0x7
151*c83a76b0SSuyog Pawar }IVD_CONTROL_API_COMMAND_TYPE_T;
152*c83a76b0SSuyog Pawar 
153*c83a76b0SSuyog Pawar 
154*c83a76b0SSuyog Pawar /* IVD_ERROR_BITS_T: A UWORD32 container will be used for reporting the error*/
155*c83a76b0SSuyog Pawar /* code to the application. The first 8 bits starting from LSB have been     */
156*c83a76b0SSuyog Pawar /* reserved for the codec to report internal error details. The rest of the  */
157*c83a76b0SSuyog Pawar /* bits will be generic for all video decoders and each bit has an associated*/
158*c83a76b0SSuyog Pawar /* meaning as mentioned below. The unused bit fields are reserved for future */
159*c83a76b0SSuyog Pawar /* extenstions and will be zero in the current implementation                */
160*c83a76b0SSuyog Pawar 
161*c83a76b0SSuyog Pawar typedef enum {
162*c83a76b0SSuyog Pawar     /* Bit 8  - Applied concealment.                                         */
163*c83a76b0SSuyog Pawar     IVD_APPLIEDCONCEALMENT                      = 0x8,
164*c83a76b0SSuyog Pawar     /* Bit 9 - Insufficient input data.                                     */
165*c83a76b0SSuyog Pawar     IVD_INSUFFICIENTDATA                        = 0x9,
166*c83a76b0SSuyog Pawar     /* Bit 10 - Data problem/corruption.                                     */
167*c83a76b0SSuyog Pawar     IVD_CORRUPTEDDATA                           = 0xa,
168*c83a76b0SSuyog Pawar     /* Bit 11 - Header problem/corruption.                                   */
169*c83a76b0SSuyog Pawar     IVD_CORRUPTEDHEADER                         = 0xb,
170*c83a76b0SSuyog Pawar     /* Bit 12 - Unsupported feature/parameter in input.                      */
171*c83a76b0SSuyog Pawar     IVD_UNSUPPORTEDINPUT                        = 0xc,
172*c83a76b0SSuyog Pawar     /* Bit 13 - Unsupported input parameter orconfiguration.                 */
173*c83a76b0SSuyog Pawar     IVD_UNSUPPORTEDPARAM                        = 0xd,
174*c83a76b0SSuyog Pawar     /* Bit 14 - Fatal error (stop the codec).If there is an                  */
175*c83a76b0SSuyog Pawar     /* error and this bit is not set, the error is a recoverable one.        */
176*c83a76b0SSuyog Pawar     IVD_FATALERROR                              = 0xe,
177*c83a76b0SSuyog Pawar     /* Bit 15 - Invalid bitstream. Applies when Bitstream/YUV frame          */
178*c83a76b0SSuyog Pawar     /* buffer for encode/decode call is made with non-valid or zero u4_size  */
179*c83a76b0SSuyog Pawar     /* data                                                                  */
180*c83a76b0SSuyog Pawar     IVD_INVALID_BITSTREAM                       = 0xf,
181*c83a76b0SSuyog Pawar     /* Bit 16          */
182*c83a76b0SSuyog Pawar     IVD_INCOMPLETE_BITSTREAM                    = 0x10,
183*c83a76b0SSuyog Pawar     IVD_ERROR_BITS_T_DUMMY_ELEMENT              = 0x7FFFFFFF
184*c83a76b0SSuyog Pawar }IVD_ERROR_BITS_T;
185*c83a76b0SSuyog Pawar 
186*c83a76b0SSuyog Pawar 
187*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T: Video Control API command type            */
188*c83a76b0SSuyog Pawar typedef enum {
189*c83a76b0SSuyog Pawar     IVD_ERROR_NONE                              = 0x0,
190*c83a76b0SSuyog Pawar     IVD_NUM_MEM_REC_FAILED                      = 0x1,
191*c83a76b0SSuyog Pawar     IVD_NUM_REC_NOT_SUFFICIENT                  = 0x2,
192*c83a76b0SSuyog Pawar     IVD_FILL_MEM_REC_FAILED                     = 0x3,
193*c83a76b0SSuyog Pawar     IVD_REQUESTED_WIDTH_NOT_SUPPPORTED          = 0x4,
194*c83a76b0SSuyog Pawar     IVD_REQUESTED_HEIGHT_NOT_SUPPPORTED         = 0x5,
195*c83a76b0SSuyog Pawar     IVD_INIT_DEC_FAILED                         = 0x6,
196*c83a76b0SSuyog Pawar     IVD_INIT_DEC_NOT_SUFFICIENT                 = 0x7,
197*c83a76b0SSuyog Pawar     IVD_INIT_DEC_WIDTH_NOT_SUPPPORTED           = 0x8,
198*c83a76b0SSuyog Pawar     IVD_INIT_DEC_HEIGHT_NOT_SUPPPORTED          = 0x9,
199*c83a76b0SSuyog Pawar     IVD_INIT_DEC_MEM_NOT_ALIGNED                = 0xa,
200*c83a76b0SSuyog Pawar     IVD_INIT_DEC_COL_FMT_NOT_SUPPORTED          = 0xb,
201*c83a76b0SSuyog Pawar     IVD_INIT_DEC_MEM_REC_NOT_SUFFICIENT         = 0xc,
202*c83a76b0SSuyog Pawar     IVD_GET_VERSION_DATABUFFER_SZ_INSUFFICIENT  = 0xd,
203*c83a76b0SSuyog Pawar     IVD_BUFFER_SIZE_SET_TO_ZERO                 = 0xe,
204*c83a76b0SSuyog Pawar     IVD_UNEXPECTED_END_OF_STREAM                = 0xf,
205*c83a76b0SSuyog Pawar     IVD_SEQUENCE_HEADER_NOT_DECODED             = 0x10,
206*c83a76b0SSuyog Pawar     IVD_STREAM_WIDTH_HEIGHT_NOT_SUPPORTED       = 0x11,
207*c83a76b0SSuyog Pawar     IVD_MAX_FRAME_LIMIT_REACHED                 = 0x12,
208*c83a76b0SSuyog Pawar     IVD_IP_API_STRUCT_SIZE_INCORRECT            = 0x13,
209*c83a76b0SSuyog Pawar     IVD_OP_API_STRUCT_SIZE_INCORRECT            = 0x14,
210*c83a76b0SSuyog Pawar     IVD_HANDLE_NULL                             = 0x15,
211*c83a76b0SSuyog Pawar     IVD_HANDLE_STRUCT_SIZE_INCORRECT            = 0x16,
212*c83a76b0SSuyog Pawar     IVD_INVALID_HANDLE_NULL                     = 0x17,
213*c83a76b0SSuyog Pawar     IVD_INVALID_API_CMD                         = 0x18,
214*c83a76b0SSuyog Pawar     IVD_UNSUPPORTED_API_CMD                     = 0x19,
215*c83a76b0SSuyog Pawar     IVD_MEM_REC_STRUCT_SIZE_INCORRECT           = 0x1a,
216*c83a76b0SSuyog Pawar     IVD_DISP_FRM_ZERO_OP_BUFS                   = 0x1b,
217*c83a76b0SSuyog Pawar     IVD_DISP_FRM_OP_BUF_NULL                    = 0x1c,
218*c83a76b0SSuyog Pawar     IVD_DISP_FRM_ZERO_OP_BUF_SIZE               = 0x1d,
219*c83a76b0SSuyog Pawar     IVD_DEC_FRM_BS_BUF_NULL                     = 0x1e,
220*c83a76b0SSuyog Pawar     IVD_SET_CONFG_INVALID_DEC_MODE              = 0x1f,
221*c83a76b0SSuyog Pawar     IVD_SET_CONFG_UNSUPPORTED_DISP_WIDTH        = 0x20,
222*c83a76b0SSuyog Pawar     IVD_RESET_FAILED                            = 0x21,
223*c83a76b0SSuyog Pawar     IVD_INIT_DEC_MEM_REC_OVERLAP_ERR            = 0x22,
224*c83a76b0SSuyog Pawar     IVD_INIT_DEC_MEM_REC_BASE_NULL              = 0x23,
225*c83a76b0SSuyog Pawar     IVD_INIT_DEC_MEM_REC_ALIGNMENT_ERR          = 0x24,
226*c83a76b0SSuyog Pawar     IVD_INIT_DEC_MEM_REC_INSUFFICIENT_SIZE      = 0x25,
227*c83a76b0SSuyog Pawar     IVD_INIT_DEC_MEM_REC_INCORRECT_TYPE         = 0x26,
228*c83a76b0SSuyog Pawar     IVD_DEC_NUMBYTES_INV                        = 0x27,
229*c83a76b0SSuyog Pawar     IVD_DEC_REF_BUF_NULL                        = 0x28,
230*c83a76b0SSuyog Pawar     IVD_DEC_FRM_SKIPPED                         = 0x29,
231*c83a76b0SSuyog Pawar     IVD_RES_CHANGED                             = 0x2a,
232*c83a76b0SSuyog Pawar     IVD_MEM_ALLOC_FAILED                        = 0x2b,
233*c83a76b0SSuyog Pawar     IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS      = 0xD0,
234*c83a76b0SSuyog Pawar }IVD_ERROR_CODES_T;
235*c83a76b0SSuyog Pawar 
236*c83a76b0SSuyog Pawar 
237*c83a76b0SSuyog Pawar /*****************************************************************************/
238*c83a76b0SSuyog Pawar /* Structure                                                                 */
239*c83a76b0SSuyog Pawar /*****************************************************************************/
240*c83a76b0SSuyog Pawar /* structure for passing output buffers to codec during get display buffer   */
241*c83a76b0SSuyog Pawar /* call                                                                      */
242*c83a76b0SSuyog Pawar typedef struct {
243*c83a76b0SSuyog Pawar 
244*c83a76b0SSuyog Pawar     /**
245*c83a76b0SSuyog Pawar      * number of output buffers
246*c83a76b0SSuyog Pawar      */
247*c83a76b0SSuyog Pawar     UWORD32             u4_num_bufs;
248*c83a76b0SSuyog Pawar 
249*c83a76b0SSuyog Pawar     /**
250*c83a76b0SSuyog Pawar      *list of pointers to output buffers
251*c83a76b0SSuyog Pawar      */
252*c83a76b0SSuyog Pawar     UWORD8              *pu1_bufs[IVD_VIDDEC_MAX_IO_BUFFERS];
253*c83a76b0SSuyog Pawar 
254*c83a76b0SSuyog Pawar     /**
255*c83a76b0SSuyog Pawar      * sizes of each output buffer
256*c83a76b0SSuyog Pawar      */
257*c83a76b0SSuyog Pawar     UWORD32             u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
258*c83a76b0SSuyog Pawar 
259*c83a76b0SSuyog Pawar }ivd_out_bufdesc_t;
260*c83a76b0SSuyog Pawar 
261*c83a76b0SSuyog Pawar /*****************************************************************************/
262*c83a76b0SSuyog Pawar /*   Create decoder                                                          */
263*c83a76b0SSuyog Pawar /*****************************************************************************/
264*c83a76b0SSuyog Pawar 
265*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_CREATE                            */
266*c83a76b0SSuyog Pawar 
267*c83a76b0SSuyog Pawar 
268*c83a76b0SSuyog Pawar typedef struct {
269*c83a76b0SSuyog Pawar     /**
270*c83a76b0SSuyog Pawar      * u4_size of the structure
271*c83a76b0SSuyog Pawar      */
272*c83a76b0SSuyog Pawar     UWORD32                                 u4_size;
273*c83a76b0SSuyog Pawar 
274*c83a76b0SSuyog Pawar     /**
275*c83a76b0SSuyog Pawar      *  e_cmd
276*c83a76b0SSuyog Pawar      */
277*c83a76b0SSuyog Pawar     IVD_API_COMMAND_TYPE_T                  e_cmd;
278*c83a76b0SSuyog Pawar 
279*c83a76b0SSuyog Pawar     /**
280*c83a76b0SSuyog Pawar      * format in which codec has to give out frame data for display
281*c83a76b0SSuyog Pawar      */
282*c83a76b0SSuyog Pawar     IV_COLOR_FORMAT_T                       e_output_format;
283*c83a76b0SSuyog Pawar 
284*c83a76b0SSuyog Pawar     /**
285*c83a76b0SSuyog Pawar      * Flag to indicate shared display buffer mode
286*c83a76b0SSuyog Pawar      */
287*c83a76b0SSuyog Pawar     UWORD32                                 u4_share_disp_buf;
288*c83a76b0SSuyog Pawar 
289*c83a76b0SSuyog Pawar     /**
290*c83a76b0SSuyog Pawar      * Pointer to a function for aligned allocation.
291*c83a76b0SSuyog Pawar      */
292*c83a76b0SSuyog Pawar     void    *(*pf_aligned_alloc)(void *pv_mem_ctxt, WORD32 alignment, WORD32 size);
293*c83a76b0SSuyog Pawar 
294*c83a76b0SSuyog Pawar     /**
295*c83a76b0SSuyog Pawar      * Pointer to a function for aligned free.
296*c83a76b0SSuyog Pawar      */
297*c83a76b0SSuyog Pawar     void   (*pf_aligned_free)(void *pv_mem_ctxt, void *pv_buf);
298*c83a76b0SSuyog Pawar 
299*c83a76b0SSuyog Pawar     /**
300*c83a76b0SSuyog Pawar      * Pointer to memory context that is needed during alloc/free for custom
301*c83a76b0SSuyog Pawar      * memory managers. This will be passed as first argument to pf_aligned_alloc and
302*c83a76b0SSuyog Pawar      * pf_aligned_free.
303*c83a76b0SSuyog Pawar      * If application is using standard memory functions like
304*c83a76b0SSuyog Pawar      * malloc/aligned_malloc/memalign/free/aligned_free,
305*c83a76b0SSuyog Pawar      * then this is not needed and can be set to NULL
306*c83a76b0SSuyog Pawar      */
307*c83a76b0SSuyog Pawar     void    *pv_mem_ctxt;
308*c83a76b0SSuyog Pawar 
309*c83a76b0SSuyog Pawar }ivd_create_ip_t;
310*c83a76b0SSuyog Pawar 
311*c83a76b0SSuyog Pawar 
312*c83a76b0SSuyog Pawar typedef struct {
313*c83a76b0SSuyog Pawar     /**
314*c83a76b0SSuyog Pawar      * u4_size of the structure
315*c83a76b0SSuyog Pawar      */
316*c83a76b0SSuyog Pawar     UWORD32                                 u4_size;
317*c83a76b0SSuyog Pawar 
318*c83a76b0SSuyog Pawar     /**
319*c83a76b0SSuyog Pawar      * u4_error_code
320*c83a76b0SSuyog Pawar      */
321*c83a76b0SSuyog Pawar     UWORD32                                 u4_error_code;
322*c83a76b0SSuyog Pawar 
323*c83a76b0SSuyog Pawar     /**
324*c83a76b0SSuyog Pawar      * Codec Handle
325*c83a76b0SSuyog Pawar      */
326*c83a76b0SSuyog Pawar     void                                    *pv_handle;
327*c83a76b0SSuyog Pawar 
328*c83a76b0SSuyog Pawar }ivd_create_op_t;
329*c83a76b0SSuyog Pawar 
330*c83a76b0SSuyog Pawar 
331*c83a76b0SSuyog Pawar /*****************************************************************************/
332*c83a76b0SSuyog Pawar /*  Delete decoder                                                           */
333*c83a76b0SSuyog Pawar /*****************************************************************************/
334*c83a76b0SSuyog Pawar 
335*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_DELETE                              */
336*c83a76b0SSuyog Pawar 
337*c83a76b0SSuyog Pawar 
338*c83a76b0SSuyog Pawar 
339*c83a76b0SSuyog Pawar typedef struct {
340*c83a76b0SSuyog Pawar     /**
341*c83a76b0SSuyog Pawar      * u4_size of the structure
342*c83a76b0SSuyog Pawar      */
343*c83a76b0SSuyog Pawar     UWORD32                                     u4_size;
344*c83a76b0SSuyog Pawar 
345*c83a76b0SSuyog Pawar     /**
346*c83a76b0SSuyog Pawar      * cmd
347*c83a76b0SSuyog Pawar      */
348*c83a76b0SSuyog Pawar     IVD_API_COMMAND_TYPE_T                       e_cmd;
349*c83a76b0SSuyog Pawar 
350*c83a76b0SSuyog Pawar }ivd_delete_ip_t;
351*c83a76b0SSuyog Pawar 
352*c83a76b0SSuyog Pawar 
353*c83a76b0SSuyog Pawar typedef struct {
354*c83a76b0SSuyog Pawar     /**
355*c83a76b0SSuyog Pawar      * u4_size of the structure
356*c83a76b0SSuyog Pawar      */
357*c83a76b0SSuyog Pawar     UWORD32                                     u4_size;
358*c83a76b0SSuyog Pawar 
359*c83a76b0SSuyog Pawar     /**
360*c83a76b0SSuyog Pawar      * error_code
361*c83a76b0SSuyog Pawar      */
362*c83a76b0SSuyog Pawar     UWORD32                                     u4_error_code;
363*c83a76b0SSuyog Pawar 
364*c83a76b0SSuyog Pawar }ivd_delete_op_t;
365*c83a76b0SSuyog Pawar 
366*c83a76b0SSuyog Pawar /*****************************************************************************/
367*c83a76b0SSuyog Pawar /*   Video Decode                                                            */
368*c83a76b0SSuyog Pawar /*****************************************************************************/
369*c83a76b0SSuyog Pawar 
370*c83a76b0SSuyog Pawar 
371*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_DECODE                      */
372*c83a76b0SSuyog Pawar 
373*c83a76b0SSuyog Pawar 
374*c83a76b0SSuyog Pawar typedef struct {
375*c83a76b0SSuyog Pawar     /**
376*c83a76b0SSuyog Pawar      * u4_size of the structure
377*c83a76b0SSuyog Pawar      */
378*c83a76b0SSuyog Pawar     UWORD32                                 u4_size;
379*c83a76b0SSuyog Pawar 
380*c83a76b0SSuyog Pawar     /**
381*c83a76b0SSuyog Pawar      * e_cmd
382*c83a76b0SSuyog Pawar      */
383*c83a76b0SSuyog Pawar     IVD_API_COMMAND_TYPE_T                  e_cmd;
384*c83a76b0SSuyog Pawar 
385*c83a76b0SSuyog Pawar     /**
386*c83a76b0SSuyog Pawar      * u4_ts
387*c83a76b0SSuyog Pawar      */
388*c83a76b0SSuyog Pawar     UWORD32                                 u4_ts;
389*c83a76b0SSuyog Pawar 
390*c83a76b0SSuyog Pawar     /**
391*c83a76b0SSuyog Pawar      * u4_num_Bytes
392*c83a76b0SSuyog Pawar      */
393*c83a76b0SSuyog Pawar     UWORD32                                 u4_num_Bytes;
394*c83a76b0SSuyog Pawar 
395*c83a76b0SSuyog Pawar     /**
396*c83a76b0SSuyog Pawar      * pv_stream_buffer
397*c83a76b0SSuyog Pawar      */
398*c83a76b0SSuyog Pawar     void                                    *pv_stream_buffer;
399*c83a76b0SSuyog Pawar 
400*c83a76b0SSuyog Pawar     /**
401*c83a76b0SSuyog Pawar      * output buffer desc
402*c83a76b0SSuyog Pawar      */
403*c83a76b0SSuyog Pawar     ivd_out_bufdesc_t                       s_out_buffer;
404*c83a76b0SSuyog Pawar 
405*c83a76b0SSuyog Pawar }ivd_video_decode_ip_t;
406*c83a76b0SSuyog Pawar 
407*c83a76b0SSuyog Pawar 
408*c83a76b0SSuyog Pawar typedef struct {
409*c83a76b0SSuyog Pawar     /**
410*c83a76b0SSuyog Pawar      * u4_size of the structure
411*c83a76b0SSuyog Pawar      */
412*c83a76b0SSuyog Pawar     UWORD32                                 u4_size;
413*c83a76b0SSuyog Pawar 
414*c83a76b0SSuyog Pawar     /**
415*c83a76b0SSuyog Pawar      * u4_error_code
416*c83a76b0SSuyog Pawar      */
417*c83a76b0SSuyog Pawar     UWORD32                                 u4_error_code;
418*c83a76b0SSuyog Pawar 
419*c83a76b0SSuyog Pawar     /**
420*c83a76b0SSuyog Pawar      * num_bytes_consumed
421*c83a76b0SSuyog Pawar      */
422*c83a76b0SSuyog Pawar     UWORD32                                 u4_num_bytes_consumed;
423*c83a76b0SSuyog Pawar 
424*c83a76b0SSuyog Pawar     /**
425*c83a76b0SSuyog Pawar      * pic_wd
426*c83a76b0SSuyog Pawar      */
427*c83a76b0SSuyog Pawar     UWORD32                                 u4_pic_wd;
428*c83a76b0SSuyog Pawar 
429*c83a76b0SSuyog Pawar     /**
430*c83a76b0SSuyog Pawar      * pic_ht
431*c83a76b0SSuyog Pawar      */
432*c83a76b0SSuyog Pawar     UWORD32                                 u4_pic_ht;
433*c83a76b0SSuyog Pawar 
434*c83a76b0SSuyog Pawar     /**
435*c83a76b0SSuyog Pawar      * pic_type
436*c83a76b0SSuyog Pawar      */
437*c83a76b0SSuyog Pawar     IV_PICTURE_CODING_TYPE_T                e_pic_type;
438*c83a76b0SSuyog Pawar 
439*c83a76b0SSuyog Pawar     /**
440*c83a76b0SSuyog Pawar      * frame_decoded_flag
441*c83a76b0SSuyog Pawar      */
442*c83a76b0SSuyog Pawar     UWORD32                                 u4_frame_decoded_flag;
443*c83a76b0SSuyog Pawar 
444*c83a76b0SSuyog Pawar     /**
445*c83a76b0SSuyog Pawar      * new_seq
446*c83a76b0SSuyog Pawar      */
447*c83a76b0SSuyog Pawar     UWORD32                                 u4_new_seq;
448*c83a76b0SSuyog Pawar 
449*c83a76b0SSuyog Pawar     /**
450*c83a76b0SSuyog Pawar      * output_present
451*c83a76b0SSuyog Pawar      */
452*c83a76b0SSuyog Pawar     UWORD32                                 u4_output_present;
453*c83a76b0SSuyog Pawar 
454*c83a76b0SSuyog Pawar     /**
455*c83a76b0SSuyog Pawar      * progressive_frame_flag
456*c83a76b0SSuyog Pawar      */
457*c83a76b0SSuyog Pawar     UWORD32                                 u4_progressive_frame_flag;
458*c83a76b0SSuyog Pawar 
459*c83a76b0SSuyog Pawar     /**
460*c83a76b0SSuyog Pawar      * is_ref_flag
461*c83a76b0SSuyog Pawar      */
462*c83a76b0SSuyog Pawar     UWORD32                                 u4_is_ref_flag;
463*c83a76b0SSuyog Pawar 
464*c83a76b0SSuyog Pawar     /**
465*c83a76b0SSuyog Pawar      * output_format
466*c83a76b0SSuyog Pawar      */
467*c83a76b0SSuyog Pawar     IV_COLOR_FORMAT_T                       e_output_format;
468*c83a76b0SSuyog Pawar 
469*c83a76b0SSuyog Pawar     /**
470*c83a76b0SSuyog Pawar      * disp_frm_buf
471*c83a76b0SSuyog Pawar      */
472*c83a76b0SSuyog Pawar     iv_yuv_buf_t                            s_disp_frm_buf;
473*c83a76b0SSuyog Pawar 
474*c83a76b0SSuyog Pawar     /**
475*c83a76b0SSuyog Pawar      * fld_type
476*c83a76b0SSuyog Pawar      */
477*c83a76b0SSuyog Pawar     IV_FLD_TYPE_T                           e4_fld_type;
478*c83a76b0SSuyog Pawar 
479*c83a76b0SSuyog Pawar     /**
480*c83a76b0SSuyog Pawar      * ts
481*c83a76b0SSuyog Pawar      */
482*c83a76b0SSuyog Pawar     UWORD32                                 u4_ts;
483*c83a76b0SSuyog Pawar 
484*c83a76b0SSuyog Pawar     /**
485*c83a76b0SSuyog Pawar      * disp_buf_id
486*c83a76b0SSuyog Pawar      */
487*c83a76b0SSuyog Pawar     UWORD32                                 u4_disp_buf_id;
488*c83a76b0SSuyog Pawar 
489*c83a76b0SSuyog Pawar     /**
490*c83a76b0SSuyog Pawar      * reorder_depth
491*c83a76b0SSuyog Pawar      */
492*c83a76b0SSuyog Pawar     WORD32                                  i4_reorder_depth;
493*c83a76b0SSuyog Pawar 
494*c83a76b0SSuyog Pawar     /**
495*c83a76b0SSuyog Pawar      * display index
496*c83a76b0SSuyog Pawar      */
497*c83a76b0SSuyog Pawar     WORD32                                  i4_display_index;
498*c83a76b0SSuyog Pawar 
499*c83a76b0SSuyog Pawar }ivd_video_decode_op_t;
500*c83a76b0SSuyog Pawar 
501*c83a76b0SSuyog Pawar 
502*c83a76b0SSuyog Pawar /*****************************************************************************/
503*c83a76b0SSuyog Pawar /*   Get Display Frame                                                       */
504*c83a76b0SSuyog Pawar /*****************************************************************************/
505*c83a76b0SSuyog Pawar 
506*c83a76b0SSuyog Pawar 
507*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_GET_DISPLAY_FRAME                 */
508*c83a76b0SSuyog Pawar 
509*c83a76b0SSuyog Pawar typedef struct
510*c83a76b0SSuyog Pawar {
511*c83a76b0SSuyog Pawar     /**
512*c83a76b0SSuyog Pawar      * u4_size of the structure
513*c83a76b0SSuyog Pawar      */
514*c83a76b0SSuyog Pawar     UWORD32                                 u4_size;
515*c83a76b0SSuyog Pawar 
516*c83a76b0SSuyog Pawar     /**
517*c83a76b0SSuyog Pawar      * e_cmd
518*c83a76b0SSuyog Pawar      */
519*c83a76b0SSuyog Pawar     IVD_API_COMMAND_TYPE_T                  e_cmd;
520*c83a76b0SSuyog Pawar 
521*c83a76b0SSuyog Pawar     /**
522*c83a76b0SSuyog Pawar      * output buffer desc
523*c83a76b0SSuyog Pawar      */
524*c83a76b0SSuyog Pawar     ivd_out_bufdesc_t                       s_out_buffer;
525*c83a76b0SSuyog Pawar 
526*c83a76b0SSuyog Pawar }ivd_get_display_frame_ip_t;
527*c83a76b0SSuyog Pawar 
528*c83a76b0SSuyog Pawar 
529*c83a76b0SSuyog Pawar typedef struct
530*c83a76b0SSuyog Pawar {
531*c83a76b0SSuyog Pawar     /**
532*c83a76b0SSuyog Pawar      * u4_size of the structure
533*c83a76b0SSuyog Pawar      */
534*c83a76b0SSuyog Pawar     UWORD32                                 u4_size;
535*c83a76b0SSuyog Pawar 
536*c83a76b0SSuyog Pawar     /**
537*c83a76b0SSuyog Pawar      * error_code
538*c83a76b0SSuyog Pawar      */
539*c83a76b0SSuyog Pawar     UWORD32                                 u4_error_code;
540*c83a76b0SSuyog Pawar 
541*c83a76b0SSuyog Pawar     /**
542*c83a76b0SSuyog Pawar      * progressive_frame_flag
543*c83a76b0SSuyog Pawar      */
544*c83a76b0SSuyog Pawar     UWORD32                                 u4_progressive_frame_flag;
545*c83a76b0SSuyog Pawar 
546*c83a76b0SSuyog Pawar     /**
547*c83a76b0SSuyog Pawar      * pic_type
548*c83a76b0SSuyog Pawar      */
549*c83a76b0SSuyog Pawar     IV_PICTURE_CODING_TYPE_T                e_pic_type;
550*c83a76b0SSuyog Pawar 
551*c83a76b0SSuyog Pawar     /**
552*c83a76b0SSuyog Pawar      * is_ref_flag
553*c83a76b0SSuyog Pawar      */
554*c83a76b0SSuyog Pawar     UWORD32                                 u4_is_ref_flag;
555*c83a76b0SSuyog Pawar 
556*c83a76b0SSuyog Pawar     /**
557*c83a76b0SSuyog Pawar      * output_format
558*c83a76b0SSuyog Pawar      */
559*c83a76b0SSuyog Pawar     IV_COLOR_FORMAT_T                       e_output_format;
560*c83a76b0SSuyog Pawar 
561*c83a76b0SSuyog Pawar     /**
562*c83a76b0SSuyog Pawar      * disp_frm_buf
563*c83a76b0SSuyog Pawar      */
564*c83a76b0SSuyog Pawar     iv_yuv_buf_t                            s_disp_frm_buf;
565*c83a76b0SSuyog Pawar 
566*c83a76b0SSuyog Pawar     /**
567*c83a76b0SSuyog Pawar      * fld_type
568*c83a76b0SSuyog Pawar      */
569*c83a76b0SSuyog Pawar     IV_FLD_TYPE_T                           e4_fld_type;
570*c83a76b0SSuyog Pawar 
571*c83a76b0SSuyog Pawar     /**
572*c83a76b0SSuyog Pawar      * ts
573*c83a76b0SSuyog Pawar      */
574*c83a76b0SSuyog Pawar     UWORD32                                 u4_ts;
575*c83a76b0SSuyog Pawar 
576*c83a76b0SSuyog Pawar     /**
577*c83a76b0SSuyog Pawar      * disp_buf_id
578*c83a76b0SSuyog Pawar      */
579*c83a76b0SSuyog Pawar     UWORD32                                 u4_disp_buf_id;
580*c83a76b0SSuyog Pawar }ivd_get_display_frame_op_t;
581*c83a76b0SSuyog Pawar 
582*c83a76b0SSuyog Pawar /*****************************************************************************/
583*c83a76b0SSuyog Pawar /*   Set Display Frame                                                       */
584*c83a76b0SSuyog Pawar /*****************************************************************************/
585*c83a76b0SSuyog Pawar 
586*c83a76b0SSuyog Pawar 
587*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_SET_DISPLAY_FRAME                 */
588*c83a76b0SSuyog Pawar 
589*c83a76b0SSuyog Pawar typedef struct
590*c83a76b0SSuyog Pawar {
591*c83a76b0SSuyog Pawar     /**
592*c83a76b0SSuyog Pawar      * u4_size of the structure
593*c83a76b0SSuyog Pawar      */
594*c83a76b0SSuyog Pawar     UWORD32                                 u4_size;
595*c83a76b0SSuyog Pawar 
596*c83a76b0SSuyog Pawar     /**
597*c83a76b0SSuyog Pawar      * cmd
598*c83a76b0SSuyog Pawar      */
599*c83a76b0SSuyog Pawar     IVD_API_COMMAND_TYPE_T                  e_cmd;
600*c83a76b0SSuyog Pawar 
601*c83a76b0SSuyog Pawar     /**
602*c83a76b0SSuyog Pawar      * num_disp_bufs
603*c83a76b0SSuyog Pawar      */
604*c83a76b0SSuyog Pawar     UWORD32                                 num_disp_bufs;
605*c83a76b0SSuyog Pawar 
606*c83a76b0SSuyog Pawar     /**
607*c83a76b0SSuyog Pawar      * output buffer desc
608*c83a76b0SSuyog Pawar      */
609*c83a76b0SSuyog Pawar     ivd_out_bufdesc_t                       s_disp_buffer[IVD_VIDDEC_MAX_IO_BUFFERS];
610*c83a76b0SSuyog Pawar 
611*c83a76b0SSuyog Pawar }ivd_set_display_frame_ip_t;
612*c83a76b0SSuyog Pawar 
613*c83a76b0SSuyog Pawar 
614*c83a76b0SSuyog Pawar typedef struct
615*c83a76b0SSuyog Pawar {
616*c83a76b0SSuyog Pawar     /**
617*c83a76b0SSuyog Pawar      * u4_size of the structure
618*c83a76b0SSuyog Pawar      */
619*c83a76b0SSuyog Pawar     UWORD32                                 u4_size;
620*c83a76b0SSuyog Pawar 
621*c83a76b0SSuyog Pawar     /**
622*c83a76b0SSuyog Pawar      * error code
623*c83a76b0SSuyog Pawar      */
624*c83a76b0SSuyog Pawar     UWORD32                                 u4_error_code;
625*c83a76b0SSuyog Pawar }ivd_set_display_frame_op_t;
626*c83a76b0SSuyog Pawar 
627*c83a76b0SSuyog Pawar 
628*c83a76b0SSuyog Pawar /*****************************************************************************/
629*c83a76b0SSuyog Pawar /*   Release Display Frame                                                       */
630*c83a76b0SSuyog Pawar /*****************************************************************************/
631*c83a76b0SSuyog Pawar 
632*c83a76b0SSuyog Pawar 
633*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_SET_DISPLAY_FRAME                 */
634*c83a76b0SSuyog Pawar 
635*c83a76b0SSuyog Pawar typedef struct
636*c83a76b0SSuyog Pawar {
637*c83a76b0SSuyog Pawar     /**
638*c83a76b0SSuyog Pawar      * u4_size of the structure
639*c83a76b0SSuyog Pawar      */
640*c83a76b0SSuyog Pawar     UWORD32                                 u4_size;
641*c83a76b0SSuyog Pawar 
642*c83a76b0SSuyog Pawar     /**
643*c83a76b0SSuyog Pawar      * e_cmd
644*c83a76b0SSuyog Pawar      */
645*c83a76b0SSuyog Pawar     IVD_API_COMMAND_TYPE_T                  e_cmd;
646*c83a76b0SSuyog Pawar 
647*c83a76b0SSuyog Pawar     /**
648*c83a76b0SSuyog Pawar      * disp_buf_id
649*c83a76b0SSuyog Pawar      */
650*c83a76b0SSuyog Pawar     UWORD32                                 u4_disp_buf_id;
651*c83a76b0SSuyog Pawar }ivd_rel_display_frame_ip_t;
652*c83a76b0SSuyog Pawar 
653*c83a76b0SSuyog Pawar 
654*c83a76b0SSuyog Pawar typedef struct
655*c83a76b0SSuyog Pawar {
656*c83a76b0SSuyog Pawar     /**
657*c83a76b0SSuyog Pawar      * u4_size of the structure
658*c83a76b0SSuyog Pawar      */
659*c83a76b0SSuyog Pawar     UWORD32                                 u4_size;
660*c83a76b0SSuyog Pawar 
661*c83a76b0SSuyog Pawar     /**
662*c83a76b0SSuyog Pawar      * error code
663*c83a76b0SSuyog Pawar      */
664*c83a76b0SSuyog Pawar     UWORD32                                 u4_error_code;
665*c83a76b0SSuyog Pawar }ivd_rel_display_frame_op_t;
666*c83a76b0SSuyog Pawar 
667*c83a76b0SSuyog Pawar /*****************************************************************************/
668*c83a76b0SSuyog Pawar /*   Video control  Flush                                                    */
669*c83a76b0SSuyog Pawar /*****************************************************************************/
670*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd            = IVD_CMD_VIDEO_CTL              */
671*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd    = IVD_CMD_ctl_FLUSH          */
672*c83a76b0SSuyog Pawar 
673*c83a76b0SSuyog Pawar 
674*c83a76b0SSuyog Pawar 
675*c83a76b0SSuyog Pawar typedef struct {
676*c83a76b0SSuyog Pawar     /**
677*c83a76b0SSuyog Pawar      * u4_size of the structure
678*c83a76b0SSuyog Pawar      */
679*c83a76b0SSuyog Pawar     UWORD32                                 u4_size;
680*c83a76b0SSuyog Pawar 
681*c83a76b0SSuyog Pawar     /**
682*c83a76b0SSuyog Pawar      * cmd
683*c83a76b0SSuyog Pawar      */
684*c83a76b0SSuyog Pawar     IVD_API_COMMAND_TYPE_T                  e_cmd;
685*c83a76b0SSuyog Pawar 
686*c83a76b0SSuyog Pawar     /**
687*c83a76b0SSuyog Pawar      * sub_cmd
688*c83a76b0SSuyog Pawar      */
689*c83a76b0SSuyog Pawar     IVD_CONTROL_API_COMMAND_TYPE_T          e_sub_cmd;
690*c83a76b0SSuyog Pawar }ivd_ctl_flush_ip_t;
691*c83a76b0SSuyog Pawar 
692*c83a76b0SSuyog Pawar 
693*c83a76b0SSuyog Pawar typedef struct {
694*c83a76b0SSuyog Pawar     /**
695*c83a76b0SSuyog Pawar      * u4_size of the structure
696*c83a76b0SSuyog Pawar      */
697*c83a76b0SSuyog Pawar     UWORD32                                 u4_size;
698*c83a76b0SSuyog Pawar 
699*c83a76b0SSuyog Pawar     /**
700*c83a76b0SSuyog Pawar      * error code
701*c83a76b0SSuyog Pawar      */
702*c83a76b0SSuyog Pawar     UWORD32                                 u4_error_code;
703*c83a76b0SSuyog Pawar }ivd_ctl_flush_op_t;
704*c83a76b0SSuyog Pawar 
705*c83a76b0SSuyog Pawar /*****************************************************************************/
706*c83a76b0SSuyog Pawar /*   Video control reset                                                     */
707*c83a76b0SSuyog Pawar /*****************************************************************************/
708*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd            = IVD_CMD_VIDEO_CTL              */
709*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd    = IVD_CMD_ctl_RESET          */
710*c83a76b0SSuyog Pawar 
711*c83a76b0SSuyog Pawar 
712*c83a76b0SSuyog Pawar typedef struct {
713*c83a76b0SSuyog Pawar     /**
714*c83a76b0SSuyog Pawar      * u4_size of the structure
715*c83a76b0SSuyog Pawar      */
716*c83a76b0SSuyog Pawar     UWORD32                                 u4_size;
717*c83a76b0SSuyog Pawar 
718*c83a76b0SSuyog Pawar     /**
719*c83a76b0SSuyog Pawar      * cmd
720*c83a76b0SSuyog Pawar      */
721*c83a76b0SSuyog Pawar     IVD_API_COMMAND_TYPE_T                  e_cmd;
722*c83a76b0SSuyog Pawar 
723*c83a76b0SSuyog Pawar     /**
724*c83a76b0SSuyog Pawar      * sub_cmd
725*c83a76b0SSuyog Pawar      */
726*c83a76b0SSuyog Pawar 
727*c83a76b0SSuyog Pawar     IVD_CONTROL_API_COMMAND_TYPE_T          e_sub_cmd;
728*c83a76b0SSuyog Pawar }ivd_ctl_reset_ip_t;
729*c83a76b0SSuyog Pawar 
730*c83a76b0SSuyog Pawar 
731*c83a76b0SSuyog Pawar typedef struct {
732*c83a76b0SSuyog Pawar     /**
733*c83a76b0SSuyog Pawar      * u4_size of the structure
734*c83a76b0SSuyog Pawar      */
735*c83a76b0SSuyog Pawar     UWORD32                                 u4_size;
736*c83a76b0SSuyog Pawar 
737*c83a76b0SSuyog Pawar     /**
738*c83a76b0SSuyog Pawar      * error code
739*c83a76b0SSuyog Pawar      */
740*c83a76b0SSuyog Pawar     UWORD32                                 u4_error_code;
741*c83a76b0SSuyog Pawar }ivd_ctl_reset_op_t;
742*c83a76b0SSuyog Pawar 
743*c83a76b0SSuyog Pawar 
744*c83a76b0SSuyog Pawar /*****************************************************************************/
745*c83a76b0SSuyog Pawar /*   Video control  Set Params                                               */
746*c83a76b0SSuyog Pawar /*****************************************************************************/
747*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd        = IVD_CMD_VIDEO_CTL                  */
748*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_SETPARAMS           */
749*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_SETDEFAULT          */
750*c83a76b0SSuyog Pawar 
751*c83a76b0SSuyog Pawar 
752*c83a76b0SSuyog Pawar 
753*c83a76b0SSuyog Pawar typedef struct {
754*c83a76b0SSuyog Pawar     /**
755*c83a76b0SSuyog Pawar      * u4_size of the structure
756*c83a76b0SSuyog Pawar      */
757*c83a76b0SSuyog Pawar     UWORD32                                     u4_size;
758*c83a76b0SSuyog Pawar 
759*c83a76b0SSuyog Pawar     /**
760*c83a76b0SSuyog Pawar      * cmd
761*c83a76b0SSuyog Pawar      */
762*c83a76b0SSuyog Pawar     IVD_API_COMMAND_TYPE_T                      e_cmd;
763*c83a76b0SSuyog Pawar 
764*c83a76b0SSuyog Pawar     /**
765*c83a76b0SSuyog Pawar      * sub_cmd
766*c83a76b0SSuyog Pawar      */
767*c83a76b0SSuyog Pawar     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
768*c83a76b0SSuyog Pawar 
769*c83a76b0SSuyog Pawar     /**
770*c83a76b0SSuyog Pawar      * vid_dec_mode
771*c83a76b0SSuyog Pawar      */
772*c83a76b0SSuyog Pawar     IVD_VIDEO_DECODE_MODE_T                     e_vid_dec_mode;
773*c83a76b0SSuyog Pawar 
774*c83a76b0SSuyog Pawar     /**
775*c83a76b0SSuyog Pawar      * disp_wd
776*c83a76b0SSuyog Pawar      */
777*c83a76b0SSuyog Pawar     UWORD32                                     u4_disp_wd;
778*c83a76b0SSuyog Pawar 
779*c83a76b0SSuyog Pawar     /**
780*c83a76b0SSuyog Pawar      * frm_skip_mode
781*c83a76b0SSuyog Pawar      */
782*c83a76b0SSuyog Pawar     IVD_FRAME_SKIP_MODE_T                       e_frm_skip_mode;
783*c83a76b0SSuyog Pawar 
784*c83a76b0SSuyog Pawar     /**
785*c83a76b0SSuyog Pawar      * frm_out_mode
786*c83a76b0SSuyog Pawar      */
787*c83a76b0SSuyog Pawar     IVD_DISPLAY_FRAME_OUT_MODE_T                e_frm_out_mode;
788*c83a76b0SSuyog Pawar }ivd_ctl_set_config_ip_t;
789*c83a76b0SSuyog Pawar 
790*c83a76b0SSuyog Pawar 
791*c83a76b0SSuyog Pawar typedef struct {
792*c83a76b0SSuyog Pawar     /**
793*c83a76b0SSuyog Pawar      * u4_size of the structure
794*c83a76b0SSuyog Pawar      */
795*c83a76b0SSuyog Pawar     UWORD32                                     u4_size;
796*c83a76b0SSuyog Pawar 
797*c83a76b0SSuyog Pawar     /**
798*c83a76b0SSuyog Pawar      * u4_error_code
799*c83a76b0SSuyog Pawar      */
800*c83a76b0SSuyog Pawar     UWORD32                                     u4_error_code;
801*c83a76b0SSuyog Pawar }ivd_ctl_set_config_op_t;
802*c83a76b0SSuyog Pawar 
803*c83a76b0SSuyog Pawar /*****************************************************************************/
804*c83a76b0SSuyog Pawar /*   Video control:Get Buf Info                                              */
805*c83a76b0SSuyog Pawar /*****************************************************************************/
806*c83a76b0SSuyog Pawar 
807*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd         = IVD_CMD_VIDEO_CTL                 */
808*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETBUFINFO          */
809*c83a76b0SSuyog Pawar 
810*c83a76b0SSuyog Pawar 
811*c83a76b0SSuyog Pawar typedef struct {
812*c83a76b0SSuyog Pawar     /**
813*c83a76b0SSuyog Pawar      * u4_size of the structure
814*c83a76b0SSuyog Pawar      */
815*c83a76b0SSuyog Pawar     UWORD32                                     u4_size;
816*c83a76b0SSuyog Pawar 
817*c83a76b0SSuyog Pawar     /**
818*c83a76b0SSuyog Pawar      *  e_cmd
819*c83a76b0SSuyog Pawar      */
820*c83a76b0SSuyog Pawar     IVD_API_COMMAND_TYPE_T                      e_cmd;
821*c83a76b0SSuyog Pawar 
822*c83a76b0SSuyog Pawar     /**
823*c83a76b0SSuyog Pawar      * sub_cmd
824*c83a76b0SSuyog Pawar      */
825*c83a76b0SSuyog Pawar     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
826*c83a76b0SSuyog Pawar }ivd_ctl_getbufinfo_ip_t;
827*c83a76b0SSuyog Pawar 
828*c83a76b0SSuyog Pawar 
829*c83a76b0SSuyog Pawar typedef struct {
830*c83a76b0SSuyog Pawar     /**
831*c83a76b0SSuyog Pawar      * u4_size of the structure
832*c83a76b0SSuyog Pawar      */
833*c83a76b0SSuyog Pawar     UWORD32                                     u4_size;
834*c83a76b0SSuyog Pawar 
835*c83a76b0SSuyog Pawar     /**
836*c83a76b0SSuyog Pawar      * error code
837*c83a76b0SSuyog Pawar      */
838*c83a76b0SSuyog Pawar     UWORD32                                     u4_error_code;
839*c83a76b0SSuyog Pawar 
840*c83a76b0SSuyog Pawar     /**
841*c83a76b0SSuyog Pawar      * no of display buffer sets required by codec
842*c83a76b0SSuyog Pawar      */
843*c83a76b0SSuyog Pawar     UWORD32                                     u4_num_disp_bufs;
844*c83a76b0SSuyog Pawar 
845*c83a76b0SSuyog Pawar     /**
846*c83a76b0SSuyog Pawar      * no of input buffers required for codec
847*c83a76b0SSuyog Pawar      */
848*c83a76b0SSuyog Pawar     UWORD32                                     u4_min_num_in_bufs;
849*c83a76b0SSuyog Pawar 
850*c83a76b0SSuyog Pawar     /**
851*c83a76b0SSuyog Pawar      * no of output buffers required for codec
852*c83a76b0SSuyog Pawar      */
853*c83a76b0SSuyog Pawar     UWORD32                                     u4_min_num_out_bufs;
854*c83a76b0SSuyog Pawar 
855*c83a76b0SSuyog Pawar     /**
856*c83a76b0SSuyog Pawar      * sizes of each input buffer required
857*c83a76b0SSuyog Pawar      */
858*c83a76b0SSuyog Pawar     UWORD32                                     u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
859*c83a76b0SSuyog Pawar 
860*c83a76b0SSuyog Pawar     /**
861*c83a76b0SSuyog Pawar      * sizes of each output buffer required
862*c83a76b0SSuyog Pawar      */
863*c83a76b0SSuyog Pawar     UWORD32                                     u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
864*c83a76b0SSuyog Pawar }ivd_ctl_getbufinfo_op_t;
865*c83a76b0SSuyog Pawar 
866*c83a76b0SSuyog Pawar 
867*c83a76b0SSuyog Pawar /*****************************************************************************/
868*c83a76b0SSuyog Pawar /*   Video control:Getstatus Call                                            */
869*c83a76b0SSuyog Pawar /*****************************************************************************/
870*c83a76b0SSuyog Pawar 
871*c83a76b0SSuyog Pawar 
872*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd        = IVD_CMD_VIDEO_CTL                  */
873*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETPARAMS           */
874*c83a76b0SSuyog Pawar 
875*c83a76b0SSuyog Pawar 
876*c83a76b0SSuyog Pawar typedef struct {
877*c83a76b0SSuyog Pawar     /**
878*c83a76b0SSuyog Pawar      * u4_size of the structure
879*c83a76b0SSuyog Pawar      */
880*c83a76b0SSuyog Pawar     UWORD32                                     u4_size;
881*c83a76b0SSuyog Pawar 
882*c83a76b0SSuyog Pawar     /**
883*c83a76b0SSuyog Pawar      * cmd
884*c83a76b0SSuyog Pawar      */
885*c83a76b0SSuyog Pawar     IVD_API_COMMAND_TYPE_T                      e_cmd;
886*c83a76b0SSuyog Pawar 
887*c83a76b0SSuyog Pawar     /**
888*c83a76b0SSuyog Pawar      * sub_cmd
889*c83a76b0SSuyog Pawar      */
890*c83a76b0SSuyog Pawar     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
891*c83a76b0SSuyog Pawar }ivd_ctl_getstatus_ip_t;
892*c83a76b0SSuyog Pawar 
893*c83a76b0SSuyog Pawar 
894*c83a76b0SSuyog Pawar typedef struct {
895*c83a76b0SSuyog Pawar 
896*c83a76b0SSuyog Pawar     /**
897*c83a76b0SSuyog Pawar      * u4_size of the structure
898*c83a76b0SSuyog Pawar      */
899*c83a76b0SSuyog Pawar     UWORD32                  u4_size;
900*c83a76b0SSuyog Pawar 
901*c83a76b0SSuyog Pawar     /**
902*c83a76b0SSuyog Pawar       * error code
903*c83a76b0SSuyog Pawar       */
904*c83a76b0SSuyog Pawar     UWORD32                  u4_error_code;
905*c83a76b0SSuyog Pawar 
906*c83a76b0SSuyog Pawar     /**
907*c83a76b0SSuyog Pawar      * no of display buffer sets required by codec
908*c83a76b0SSuyog Pawar      */
909*c83a76b0SSuyog Pawar     UWORD32                  u4_num_disp_bufs;
910*c83a76b0SSuyog Pawar 
911*c83a76b0SSuyog Pawar     /**
912*c83a76b0SSuyog Pawar      * u4_pic_ht
913*c83a76b0SSuyog Pawar      */
914*c83a76b0SSuyog Pawar     UWORD32                  u4_pic_ht;
915*c83a76b0SSuyog Pawar 
916*c83a76b0SSuyog Pawar     /**
917*c83a76b0SSuyog Pawar      * u4_pic_wd
918*c83a76b0SSuyog Pawar      */
919*c83a76b0SSuyog Pawar     UWORD32                  u4_pic_wd;
920*c83a76b0SSuyog Pawar 
921*c83a76b0SSuyog Pawar     /**
922*c83a76b0SSuyog Pawar      * frame_rate
923*c83a76b0SSuyog Pawar      */
924*c83a76b0SSuyog Pawar     UWORD32                  u4_frame_rate;
925*c83a76b0SSuyog Pawar 
926*c83a76b0SSuyog Pawar     /**
927*c83a76b0SSuyog Pawar      * u4_bit_rate
928*c83a76b0SSuyog Pawar      */
929*c83a76b0SSuyog Pawar     UWORD32                  u4_bit_rate;
930*c83a76b0SSuyog Pawar 
931*c83a76b0SSuyog Pawar     /**
932*c83a76b0SSuyog Pawar      * content_type
933*c83a76b0SSuyog Pawar      */
934*c83a76b0SSuyog Pawar     IV_CONTENT_TYPE_T        e_content_type;
935*c83a76b0SSuyog Pawar 
936*c83a76b0SSuyog Pawar     /**
937*c83a76b0SSuyog Pawar      * output_chroma_format
938*c83a76b0SSuyog Pawar      */
939*c83a76b0SSuyog Pawar     IV_COLOR_FORMAT_T        e_output_chroma_format;
940*c83a76b0SSuyog Pawar 
941*c83a76b0SSuyog Pawar     /**
942*c83a76b0SSuyog Pawar      * no of input buffers required for codec
943*c83a76b0SSuyog Pawar      */
944*c83a76b0SSuyog Pawar     UWORD32                  u4_min_num_in_bufs;
945*c83a76b0SSuyog Pawar 
946*c83a76b0SSuyog Pawar     /**
947*c83a76b0SSuyog Pawar      * no of output buffers required for codec
948*c83a76b0SSuyog Pawar      */
949*c83a76b0SSuyog Pawar     UWORD32                  u4_min_num_out_bufs;
950*c83a76b0SSuyog Pawar 
951*c83a76b0SSuyog Pawar     /**
952*c83a76b0SSuyog Pawar      * sizes of each input buffer required
953*c83a76b0SSuyog Pawar      */
954*c83a76b0SSuyog Pawar     UWORD32                  u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
955*c83a76b0SSuyog Pawar 
956*c83a76b0SSuyog Pawar     /**
957*c83a76b0SSuyog Pawar      * sizes of each output buffer required
958*c83a76b0SSuyog Pawar      */
959*c83a76b0SSuyog Pawar     UWORD32                  u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
960*c83a76b0SSuyog Pawar }ivd_ctl_getstatus_op_t;
961*c83a76b0SSuyog Pawar 
962*c83a76b0SSuyog Pawar 
963*c83a76b0SSuyog Pawar /*****************************************************************************/
964*c83a76b0SSuyog Pawar /*   Video control:Get Version Info                                          */
965*c83a76b0SSuyog Pawar /*****************************************************************************/
966*c83a76b0SSuyog Pawar 
967*c83a76b0SSuyog Pawar /* IVD_API_COMMAND_TYPE_T::e_cmd        = IVD_CMD_VIDEO_CTL                  */
968*c83a76b0SSuyog Pawar /* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETVERSION          */
969*c83a76b0SSuyog Pawar 
970*c83a76b0SSuyog Pawar 
971*c83a76b0SSuyog Pawar typedef struct {
972*c83a76b0SSuyog Pawar     /**
973*c83a76b0SSuyog Pawar      * u4_size of the structure
974*c83a76b0SSuyog Pawar      */
975*c83a76b0SSuyog Pawar     UWORD32                                     u4_size;
976*c83a76b0SSuyog Pawar 
977*c83a76b0SSuyog Pawar     /**
978*c83a76b0SSuyog Pawar      * cmd
979*c83a76b0SSuyog Pawar      */
980*c83a76b0SSuyog Pawar     IVD_API_COMMAND_TYPE_T                      e_cmd;
981*c83a76b0SSuyog Pawar 
982*c83a76b0SSuyog Pawar     /**
983*c83a76b0SSuyog Pawar      * sub_cmd
984*c83a76b0SSuyog Pawar      */
985*c83a76b0SSuyog Pawar     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
986*c83a76b0SSuyog Pawar 
987*c83a76b0SSuyog Pawar     /**
988*c83a76b0SSuyog Pawar      * pv_version_buffer
989*c83a76b0SSuyog Pawar      */
990*c83a76b0SSuyog Pawar     void                                        *pv_version_buffer;
991*c83a76b0SSuyog Pawar 
992*c83a76b0SSuyog Pawar     /**
993*c83a76b0SSuyog Pawar      * version_buffer_size
994*c83a76b0SSuyog Pawar      */
995*c83a76b0SSuyog Pawar     UWORD32                                     u4_version_buffer_size;
996*c83a76b0SSuyog Pawar }ivd_ctl_getversioninfo_ip_t;
997*c83a76b0SSuyog Pawar 
998*c83a76b0SSuyog Pawar 
999*c83a76b0SSuyog Pawar typedef struct {
1000*c83a76b0SSuyog Pawar     /**
1001*c83a76b0SSuyog Pawar      * u4_size of the structure
1002*c83a76b0SSuyog Pawar      */
1003*c83a76b0SSuyog Pawar     UWORD32                                     u4_size;
1004*c83a76b0SSuyog Pawar 
1005*c83a76b0SSuyog Pawar     /**
1006*c83a76b0SSuyog Pawar      * error code
1007*c83a76b0SSuyog Pawar      */
1008*c83a76b0SSuyog Pawar     UWORD32                                     u4_error_code;
1009*c83a76b0SSuyog Pawar }ivd_ctl_getversioninfo_op_t;
1010*c83a76b0SSuyog Pawar 
1011*c83a76b0SSuyog Pawar #endif /* __IVD_H__ */
1012*c83a76b0SSuyog Pawar 
1013