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