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