xref: /aosp_15_r20/external/libmpeg2/decoder/impeg2d.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 Name         : impeg2d.h                                        */
23*a97c2a1fSXin Li /*                                                                           */
24*a97c2a1fSXin Li /*  Description       : This file contains all the necessary structure and   */
25*a97c2a1fSXin Li /*                      enumeration definitions needed for the Application   */
26*a97c2a1fSXin Li /*                      Program Interface(API) of the Ittiam MPEG2 ASP       */
27*a97c2a1fSXin Li /*                      Decoder on Cortex A8 - Neon platform                 */
28*a97c2a1fSXin Li /*                                                                           */
29*a97c2a1fSXin Li /*  List of Functions : impeg2d_api_function                             */
30*a97c2a1fSXin Li /*                                                                           */
31*a97c2a1fSXin Li /*  Issues / Problems : None                                                 */
32*a97c2a1fSXin Li /*                                                                           */
33*a97c2a1fSXin Li /*  Revision History  :                                                      */
34*a97c2a1fSXin Li /*                                                                           */
35*a97c2a1fSXin Li /*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
36*a97c2a1fSXin Li /*         26 08 2010   100239(RCY)     Draft                                */
37*a97c2a1fSXin Li /*                                                                           */
38*a97c2a1fSXin Li /*****************************************************************************/
39*a97c2a1fSXin Li 
40*a97c2a1fSXin Li #ifndef __IMPEG2D_H__
41*a97c2a1fSXin Li #define __IMPEG2D_H__
42*a97c2a1fSXin Li 
43*a97c2a1fSXin Li #include "iv.h"
44*a97c2a1fSXin Li #include "ivd.h"
45*a97c2a1fSXin Li #ifdef __cplusplus
46*a97c2a1fSXin Li extern "C"
47*a97c2a1fSXin Li {
48*a97c2a1fSXin Li #endif
49*a97c2a1fSXin Li 
50*a97c2a1fSXin Li /*****************************************************************************/
51*a97c2a1fSXin Li /* Constant Macros                                                           */
52*a97c2a1fSXin Li /*****************************************************************************/
53*a97c2a1fSXin Li #define EXPORT_MPEG2DEC_FULLCODEC_MEM_RECORDS   22
54*a97c2a1fSXin Li 
55*a97c2a1fSXin Li /*****************************************************************************/
56*a97c2a1fSXin Li /* Function Macros                                                           */
57*a97c2a1fSXin Li /*****************************************************************************/
58*a97c2a1fSXin Li #define IS_IVD_CONCEALMENT_APPLIED(x)           (x & (1 << IVD_APPLIEDCONCEALMENT))
59*a97c2a1fSXin Li #define IS_IVD_INSUFFICIENTDATA_ERROR(x)        (x & (1 << IVD_INSUFFICIENTDATA))
60*a97c2a1fSXin Li #define IS_IVD_CORRUPTEDDATA_ERROR(x)           (x & (1 << IVD_CORRUPTEDDATA))
61*a97c2a1fSXin Li #define IS_IVD_CORRUPTEDHEADER_ERROR(x)         (x & (1 << IVD_CORRUPTEDHEADER))
62*a97c2a1fSXin Li #define IS_IVD_UNSUPPORTEDINPUT_ERROR(x)        (x & (1 << IVD_UNSUPPORTEDINPUT))
63*a97c2a1fSXin Li #define IS_IVD_UNSUPPORTEDPARAM_ERROR(x)        (x & (1 << IVD_UNSUPPORTEDPARAM))
64*a97c2a1fSXin Li #define IS_IVD_FATAL_ERROR(x)                   (x & (1 << IVD_FATALERROR))
65*a97c2a1fSXin Li #define IS_IVD_INVALID_BITSTREAM_ERROR(x)       (x & (1 << IVD_INVALID_BITSTREAM))
66*a97c2a1fSXin Li #define IS_IVD_INCOMPLETE_BITSTREAM_ERROR(x)    (x & (1 << IVD_INCOMPLETE_BITSTREAM))
67*a97c2a1fSXin Li 
68*a97c2a1fSXin Li #define SET_IVD_CONCEALMENT_APPLIED(x)          ((x) |= (x) | (1 << IVD_APPLIEDCONCEALMENT))
69*a97c2a1fSXin Li #define SET_IVD_INSUFFICIENTDATA_ERROR(x)       ((x) |= (x) | (1 << IVD_INSUFFICIENTDATA))
70*a97c2a1fSXin Li #define SET_IVD_CORRUPTEDDATA_ERROR(x)          ((x) |= (x) | (1 << IVD_CORRUPTEDDATA))
71*a97c2a1fSXin Li #define SET_IVD_CORRUPTEDHEADER_ERROR(x)        ((x) |= (x) | (1 << IVD_CORRUPTEDHEADER))
72*a97c2a1fSXin Li #define SET_IVD_UNSUPPORTEDINPUT_ERROR(x)       ((x) |= (x) | (1 << IVD_UNSUPPORTEDINPUT))
73*a97c2a1fSXin Li #define SET_IVD_UNSUPPORTEDPARAM_ERROR(x)       ((x) |= (x) | (1 << IVD_UNSUPPORTEDPARAM))
74*a97c2a1fSXin Li #define SET_IVD_FATAL_ERROR(x)                  ((x) |= (x) | (1 << IVD_FATALERROR))
75*a97c2a1fSXin Li #define SET_IVD_INVALID_BITSTREAM_ERROR(x)      ((x) |= (x) | (1 << IVD_INVALID_BITSTREAM))
76*a97c2a1fSXin Li #define SET_IVD_INCOMPLETE_BITSTREAM_ERROR(x)   ((x) |= (x) | (1 << IVD_INCOMPLETE_BITSTREAM))
77*a97c2a1fSXin Li 
78*a97c2a1fSXin Li /*****************************************************************************/
79*a97c2a1fSXin Li /* API Function Prototype                                                    */
80*a97c2a1fSXin Li /*****************************************************************************/
81*a97c2a1fSXin Li IV_API_CALL_STATUS_T impeg2d_api_function(iv_obj_t *ps_handle,
82*a97c2a1fSXin Li                                           void *pv_api_ip,
83*a97c2a1fSXin Li                                           void *pv_api_op);
84*a97c2a1fSXin Li 
85*a97c2a1fSXin Li /*****************************************************************************/
86*a97c2a1fSXin Li /* Enums                                                                     */
87*a97c2a1fSXin Li /*****************************************************************************/
88*a97c2a1fSXin Li /* Codec Error codes for MPEG2 ASP Decoder                                   */
89*a97c2a1fSXin Li 
90*a97c2a1fSXin Li typedef enum
91*a97c2a1fSXin Li {
92*a97c2a1fSXin Li 
93*a97c2a1fSXin Li     IMPEG2D_UNKNOWN_ERROR = IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS + 1,
94*a97c2a1fSXin Li     /* API calls without init call */
95*a97c2a1fSXin Li     IMPEG2D_INIT_NOT_DONE,
96*a97c2a1fSXin Li     /* Query number of Memory Records API */
97*a97c2a1fSXin Li     IMPEG2D_QUERY_NUM_MEM_REC_FAIL,
98*a97c2a1fSXin Li 
99*a97c2a1fSXin Li     /* Fill Memory Records API */
100*a97c2a1fSXin Li     IMPEG2D_FILL_NUM_MEM_REC_NOT_SUFFICIENT,
101*a97c2a1fSXin Li 
102*a97c2a1fSXin Li     /* Initialize Decoder API */
103*a97c2a1fSXin Li     IMPEG2D_INIT_DEC_SCR_MEM_INSUFFICIENT,
104*a97c2a1fSXin Li     IMPEG2D_INIT_DEC_PER_MEM_INSUFFICIENT,
105*a97c2a1fSXin Li     IMPEG2D_INIT_NUM_MEM_REC_NOT_SUFFICIENT,
106*a97c2a1fSXin Li     IMPEG2D_INIT_CHROMA_FORMAT_HEIGHT_ERROR,
107*a97c2a1fSXin Li 
108*a97c2a1fSXin Li     /* Decode Sequence Header API */
109*a97c2a1fSXin Li     IMPEG2D_FRM_HDR_START_CODE_NOT_FOUND,
110*a97c2a1fSXin Li     IMPEG2D_FRM_HDR_MARKER_BIT_NOT_FOUND,
111*a97c2a1fSXin Li     IMPEG2D_PROF_LEVEL_NOT_SUPPORTED,
112*a97c2a1fSXin Li     IMPEG2D_FMT_NOT_SUPPORTED,
113*a97c2a1fSXin Li     IMPEG2D_SCALABILITIY_NOT_SUPPORTED,
114*a97c2a1fSXin Li     IMPEG2D_PIC_SIZE_NOT_SUPPORTED,
115*a97c2a1fSXin Li 
116*a97c2a1fSXin Li     /* Search for start code API */
117*a97c2a1fSXin Li     //IMPEG2D_SEARCH_START_CODE_FAIL         ,
118*a97c2a1fSXin Li     /* Decode Video Frame API    */
119*a97c2a1fSXin Li     IMPEG2D_START_CODE_NOT_FOUND,
120*a97c2a1fSXin Li     IMPEG2D_MARKER_BIT_NOT_FOUND,
121*a97c2a1fSXin Li     IMPEG2D_INVALID_STUFFING,
122*a97c2a1fSXin Li     IMPEG2D_PROFILE_LEVEL_NOT_SUP,
123*a97c2a1fSXin Li     IMPEG2D_CHROMA_FMT_NOT_SUP,
124*a97c2a1fSXin Li     IMPEG2D_SCALABLITY_NOT_SUP,
125*a97c2a1fSXin Li     IMPEG2D_FRM_HDR_DECODE_ERR,
126*a97c2a1fSXin Li     IMPEG2D_MB_HDR_DECODE_ERR,
127*a97c2a1fSXin Li     IMPEG2D_MB_TEX_DECODE_ERR,
128*a97c2a1fSXin Li     IMPEG2D_INCORRECT_QUANT_MATRIX,
129*a97c2a1fSXin Li     IMPEG2D_INVALID_SKIP_MB,
130*a97c2a1fSXin Li     IMPEG2D_NOT_SUPPORTED_ERR,
131*a97c2a1fSXin Li     IMPEG2D_BITSTREAM_BUFF_EXCEEDED_ERR,
132*a97c2a1fSXin Li     IMPEG2D_INVALID_PIC_TYPE,
133*a97c2a1fSXin Li     IMPEG2D_INVALID_HUFFMAN_CODE,
134*a97c2a1fSXin Li     IMPEG2D_NO_FREE_BUF_ERR,
135*a97c2a1fSXin Li 
136*a97c2a1fSXin Li     /* slice header errors */
137*a97c2a1fSXin Li     IMPEG2D_INVALID_VERT_SIZE,
138*a97c2a1fSXin Li     IMPEG2D_MB_DATA_DECODE_ERR,
139*a97c2a1fSXin Li 
140*a97c2a1fSXin Li     /* Get Display Frame API */
141*a97c2a1fSXin Li     IMPEG2D_GET_DISP_FRM_FAIL,
142*a97c2a1fSXin Li 
143*a97c2a1fSXin Li     /* Sample Version limitation */
144*a97c2a1fSXin Li     IMPEG2D_SAMPLE_VERSION_LIMIT_ERR,
145*a97c2a1fSXin Li     /**
146*a97c2a1fSXin Li      * Width/height greater than max width and max height
147*a97c2a1fSXin Li      */
148*a97c2a1fSXin Li     IMPEG2D_UNSUPPORTED_DIMENSIONS,
149*a97c2a1fSXin Li 
150*a97c2a1fSXin Li     /* Unknown API Command */
151*a97c2a1fSXin Li     IMPEG2D_UNKNOWN_API_COMMAND
152*a97c2a1fSXin Li 
153*a97c2a1fSXin Li } IMPEG2D_ERROR_CODES_T;
154*a97c2a1fSXin Li 
155*a97c2a1fSXin Li /*****************************************************************************/
156*a97c2a1fSXin Li /* Extended Structures                                                       */
157*a97c2a1fSXin Li /*****************************************************************************/
158*a97c2a1fSXin Li typedef enum
159*a97c2a1fSXin Li {
160*a97c2a1fSXin Li     /** Set number of cores/threads to be used */
161*a97c2a1fSXin Li     IMPEG2D_CMD_CTL_SET_NUM_CORES = IVD_CMD_CTL_CODEC_SUBCMD_START,
162*a97c2a1fSXin Li 
163*a97c2a1fSXin Li     /** Set processor details */
164*a97c2a1fSXin Li     IMPEG2D_CMD_CTL_SET_PROCESSOR = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x001,
165*a97c2a1fSXin Li 
166*a97c2a1fSXin Li     /** Get display buffer dimensions */
167*a97c2a1fSXin Li     IMPEG2D_CMD_CTL_GET_BUFFER_DIMENSIONS = IVD_CMD_CTL_CODEC_SUBCMD_START
168*a97c2a1fSXin Li                     + 0x100,
169*a97c2a1fSXin Li 
170*a97c2a1fSXin Li     /** Get Seq header/seq header extension info */
171*a97c2a1fSXin Li     IMPEG2D_CMD_CTL_GET_SEQ_INFO     = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x101,
172*a97c2a1fSXin Li 
173*a97c2a1fSXin Li } IMPEG2D_CMD_CTL_SUB_CMDS;
174*a97c2a1fSXin Li 
175*a97c2a1fSXin Li /*****************************************************************************/
176*a97c2a1fSXin Li /*  Get Number of Memory Records                                             */
177*a97c2a1fSXin Li /*****************************************************************************/
178*a97c2a1fSXin Li 
179*a97c2a1fSXin Li typedef struct
180*a97c2a1fSXin Li {
181*a97c2a1fSXin Li     iv_num_mem_rec_ip_t s_ivd_num_mem_rec_ip_t;
182*a97c2a1fSXin Li } impeg2d_num_mem_rec_ip_t;
183*a97c2a1fSXin Li 
184*a97c2a1fSXin Li typedef struct
185*a97c2a1fSXin Li {
186*a97c2a1fSXin Li     iv_num_mem_rec_op_t s_ivd_num_mem_rec_op_t;
187*a97c2a1fSXin Li } impeg2d_num_mem_rec_op_t;
188*a97c2a1fSXin Li 
189*a97c2a1fSXin Li /*****************************************************************************/
190*a97c2a1fSXin Li /*  Fill Memory Records                                                      */
191*a97c2a1fSXin Li /*****************************************************************************/
192*a97c2a1fSXin Li 
193*a97c2a1fSXin Li typedef struct
194*a97c2a1fSXin Li {
195*a97c2a1fSXin Li     iv_fill_mem_rec_ip_t s_ivd_fill_mem_rec_ip_t;
196*a97c2a1fSXin Li     /* Flag to enable sharing of reference buffers between decoder
197*a97c2a1fSXin Li      and application */
198*a97c2a1fSXin Li 
199*a97c2a1fSXin Li     UWORD32 u4_share_disp_buf;
200*a97c2a1fSXin Li 
201*a97c2a1fSXin Li     /* format in which codec has to give out frame data for display */
202*a97c2a1fSXin Li     IV_COLOR_FORMAT_T e_output_format;
203*a97c2a1fSXin Li 
204*a97c2a1fSXin Li     /**
205*a97c2a1fSXin Li      * Flag to enable/disable deinterlacing
206*a97c2a1fSXin Li      */
207*a97c2a1fSXin Li     UWORD32 u4_deinterlace;
208*a97c2a1fSXin Li 
209*a97c2a1fSXin Li     /**
210*a97c2a1fSXin Li      * enabling threads
211*a97c2a1fSXin Li     */
212*a97c2a1fSXin Li     UWORD32 u4_keep_threads_active;
213*a97c2a1fSXin Li 
214*a97c2a1fSXin Li } impeg2d_fill_mem_rec_ip_t;
215*a97c2a1fSXin Li 
216*a97c2a1fSXin Li typedef struct
217*a97c2a1fSXin Li {
218*a97c2a1fSXin Li     iv_fill_mem_rec_op_t s_ivd_fill_mem_rec_op_t;
219*a97c2a1fSXin Li } impeg2d_fill_mem_rec_op_t;
220*a97c2a1fSXin Li 
221*a97c2a1fSXin Li /*****************************************************************************/
222*a97c2a1fSXin Li /*  Retrieve Memory Records                                                  */
223*a97c2a1fSXin Li /*****************************************************************************/
224*a97c2a1fSXin Li 
225*a97c2a1fSXin Li typedef struct
226*a97c2a1fSXin Li {
227*a97c2a1fSXin Li     iv_retrieve_mem_rec_ip_t s_ivd_retrieve_mem_rec_ip_t;
228*a97c2a1fSXin Li } impeg2d_retrieve_mem_rec_ip_t;
229*a97c2a1fSXin Li 
230*a97c2a1fSXin Li typedef struct
231*a97c2a1fSXin Li {
232*a97c2a1fSXin Li     iv_retrieve_mem_rec_op_t s_ivd_retrieve_mem_rec_op_t;
233*a97c2a1fSXin Li } impeg2d_retrieve_mem_rec_op_t;
234*a97c2a1fSXin Li 
235*a97c2a1fSXin Li /*****************************************************************************/
236*a97c2a1fSXin Li /*   Initialize decoder                                                      */
237*a97c2a1fSXin Li /*****************************************************************************/
238*a97c2a1fSXin Li 
239*a97c2a1fSXin Li typedef struct
240*a97c2a1fSXin Li {
241*a97c2a1fSXin Li     ivd_init_ip_t s_ivd_init_ip_t;
242*a97c2a1fSXin Li     /* Flag to enable sharing of reference buffers between decoder
243*a97c2a1fSXin Li      and application */
244*a97c2a1fSXin Li     UWORD32 u4_share_disp_buf;
245*a97c2a1fSXin Li 
246*a97c2a1fSXin Li     /**
247*a97c2a1fSXin Li      * Flag to enable/disable deinterlacing
248*a97c2a1fSXin Li      */
249*a97c2a1fSXin Li     UWORD32 u4_deinterlace;
250*a97c2a1fSXin Li 
251*a97c2a1fSXin Li     /**
252*a97c2a1fSXin Li      * enable_threads
253*a97c2a1fSXin Li      */
254*a97c2a1fSXin Li     UWORD32 u4_keep_threads_active;
255*a97c2a1fSXin Li 
256*a97c2a1fSXin Li } impeg2d_init_ip_t;
257*a97c2a1fSXin Li 
258*a97c2a1fSXin Li typedef struct
259*a97c2a1fSXin Li {
260*a97c2a1fSXin Li     ivd_init_op_t s_ivd_init_op_t;
261*a97c2a1fSXin Li } impeg2d_init_op_t;
262*a97c2a1fSXin Li 
263*a97c2a1fSXin Li /*****************************************************************************/
264*a97c2a1fSXin Li /*   Video Decode                                                            */
265*a97c2a1fSXin Li /*****************************************************************************/
266*a97c2a1fSXin Li 
267*a97c2a1fSXin Li typedef struct
268*a97c2a1fSXin Li {
269*a97c2a1fSXin Li     ivd_video_decode_ip_t s_ivd_video_decode_ip_t;
270*a97c2a1fSXin Li } impeg2d_video_decode_ip_t;
271*a97c2a1fSXin Li 
272*a97c2a1fSXin Li typedef struct
273*a97c2a1fSXin Li {
274*a97c2a1fSXin Li     ivd_video_decode_op_t s_ivd_video_decode_op_t;
275*a97c2a1fSXin Li } impeg2d_video_decode_op_t;
276*a97c2a1fSXin Li 
277*a97c2a1fSXin Li /*****************************************************************************/
278*a97c2a1fSXin Li /*   Get Display Frame                                                       */
279*a97c2a1fSXin Li /*****************************************************************************/
280*a97c2a1fSXin Li 
281*a97c2a1fSXin Li typedef struct
282*a97c2a1fSXin Li {
283*a97c2a1fSXin Li     ivd_get_display_frame_ip_t s_ivd_get_display_frame_ip_t;
284*a97c2a1fSXin Li } impeg2d_get_display_frame_ip_t;
285*a97c2a1fSXin Li 
286*a97c2a1fSXin Li typedef struct
287*a97c2a1fSXin Li {
288*a97c2a1fSXin Li     ivd_get_display_frame_op_t s_ivd_get_display_frame_op_t;
289*a97c2a1fSXin Li } impeg2d_get_display_frame_op_t;
290*a97c2a1fSXin Li 
291*a97c2a1fSXin Li /*****************************************************************************/
292*a97c2a1fSXin Li /*   Set Display Frame                                                       */
293*a97c2a1fSXin Li /*****************************************************************************/
294*a97c2a1fSXin Li typedef struct
295*a97c2a1fSXin Li {
296*a97c2a1fSXin Li     ivd_set_display_frame_ip_t s_ivd_set_display_frame_ip_t;
297*a97c2a1fSXin Li } impeg2d_set_display_frame_ip_t;
298*a97c2a1fSXin Li 
299*a97c2a1fSXin Li typedef struct
300*a97c2a1fSXin Li {
301*a97c2a1fSXin Li     ivd_set_display_frame_op_t s_ivd_set_display_frame_op_t;
302*a97c2a1fSXin Li } impeg2d_set_display_frame_op_t;
303*a97c2a1fSXin Li 
304*a97c2a1fSXin Li /*****************************************************************************/
305*a97c2a1fSXin Li /*   Release Display Buffers                                                 */
306*a97c2a1fSXin Li /*****************************************************************************/
307*a97c2a1fSXin Li 
308*a97c2a1fSXin Li typedef struct
309*a97c2a1fSXin Li {
310*a97c2a1fSXin Li     ivd_rel_display_frame_ip_t s_ivd_rel_display_frame_ip_t;
311*a97c2a1fSXin Li } impeg2d_rel_display_frame_ip_t;
312*a97c2a1fSXin Li 
313*a97c2a1fSXin Li typedef struct
314*a97c2a1fSXin Li {
315*a97c2a1fSXin Li     ivd_rel_display_frame_op_t s_ivd_rel_display_frame_op_t;
316*a97c2a1fSXin Li } impeg2d_rel_display_frame_op_t;
317*a97c2a1fSXin Li 
318*a97c2a1fSXin Li /*****************************************************************************/
319*a97c2a1fSXin Li /*   Video control  Flush                                                    */
320*a97c2a1fSXin Li /*****************************************************************************/
321*a97c2a1fSXin Li 
322*a97c2a1fSXin Li typedef struct
323*a97c2a1fSXin Li {
324*a97c2a1fSXin Li     ivd_ctl_flush_ip_t s_ivd_ctl_flush_ip_t;
325*a97c2a1fSXin Li } impeg2d_ctl_flush_ip_t;
326*a97c2a1fSXin Li 
327*a97c2a1fSXin Li typedef struct
328*a97c2a1fSXin Li {
329*a97c2a1fSXin Li     ivd_ctl_flush_op_t s_ivd_ctl_flush_op_t;
330*a97c2a1fSXin Li } impeg2d_ctl_flush_op_t;
331*a97c2a1fSXin Li 
332*a97c2a1fSXin Li /*****************************************************************************/
333*a97c2a1fSXin Li /*   Video control reset                                                     */
334*a97c2a1fSXin Li /*****************************************************************************/
335*a97c2a1fSXin Li 
336*a97c2a1fSXin Li typedef struct
337*a97c2a1fSXin Li {
338*a97c2a1fSXin Li     ivd_ctl_reset_ip_t s_ivd_ctl_reset_ip_t;
339*a97c2a1fSXin Li } impeg2d_ctl_reset_ip_t;
340*a97c2a1fSXin Li 
341*a97c2a1fSXin Li typedef struct
342*a97c2a1fSXin Li {
343*a97c2a1fSXin Li     ivd_ctl_reset_op_t s_ivd_ctl_reset_op_t;
344*a97c2a1fSXin Li } impeg2d_ctl_reset_op_t;
345*a97c2a1fSXin Li 
346*a97c2a1fSXin Li /*****************************************************************************/
347*a97c2a1fSXin Li /*   Video control  Set Params                                               */
348*a97c2a1fSXin Li /*****************************************************************************/
349*a97c2a1fSXin Li 
350*a97c2a1fSXin Li typedef struct
351*a97c2a1fSXin Li {
352*a97c2a1fSXin Li     ivd_ctl_set_config_ip_t s_ivd_ctl_set_config_ip_t;
353*a97c2a1fSXin Li } impeg2d_ctl_set_config_ip_t;
354*a97c2a1fSXin Li 
355*a97c2a1fSXin Li typedef struct
356*a97c2a1fSXin Li {
357*a97c2a1fSXin Li     ivd_ctl_set_config_op_t s_ivd_ctl_set_config_op_t;
358*a97c2a1fSXin Li } impeg2d_ctl_set_config_op_t;
359*a97c2a1fSXin Li 
360*a97c2a1fSXin Li /*****************************************************************************/
361*a97c2a1fSXin Li /*   Video control:Get Buf Info                                              */
362*a97c2a1fSXin Li /*****************************************************************************/
363*a97c2a1fSXin Li 
364*a97c2a1fSXin Li typedef struct
365*a97c2a1fSXin Li {
366*a97c2a1fSXin Li     ivd_ctl_getbufinfo_ip_t s_ivd_ctl_getbufinfo_ip_t;
367*a97c2a1fSXin Li } impeg2d_ctl_getbufinfo_ip_t;
368*a97c2a1fSXin Li 
369*a97c2a1fSXin Li typedef struct
370*a97c2a1fSXin Li {
371*a97c2a1fSXin Li     ivd_ctl_getbufinfo_op_t s_ivd_ctl_getbufinfo_op_t;
372*a97c2a1fSXin Li } impeg2d_ctl_getbufinfo_op_t;
373*a97c2a1fSXin Li 
374*a97c2a1fSXin Li /*****************************************************************************/
375*a97c2a1fSXin Li /*   Video control:Getstatus Call                                            */
376*a97c2a1fSXin Li /*****************************************************************************/
377*a97c2a1fSXin Li 
378*a97c2a1fSXin Li typedef struct
379*a97c2a1fSXin Li {
380*a97c2a1fSXin Li     ivd_ctl_getstatus_ip_t s_ivd_ctl_getstatus_ip_t;
381*a97c2a1fSXin Li } impeg2d_ctl_getstatus_ip_t;
382*a97c2a1fSXin Li 
383*a97c2a1fSXin Li typedef struct
384*a97c2a1fSXin Li {
385*a97c2a1fSXin Li     ivd_ctl_getstatus_op_t s_ivd_ctl_getstatus_op_t;
386*a97c2a1fSXin Li } impeg2d_ctl_getstatus_op_t;
387*a97c2a1fSXin Li 
388*a97c2a1fSXin Li /*****************************************************************************/
389*a97c2a1fSXin Li /*   Video control:Get Version Info                                          */
390*a97c2a1fSXin Li /*****************************************************************************/
391*a97c2a1fSXin Li 
392*a97c2a1fSXin Li typedef struct
393*a97c2a1fSXin Li {
394*a97c2a1fSXin Li     ivd_ctl_getversioninfo_ip_t s_ivd_ctl_getversioninfo_ip_t;
395*a97c2a1fSXin Li } impeg2d_ctl_getversioninfo_ip_t;
396*a97c2a1fSXin Li 
397*a97c2a1fSXin Li typedef struct
398*a97c2a1fSXin Li {
399*a97c2a1fSXin Li     ivd_ctl_getversioninfo_op_t s_ivd_ctl_getversioninfo_op_t;
400*a97c2a1fSXin Li } impeg2d_ctl_getversioninfo_op_t;
401*a97c2a1fSXin Li 
402*a97c2a1fSXin Li /*****************************************************************************/
403*a97c2a1fSXin Li /*   Video control:Disable Qpel                                              */
404*a97c2a1fSXin Li /*****************************************************************************/
405*a97c2a1fSXin Li 
406*a97c2a1fSXin Li typedef struct
407*a97c2a1fSXin Li {
408*a97c2a1fSXin Li     UWORD32 u4_size;
409*a97c2a1fSXin Li     IVD_API_COMMAND_TYPE_T e_cmd;
410*a97c2a1fSXin Li     IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
411*a97c2a1fSXin Li     UWORD32 u4_num_cores;
412*a97c2a1fSXin Li } impeg2d_ctl_set_num_cores_ip_t;
413*a97c2a1fSXin Li 
414*a97c2a1fSXin Li typedef struct
415*a97c2a1fSXin Li {
416*a97c2a1fSXin Li     UWORD32 u4_size;
417*a97c2a1fSXin Li     UWORD32 u4_error_code;
418*a97c2a1fSXin Li } impeg2d_ctl_set_num_cores_op_t;
419*a97c2a1fSXin Li 
420*a97c2a1fSXin Li typedef struct
421*a97c2a1fSXin Li {
422*a97c2a1fSXin Li     /**
423*a97c2a1fSXin Li      * size
424*a97c2a1fSXin Li      */
425*a97c2a1fSXin Li     UWORD32 u4_size;
426*a97c2a1fSXin Li     /**
427*a97c2a1fSXin Li      * cmd
428*a97c2a1fSXin Li      */
429*a97c2a1fSXin Li     IVD_API_COMMAND_TYPE_T e_cmd;
430*a97c2a1fSXin Li     /**
431*a97c2a1fSXin Li      * sub cmd
432*a97c2a1fSXin Li      */
433*a97c2a1fSXin Li     IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
434*a97c2a1fSXin Li     /**
435*a97c2a1fSXin Li      * Processor type
436*a97c2a1fSXin Li      */
437*a97c2a1fSXin Li     UWORD32 u4_arch;
438*a97c2a1fSXin Li     /**
439*a97c2a1fSXin Li      * SOC type
440*a97c2a1fSXin Li      */
441*a97c2a1fSXin Li     UWORD32 u4_soc;
442*a97c2a1fSXin Li 
443*a97c2a1fSXin Li     /**
444*a97c2a1fSXin Li      * num_cores
445*a97c2a1fSXin Li      */
446*a97c2a1fSXin Li     UWORD32 u4_num_cores;
447*a97c2a1fSXin Li 
448*a97c2a1fSXin Li } impeg2d_ctl_set_processor_ip_t;
449*a97c2a1fSXin Li 
450*a97c2a1fSXin Li typedef struct
451*a97c2a1fSXin Li {
452*a97c2a1fSXin Li     /**
453*a97c2a1fSXin Li      * size
454*a97c2a1fSXin Li      */
455*a97c2a1fSXin Li     UWORD32 u4_size;
456*a97c2a1fSXin Li     /**
457*a97c2a1fSXin Li      * error_code
458*a97c2a1fSXin Li      */
459*a97c2a1fSXin Li     UWORD32 u4_error_code;
460*a97c2a1fSXin Li } impeg2d_ctl_set_processor_op_t;
461*a97c2a1fSXin Li 
462*a97c2a1fSXin Li typedef struct
463*a97c2a1fSXin Li {
464*a97c2a1fSXin Li 
465*a97c2a1fSXin Li     /**
466*a97c2a1fSXin Li      * size
467*a97c2a1fSXin Li      */
468*a97c2a1fSXin Li     UWORD32 u4_size;
469*a97c2a1fSXin Li 
470*a97c2a1fSXin Li     /**
471*a97c2a1fSXin Li      * cmd
472*a97c2a1fSXin Li      */
473*a97c2a1fSXin Li     IVD_API_COMMAND_TYPE_T e_cmd;
474*a97c2a1fSXin Li 
475*a97c2a1fSXin Li     /**
476*a97c2a1fSXin Li      * sub cmd
477*a97c2a1fSXin Li      */
478*a97c2a1fSXin Li     IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
479*a97c2a1fSXin Li } impeg2d_ctl_get_frame_dimensions_ip_t;
480*a97c2a1fSXin Li 
481*a97c2a1fSXin Li typedef struct
482*a97c2a1fSXin Li {
483*a97c2a1fSXin Li 
484*a97c2a1fSXin Li     /**
485*a97c2a1fSXin Li      * size
486*a97c2a1fSXin Li      */
487*a97c2a1fSXin Li     UWORD32 u4_size;
488*a97c2a1fSXin Li 
489*a97c2a1fSXin Li     /**
490*a97c2a1fSXin Li      * error_code
491*a97c2a1fSXin Li      */
492*a97c2a1fSXin Li     UWORD32 u4_error_code;
493*a97c2a1fSXin Li 
494*a97c2a1fSXin Li     /**
495*a97c2a1fSXin Li      * x_offset[3]
496*a97c2a1fSXin Li      */
497*a97c2a1fSXin Li     UWORD32 u4_x_offset[3];
498*a97c2a1fSXin Li 
499*a97c2a1fSXin Li     /**
500*a97c2a1fSXin Li      * y_offset[3]
501*a97c2a1fSXin Li      */
502*a97c2a1fSXin Li     UWORD32 u4_y_offset[3];
503*a97c2a1fSXin Li 
504*a97c2a1fSXin Li     /**
505*a97c2a1fSXin Li      * disp_wd[3]
506*a97c2a1fSXin Li      */
507*a97c2a1fSXin Li     UWORD32 u4_disp_wd[3];
508*a97c2a1fSXin Li 
509*a97c2a1fSXin Li     /**
510*a97c2a1fSXin Li      * disp_ht[3]
511*a97c2a1fSXin Li      */
512*a97c2a1fSXin Li     UWORD32 u4_disp_ht[3];
513*a97c2a1fSXin Li 
514*a97c2a1fSXin Li     /**
515*a97c2a1fSXin Li      * buffer_wd[3]
516*a97c2a1fSXin Li      */
517*a97c2a1fSXin Li     UWORD32 u4_buffer_wd[3];
518*a97c2a1fSXin Li 
519*a97c2a1fSXin Li     /**
520*a97c2a1fSXin Li      * buffer_ht[3]
521*a97c2a1fSXin Li      */
522*a97c2a1fSXin Li     UWORD32 u4_buffer_ht[3];
523*a97c2a1fSXin Li } impeg2d_ctl_get_frame_dimensions_op_t;
524*a97c2a1fSXin Li 
525*a97c2a1fSXin Li typedef struct
526*a97c2a1fSXin Li {
527*a97c2a1fSXin Li     /**
528*a97c2a1fSXin Li      * size
529*a97c2a1fSXin Li      */
530*a97c2a1fSXin Li     UWORD32 u4_size;
531*a97c2a1fSXin Li 
532*a97c2a1fSXin Li     /**
533*a97c2a1fSXin Li      * cmd
534*a97c2a1fSXin Li      */
535*a97c2a1fSXin Li     IVD_API_COMMAND_TYPE_T e_cmd;
536*a97c2a1fSXin Li 
537*a97c2a1fSXin Li     /**
538*a97c2a1fSXin Li      * sub cmd
539*a97c2a1fSXin Li      */
540*a97c2a1fSXin Li     IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
541*a97c2a1fSXin Li } impeg2d_ctl_get_seq_info_ip_t;
542*a97c2a1fSXin Li 
543*a97c2a1fSXin Li typedef struct
544*a97c2a1fSXin Li {
545*a97c2a1fSXin Li     /**
546*a97c2a1fSXin Li      * size
547*a97c2a1fSXin Li      */
548*a97c2a1fSXin Li     UWORD32 u4_size;
549*a97c2a1fSXin Li 
550*a97c2a1fSXin Li     /**
551*a97c2a1fSXin Li      * error_code
552*a97c2a1fSXin Li      */
553*a97c2a1fSXin Li     UWORD32 u4_error_code;
554*a97c2a1fSXin Li 
555*a97c2a1fSXin Li     /**
556*a97c2a1fSXin Li      * aspect_ratio_information
557*a97c2a1fSXin Li      */
558*a97c2a1fSXin Li     UWORD8 u1_aspect_ratio_information;
559*a97c2a1fSXin Li 
560*a97c2a1fSXin Li     /**
561*a97c2a1fSXin Li      * frame_rate_code
562*a97c2a1fSXin Li      */
563*a97c2a1fSXin Li     UWORD8 u1_frame_rate_code;
564*a97c2a1fSXin Li 
565*a97c2a1fSXin Li     /**
566*a97c2a1fSXin Li      * frame_rate_extension_n
567*a97c2a1fSXin Li      */
568*a97c2a1fSXin Li     UWORD8 u1_frame_rate_extension_n;
569*a97c2a1fSXin Li 
570*a97c2a1fSXin Li     /**
571*a97c2a1fSXin Li      * frame_rate_extension_d
572*a97c2a1fSXin Li      */
573*a97c2a1fSXin Li     UWORD8 u1_frame_rate_extension_d;
574*a97c2a1fSXin Li 
575*a97c2a1fSXin Li     /**
576*a97c2a1fSXin Li      * video_format
577*a97c2a1fSXin Li      */
578*a97c2a1fSXin Li     UWORD8 u1_video_format;
579*a97c2a1fSXin Li 
580*a97c2a1fSXin Li     /**
581*a97c2a1fSXin Li      * colour_primaries
582*a97c2a1fSXin Li      */
583*a97c2a1fSXin Li     UWORD8 u1_colour_primaries;
584*a97c2a1fSXin Li 
585*a97c2a1fSXin Li     /**
586*a97c2a1fSXin Li      * transfer_characteristics
587*a97c2a1fSXin Li      */
588*a97c2a1fSXin Li     UWORD8 u1_transfer_characteristics;
589*a97c2a1fSXin Li 
590*a97c2a1fSXin Li     /**
591*a97c2a1fSXin Li      * matrix_coefficients
592*a97c2a1fSXin Li      */
593*a97c2a1fSXin Li     UWORD8 u1_matrix_coefficients;
594*a97c2a1fSXin Li 
595*a97c2a1fSXin Li     /**
596*a97c2a1fSXin Li      * display_horizontal_size
597*a97c2a1fSXin Li      */
598*a97c2a1fSXin Li     UWORD16 u2_display_horizontal_size;
599*a97c2a1fSXin Li 
600*a97c2a1fSXin Li     /**
601*a97c2a1fSXin Li      * display_vertical_size
602*a97c2a1fSXin Li      */
603*a97c2a1fSXin Li     UWORD16 u2_display_vertical_size;
604*a97c2a1fSXin Li 
605*a97c2a1fSXin Li } impeg2d_ctl_get_seq_info_op_t;
606*a97c2a1fSXin Li #ifdef __cplusplus
607*a97c2a1fSXin Li } /* closing brace for extern "C" */
608*a97c2a1fSXin Li #endif
609*a97c2a1fSXin Li 
610*a97c2a1fSXin Li #endif /* __IMPEG2D_H__ */
611