xref: /aosp_15_r20/external/libavc/decoder/iv.h (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
1*495ae853SAndroid Build Coastguard Worker /******************************************************************************
2*495ae853SAndroid Build Coastguard Worker  *
3*495ae853SAndroid Build Coastguard Worker  * Copyright (C) 2015 The Android Open Source Project
4*495ae853SAndroid Build Coastguard Worker  *
5*495ae853SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
6*495ae853SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
7*495ae853SAndroid Build Coastguard Worker  * You may obtain a copy of the License at:
8*495ae853SAndroid Build Coastguard Worker  *
9*495ae853SAndroid Build Coastguard Worker  * http://www.apache.org/licenses/LICENSE-2.0
10*495ae853SAndroid Build Coastguard Worker  *
11*495ae853SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
12*495ae853SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
13*495ae853SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*495ae853SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
15*495ae853SAndroid Build Coastguard Worker  * limitations under the License.
16*495ae853SAndroid Build Coastguard Worker  *
17*495ae853SAndroid Build Coastguard Worker  *****************************************************************************
18*495ae853SAndroid Build Coastguard Worker  * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*495ae853SAndroid Build Coastguard Worker */
20*495ae853SAndroid Build Coastguard Worker /**
21*495ae853SAndroid Build Coastguard Worker *******************************************************************************
22*495ae853SAndroid Build Coastguard Worker * @file
23*495ae853SAndroid Build Coastguard Worker *  iv.h
24*495ae853SAndroid Build Coastguard Worker *
25*495ae853SAndroid Build Coastguard Worker * @brief
26*495ae853SAndroid Build Coastguard Worker *  This file contains all the necessary structure and  enumeration
27*495ae853SAndroid Build Coastguard Worker * definitions needed for the Application  Program Interface(API) of the
28*495ae853SAndroid Build Coastguard Worker * Ittiam Video and Image  codecs
29*495ae853SAndroid Build Coastguard Worker *
30*495ae853SAndroid Build Coastguard Worker * @author
31*495ae853SAndroid Build Coastguard Worker *  100239(RCY)
32*495ae853SAndroid Build Coastguard Worker *
33*495ae853SAndroid Build Coastguard Worker * @par List of Functions:
34*495ae853SAndroid Build Coastguard Worker *
35*495ae853SAndroid Build Coastguard Worker * @remarks
36*495ae853SAndroid Build Coastguard Worker *  None
37*495ae853SAndroid Build Coastguard Worker *
38*495ae853SAndroid Build Coastguard Worker *******************************************************************************
39*495ae853SAndroid Build Coastguard Worker */
40*495ae853SAndroid Build Coastguard Worker 
41*495ae853SAndroid Build Coastguard Worker 
42*495ae853SAndroid Build Coastguard Worker #ifndef _IV_H
43*495ae853SAndroid Build Coastguard Worker #define _IV_H
44*495ae853SAndroid Build Coastguard Worker 
45*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
46*495ae853SAndroid Build Coastguard Worker /* Constant Macros                                                           */
47*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
48*495ae853SAndroid Build Coastguard Worker 
49*495ae853SAndroid Build Coastguard Worker 
50*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
51*495ae853SAndroid Build Coastguard Worker /* Typedefs                                                                  */
52*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
53*495ae853SAndroid Build Coastguard Worker 
54*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
55*495ae853SAndroid Build Coastguard Worker /* Enums                                                                     */
56*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
57*495ae853SAndroid Build Coastguard Worker 
58*495ae853SAndroid Build Coastguard Worker 
59*495ae853SAndroid Build Coastguard Worker /* IV_API_CALL_STATUS_T:This is only to return the FAIL/PASS status to the  */
60*495ae853SAndroid Build Coastguard Worker /* application for the current API call                                     */
61*495ae853SAndroid Build Coastguard Worker 
62*495ae853SAndroid Build Coastguard Worker typedef enum {
63*495ae853SAndroid Build Coastguard Worker     IV_STATUS_NA                                = 0x7FFFFFFF,
64*495ae853SAndroid Build Coastguard Worker     IV_SUCCESS                                  = 0x0,
65*495ae853SAndroid Build Coastguard Worker     IV_FAIL                                     = 0x1,
66*495ae853SAndroid Build Coastguard Worker }IV_API_CALL_STATUS_T;
67*495ae853SAndroid Build Coastguard Worker 
68*495ae853SAndroid Build Coastguard Worker 
69*495ae853SAndroid Build Coastguard Worker /* IV_COLOR_FORMAT_T: This enumeration lists all the color formats which    */
70*495ae853SAndroid Build Coastguard Worker /* finds usage in video/image codecs                                        */
71*495ae853SAndroid Build Coastguard Worker 
72*495ae853SAndroid Build Coastguard Worker typedef enum {
73*495ae853SAndroid Build Coastguard Worker     IV_CHROMA_NA                            = 0x7FFFFFFF,
74*495ae853SAndroid Build Coastguard Worker     IV_YUV_420P                             = 0x1,
75*495ae853SAndroid Build Coastguard Worker     IV_YUV_422P                             = 0x2,
76*495ae853SAndroid Build Coastguard Worker     IV_420_UV_INTL                          = 0x3,
77*495ae853SAndroid Build Coastguard Worker     IV_YUV_422IBE                           = 0x4,
78*495ae853SAndroid Build Coastguard Worker     IV_YUV_422ILE                           = 0x5,
79*495ae853SAndroid Build Coastguard Worker     IV_YUV_444P                             = 0x6,
80*495ae853SAndroid Build Coastguard Worker     IV_YUV_411P                             = 0x7,
81*495ae853SAndroid Build Coastguard Worker     IV_GRAY                                 = 0x8,
82*495ae853SAndroid Build Coastguard Worker     IV_RGB_565                              = 0x9,
83*495ae853SAndroid Build Coastguard Worker     IV_RGB_24                               = 0xa,
84*495ae853SAndroid Build Coastguard Worker     IV_YUV_420SP_UV                         = 0xb,
85*495ae853SAndroid Build Coastguard Worker     IV_YUV_420SP_VU                         = 0xc,
86*495ae853SAndroid Build Coastguard Worker     IV_RGBA_8888                            = 0xd
87*495ae853SAndroid Build Coastguard Worker }IV_COLOR_FORMAT_T;
88*495ae853SAndroid Build Coastguard Worker 
89*495ae853SAndroid Build Coastguard Worker /* IV_PICTURE_CODING_TYPE_T: VOP/Frame coding type Enumeration              */
90*495ae853SAndroid Build Coastguard Worker 
91*495ae853SAndroid Build Coastguard Worker typedef enum {
92*495ae853SAndroid Build Coastguard Worker     IV_NA_FRAME                             = 0x7FFFFFFF,
93*495ae853SAndroid Build Coastguard Worker     IV_I_FRAME                              = 0x0,
94*495ae853SAndroid Build Coastguard Worker     IV_P_FRAME                              = 0x1,
95*495ae853SAndroid Build Coastguard Worker     IV_B_FRAME                              = 0x2,
96*495ae853SAndroid Build Coastguard Worker     IV_IDR_FRAME                            = 0x3,
97*495ae853SAndroid Build Coastguard Worker     IV_II_FRAME                             = 0x4,
98*495ae853SAndroid Build Coastguard Worker     IV_IP_FRAME                             = 0x5,
99*495ae853SAndroid Build Coastguard Worker     IV_IB_FRAME                             = 0x6,
100*495ae853SAndroid Build Coastguard Worker     IV_PI_FRAME                             = 0x7,
101*495ae853SAndroid Build Coastguard Worker     IV_PP_FRAME                             = 0x8,
102*495ae853SAndroid Build Coastguard Worker     IV_PB_FRAME                             = 0x9,
103*495ae853SAndroid Build Coastguard Worker     IV_BI_FRAME                             = 0xa,
104*495ae853SAndroid Build Coastguard Worker     IV_BP_FRAME                             = 0xb,
105*495ae853SAndroid Build Coastguard Worker     IV_BB_FRAME                             = 0xc,
106*495ae853SAndroid Build Coastguard Worker     IV_MBAFF_I_FRAME                        = 0xd,
107*495ae853SAndroid Build Coastguard Worker     IV_MBAFF_P_FRAME                        = 0xe,
108*495ae853SAndroid Build Coastguard Worker     IV_MBAFF_B_FRAME                        = 0xf,
109*495ae853SAndroid Build Coastguard Worker     IV_MBAFF_IDR_FRAME                      = 0x10,
110*495ae853SAndroid Build Coastguard Worker     IV_NOT_CODED_FRAME                      = 0x11,
111*495ae853SAndroid Build Coastguard Worker     IV_FRAMETYPE_DEFAULT                    = IV_I_FRAME
112*495ae853SAndroid Build Coastguard Worker }IV_PICTURE_CODING_TYPE_T;
113*495ae853SAndroid Build Coastguard Worker 
114*495ae853SAndroid Build Coastguard Worker /* IV_FLD_TYPE_T: field type Enumeration                                    */
115*495ae853SAndroid Build Coastguard Worker 
116*495ae853SAndroid Build Coastguard Worker typedef enum {
117*495ae853SAndroid Build Coastguard Worker     IV_NA_FLD                               = 0x7FFFFFFF,
118*495ae853SAndroid Build Coastguard Worker     IV_TOP_FLD                              = 0x0,
119*495ae853SAndroid Build Coastguard Worker     IV_BOT_FLD                              = 0x1,
120*495ae853SAndroid Build Coastguard Worker     IV_FLD_TYPE_DEFAULT                     = IV_TOP_FLD
121*495ae853SAndroid Build Coastguard Worker }IV_FLD_TYPE_T;
122*495ae853SAndroid Build Coastguard Worker 
123*495ae853SAndroid Build Coastguard Worker /* IV_CONTENT_TYPE_T: Video content type                                     */
124*495ae853SAndroid Build Coastguard Worker 
125*495ae853SAndroid Build Coastguard Worker typedef enum {
126*495ae853SAndroid Build Coastguard Worker     IV_CONTENTTYPE_NA                       = 0x7FFFFFFF,
127*495ae853SAndroid Build Coastguard Worker     IV_PROGRESSIVE                          = 0x0,
128*495ae853SAndroid Build Coastguard Worker     IV_INTERLACED                           = 0x1,
129*495ae853SAndroid Build Coastguard Worker     IV_PROGRESSIVE_FRAME                    = 0x2,
130*495ae853SAndroid Build Coastguard Worker     IV_INTERLACED_FRAME                     = 0x3,
131*495ae853SAndroid Build Coastguard Worker     IV_INTERLACED_TOPFIELD                  = 0x4,
132*495ae853SAndroid Build Coastguard Worker     IV_INTERLACED_BOTTOMFIELD               = 0x5,
133*495ae853SAndroid Build Coastguard Worker     IV_CONTENTTYPE_DEFAULT                  = IV_PROGRESSIVE,
134*495ae853SAndroid Build Coastguard Worker }IV_CONTENT_TYPE_T;
135*495ae853SAndroid Build Coastguard Worker 
136*495ae853SAndroid Build Coastguard Worker /* IV_API_COMMAND_TYPE_T:API command type                                   */
137*495ae853SAndroid Build Coastguard Worker typedef enum {
138*495ae853SAndroid Build Coastguard Worker     IV_CMD_NA                           = 0x7FFFFFFF,
139*495ae853SAndroid Build Coastguard Worker     IV_CMD_DUMMY_ELEMENT                = 0x4,
140*495ae853SAndroid Build Coastguard Worker }IV_API_COMMAND_TYPE_T;
141*495ae853SAndroid Build Coastguard Worker 
142*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
143*495ae853SAndroid Build Coastguard Worker /* Structure                                                                 */
144*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
145*495ae853SAndroid Build Coastguard Worker 
146*495ae853SAndroid Build Coastguard Worker /* IV_OBJ_T: This structure defines the handle for the codec instance        */
147*495ae853SAndroid Build Coastguard Worker 
148*495ae853SAndroid Build Coastguard Worker typedef struct {
149*495ae853SAndroid Build Coastguard Worker     /**
150*495ae853SAndroid Build Coastguard Worker      * u4_size of the structure
151*495ae853SAndroid Build Coastguard Worker      */
152*495ae853SAndroid Build Coastguard Worker     UWORD32                                     u4_size;
153*495ae853SAndroid Build Coastguard Worker 
154*495ae853SAndroid Build Coastguard Worker     /**
155*495ae853SAndroid Build Coastguard Worker      * Pointer to the API function pointer table of the codec
156*495ae853SAndroid Build Coastguard Worker      */
157*495ae853SAndroid Build Coastguard Worker     void                                        *pv_fxns;
158*495ae853SAndroid Build Coastguard Worker 
159*495ae853SAndroid Build Coastguard Worker     /**
160*495ae853SAndroid Build Coastguard Worker      * Pointer to the handle of the codec
161*495ae853SAndroid Build Coastguard Worker      */
162*495ae853SAndroid Build Coastguard Worker     void                                        *pv_codec_handle;
163*495ae853SAndroid Build Coastguard Worker }iv_obj_t;
164*495ae853SAndroid Build Coastguard Worker 
165*495ae853SAndroid Build Coastguard Worker 
166*495ae853SAndroid Build Coastguard Worker /* IV_YUV_BUF_T: This structure defines attributes for the yuv buffer        */
167*495ae853SAndroid Build Coastguard Worker 
168*495ae853SAndroid Build Coastguard Worker typedef struct {
169*495ae853SAndroid Build Coastguard Worker     /**
170*495ae853SAndroid Build Coastguard Worker      * u4_size of the structure
171*495ae853SAndroid Build Coastguard Worker      */
172*495ae853SAndroid Build Coastguard Worker     UWORD32                                     u4_size;
173*495ae853SAndroid Build Coastguard Worker 
174*495ae853SAndroid Build Coastguard Worker     /**
175*495ae853SAndroid Build Coastguard Worker      * Pointer to Luma (Y) Buffer
176*495ae853SAndroid Build Coastguard Worker      */
177*495ae853SAndroid Build Coastguard Worker 
178*495ae853SAndroid Build Coastguard Worker     void                                        *pv_y_buf;
179*495ae853SAndroid Build Coastguard Worker     /**
180*495ae853SAndroid Build Coastguard Worker      * Pointer to Chroma (Cb) Buffer
181*495ae853SAndroid Build Coastguard Worker      */
182*495ae853SAndroid Build Coastguard Worker     void                                        *pv_u_buf;
183*495ae853SAndroid Build Coastguard Worker 
184*495ae853SAndroid Build Coastguard Worker     /**
185*495ae853SAndroid Build Coastguard Worker      * Pointer to Chroma (Cr) Buffer
186*495ae853SAndroid Build Coastguard Worker      */
187*495ae853SAndroid Build Coastguard Worker     void                                        *pv_v_buf;
188*495ae853SAndroid Build Coastguard Worker 
189*495ae853SAndroid Build Coastguard Worker     /**
190*495ae853SAndroid Build Coastguard Worker      * Width of the Luma (Y) Buffer
191*495ae853SAndroid Build Coastguard Worker      */
192*495ae853SAndroid Build Coastguard Worker     UWORD32                                     u4_y_wd;
193*495ae853SAndroid Build Coastguard Worker 
194*495ae853SAndroid Build Coastguard Worker     /**
195*495ae853SAndroid Build Coastguard Worker      * Height of the Luma (Y) Buffer
196*495ae853SAndroid Build Coastguard Worker      */
197*495ae853SAndroid Build Coastguard Worker     UWORD32                                     u4_y_ht;
198*495ae853SAndroid Build Coastguard Worker 
199*495ae853SAndroid Build Coastguard Worker     /**
200*495ae853SAndroid Build Coastguard Worker      * Stride/Pitch of the Luma (Y) Buffer
201*495ae853SAndroid Build Coastguard Worker      */
202*495ae853SAndroid Build Coastguard Worker     UWORD32                                     u4_y_strd;
203*495ae853SAndroid Build Coastguard Worker 
204*495ae853SAndroid Build Coastguard Worker     /**
205*495ae853SAndroid Build Coastguard Worker      * Width of the Chroma (Cb) Buffer
206*495ae853SAndroid Build Coastguard Worker      */
207*495ae853SAndroid Build Coastguard Worker     UWORD32                                     u4_u_wd;
208*495ae853SAndroid Build Coastguard Worker 
209*495ae853SAndroid Build Coastguard Worker     /**
210*495ae853SAndroid Build Coastguard Worker      * Height of the Chroma (Cb) Buffer
211*495ae853SAndroid Build Coastguard Worker      */
212*495ae853SAndroid Build Coastguard Worker     UWORD32                                     u4_u_ht;
213*495ae853SAndroid Build Coastguard Worker 
214*495ae853SAndroid Build Coastguard Worker     /**
215*495ae853SAndroid Build Coastguard Worker      * Stride/Pitch of the Chroma (Cb) Buffer
216*495ae853SAndroid Build Coastguard Worker      */
217*495ae853SAndroid Build Coastguard Worker     UWORD32                                     u4_u_strd;
218*495ae853SAndroid Build Coastguard Worker 
219*495ae853SAndroid Build Coastguard Worker     /**
220*495ae853SAndroid Build Coastguard Worker      * Width of the Chroma (Cr) Buffer
221*495ae853SAndroid Build Coastguard Worker      */
222*495ae853SAndroid Build Coastguard Worker     UWORD32                                     u4_v_wd;
223*495ae853SAndroid Build Coastguard Worker 
224*495ae853SAndroid Build Coastguard Worker     /**
225*495ae853SAndroid Build Coastguard Worker      * Height of the Chroma (Cr) Buffer
226*495ae853SAndroid Build Coastguard Worker      */
227*495ae853SAndroid Build Coastguard Worker     UWORD32                                     u4_v_ht;
228*495ae853SAndroid Build Coastguard Worker 
229*495ae853SAndroid Build Coastguard Worker     /**
230*495ae853SAndroid Build Coastguard Worker      * Stride/Pitch of the Chroma (Cr) Buffer
231*495ae853SAndroid Build Coastguard Worker      */
232*495ae853SAndroid Build Coastguard Worker     UWORD32                                     u4_v_strd;
233*495ae853SAndroid Build Coastguard Worker }iv_yuv_buf_t;
234*495ae853SAndroid Build Coastguard Worker 
235*495ae853SAndroid Build Coastguard Worker 
236*495ae853SAndroid Build Coastguard Worker 
237*495ae853SAndroid Build Coastguard Worker #endif /* _IV_H */
238*495ae853SAndroid Build Coastguard Worker 
239