xref: /aosp_15_r20/external/libopenapv/inc/oapv.h (revision abb65b4b03b69e1d508d4d9a44dcf199df16e7c3)
1*abb65b4bSAndroid Build Coastguard Worker /*
2*abb65b4bSAndroid Build Coastguard Worker  * Copyright (c) 2022 Samsung Electronics Co., Ltd.
3*abb65b4bSAndroid Build Coastguard Worker  * All Rights Reserved.
4*abb65b4bSAndroid Build Coastguard Worker  *
5*abb65b4bSAndroid Build Coastguard Worker  * Redistribution and use in source and binary forms, with or without
6*abb65b4bSAndroid Build Coastguard Worker  * modification, are permitted provided that the following conditions are met:
7*abb65b4bSAndroid Build Coastguard Worker  *
8*abb65b4bSAndroid Build Coastguard Worker  * - Redistributions of source code must retain the above copyright notice,
9*abb65b4bSAndroid Build Coastguard Worker  *   this list of conditions and the following disclaimer.
10*abb65b4bSAndroid Build Coastguard Worker  *
11*abb65b4bSAndroid Build Coastguard Worker  * - Redistributions in binary form must reproduce the above copyright notice,
12*abb65b4bSAndroid Build Coastguard Worker  *   this list of conditions and the following disclaimer in the documentation
13*abb65b4bSAndroid Build Coastguard Worker  *   and/or other materials provided with the distribution.
14*abb65b4bSAndroid Build Coastguard Worker  *
15*abb65b4bSAndroid Build Coastguard Worker  * - Neither the name of the copyright owner, nor the names of its contributors
16*abb65b4bSAndroid Build Coastguard Worker  *   may be used to endorse or promote products derived from this software
17*abb65b4bSAndroid Build Coastguard Worker  *   without specific prior written permission.
18*abb65b4bSAndroid Build Coastguard Worker  *
19*abb65b4bSAndroid Build Coastguard Worker  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20*abb65b4bSAndroid Build Coastguard Worker  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21*abb65b4bSAndroid Build Coastguard Worker  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22*abb65b4bSAndroid Build Coastguard Worker  * ARE DISCLAIMED.IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23*abb65b4bSAndroid Build Coastguard Worker  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24*abb65b4bSAndroid Build Coastguard Worker  * CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25*abb65b4bSAndroid Build Coastguard Worker  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26*abb65b4bSAndroid Build Coastguard Worker  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27*abb65b4bSAndroid Build Coastguard Worker  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28*abb65b4bSAndroid Build Coastguard Worker  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29*abb65b4bSAndroid Build Coastguard Worker  * POSSIBILITY OF SUCH DAMAGE.
30*abb65b4bSAndroid Build Coastguard Worker  */
31*abb65b4bSAndroid Build Coastguard Worker 
32*abb65b4bSAndroid Build Coastguard Worker #ifndef __OAPV_H__3342320849320483827648324783920483920432847382948__
33*abb65b4bSAndroid Build Coastguard Worker #define __OAPV_H__3342320849320483827648324783920483920432847382948__
34*abb65b4bSAndroid Build Coastguard Worker 
35*abb65b4bSAndroid Build Coastguard Worker #ifdef __cplusplus
36*abb65b4bSAndroid Build Coastguard Worker extern "C" {
37*abb65b4bSAndroid Build Coastguard Worker #endif
38*abb65b4bSAndroid Build Coastguard Worker 
39*abb65b4bSAndroid Build Coastguard Worker #ifdef OAPV_STATIC_DEFINE
40*abb65b4bSAndroid Build Coastguard Worker #define OAPV_EXPORT
41*abb65b4bSAndroid Build Coastguard Worker #else
42*abb65b4bSAndroid Build Coastguard Worker #include <oapv/oapv_exports.h>
43*abb65b4bSAndroid Build Coastguard Worker #endif
44*abb65b4bSAndroid Build Coastguard Worker 
45*abb65b4bSAndroid Build Coastguard Worker 
46*abb65b4bSAndroid Build Coastguard Worker /* size of macroblock */
47*abb65b4bSAndroid Build Coastguard Worker #define OAPV_LOG2_MB                    (4)
48*abb65b4bSAndroid Build Coastguard Worker #define OAPV_LOG2_MB_W                  (4)
49*abb65b4bSAndroid Build Coastguard Worker #define OAPV_LOG2_MB_H                  (4)
50*abb65b4bSAndroid Build Coastguard Worker #define OAPV_MB_W                       (1 << OAPV_LOG2_MB_W)
51*abb65b4bSAndroid Build Coastguard Worker #define OAPV_MB_H                       (1 << OAPV_LOG2_MB_H)
52*abb65b4bSAndroid Build Coastguard Worker #define OAPV_MB_D                       (OAPV_MB_W * OAPV_MB_H)
53*abb65b4bSAndroid Build Coastguard Worker 
54*abb65b4bSAndroid Build Coastguard Worker /* size of block */
55*abb65b4bSAndroid Build Coastguard Worker #define OAPV_LOG2_BLK                   (3)
56*abb65b4bSAndroid Build Coastguard Worker #define OAPV_LOG2_BLK_W                 (3)
57*abb65b4bSAndroid Build Coastguard Worker #define OAPV_LOG2_BLK_H                 (3)
58*abb65b4bSAndroid Build Coastguard Worker #define OAPV_BLK_W                      (1 << OAPV_LOG2_BLK)
59*abb65b4bSAndroid Build Coastguard Worker #define OAPV_BLK_H                      (1 << OAPV_LOG2_BLK)
60*abb65b4bSAndroid Build Coastguard Worker #define OAPV_BLK_D                      (OAPV_BLK_W * OAPV_BLK_H)
61*abb65b4bSAndroid Build Coastguard Worker 
62*abb65b4bSAndroid Build Coastguard Worker /* maximum number of thread */
63*abb65b4bSAndroid Build Coastguard Worker #define OAPV_MAX_THREADS                (32)
64*abb65b4bSAndroid Build Coastguard Worker 
65*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
66*abb65b4bSAndroid Build Coastguard Worker  * return values and error code
67*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
68*abb65b4bSAndroid Build Coastguard Worker #define OAPV_OK                         (0)
69*abb65b4bSAndroid Build Coastguard Worker #define OAPV_ERR                        (-1) /* generic error */
70*abb65b4bSAndroid Build Coastguard Worker #define OAPV_ERR_INVALID_ARGUMENT       (-101)
71*abb65b4bSAndroid Build Coastguard Worker #define OAPV_ERR_OUT_OF_MEMORY          (-102)
72*abb65b4bSAndroid Build Coastguard Worker #define OAPV_ERR_REACHED_MAX            (-103)
73*abb65b4bSAndroid Build Coastguard Worker #define OAPV_ERR_UNSUPPORTED            (-104)
74*abb65b4bSAndroid Build Coastguard Worker #define OAPV_ERR_UNEXPECTED             (-105)
75*abb65b4bSAndroid Build Coastguard Worker #define OAPV_ERR_UNSUPPORTED_COLORSPACE (-201)
76*abb65b4bSAndroid Build Coastguard Worker #define OAPV_ERR_MALFORMED_BITSTREAM    (-202)
77*abb65b4bSAndroid Build Coastguard Worker #define OAPV_ERR_OUT_OF_BS_BUF          (-203) /* too small bitstream buffer */
78*abb65b4bSAndroid Build Coastguard Worker #define OAPV_ERR_NOT_FOUND              (-204)
79*abb65b4bSAndroid Build Coastguard Worker #define OAPV_ERR_FAILED_SYSCALL         (-301)   /* failed system call */
80*abb65b4bSAndroid Build Coastguard Worker #define OAPV_ERR_UNKNOWN                (-32767) /* unknown error */
81*abb65b4bSAndroid Build Coastguard Worker 
82*abb65b4bSAndroid Build Coastguard Worker /* return value checking */
83*abb65b4bSAndroid Build Coastguard Worker #define OAPV_SUCCEEDED(ret)             ((ret) >= OAPV_OK)
84*abb65b4bSAndroid Build Coastguard Worker #define OAPV_FAILED(ret)                ((ret) < OAPV_OK)
85*abb65b4bSAndroid Build Coastguard Worker 
86*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
87*abb65b4bSAndroid Build Coastguard Worker  * color spaces
88*abb65b4bSAndroid Build Coastguard Worker  * - value format = (endian << 14) | (bit-depth << 8) | (color format)
89*abb65b4bSAndroid Build Coastguard Worker  * - endian (1bit): little endian = 0, big endian = 1
90*abb65b4bSAndroid Build Coastguard Worker  * - bit-depth (6bit): 0~63
91*abb65b4bSAndroid Build Coastguard Worker  * - color format (8bit): 0~255
92*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
93*abb65b4bSAndroid Build Coastguard Worker /* color formats */
94*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CF_UNKNOWN                 (0)  /* unknown color format */
95*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CF_YCBCR400                (10) /* Y only */
96*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CF_YCBCR420                (11) /* YCbCr 420 */
97*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CF_YCBCR422                (12) /* YCBCR 422 narrow chroma*/
98*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CF_YCBCR444                (13) /* YCBCR 444*/
99*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CF_YCBCR4444               (14) /* YCBCR 4444*/
100*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CF_YCBCR422N               OAPV_CF_YCBCR422
101*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CF_YCBCR422W               (18) /* YCBCR422 wide chroma */
102*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CF_PLANAR2                 (20) /* Planar Y, Combined CB-CR, 422 */
103*abb65b4bSAndroid Build Coastguard Worker 
104*abb65b4bSAndroid Build Coastguard Worker /* macro for color space */
105*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_GET_FORMAT(cs)          (((cs) >> 0) & 0xFF)
106*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_GET_BIT_DEPTH(cs)       (((cs) >> 8) & 0x3F)
107*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_GET_BYTE_DEPTH(cs)      ((OAPV_CS_GET_BIT_DEPTH(cs) + 7) >> 3)
108*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_GET_ENDIAN(cs)          (((cs) >> 14) & 0x1)
109*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_SET(f, bit, e)          (((e) << 14) | ((bit) << 8) | (f))
110*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_SET_FORMAT(cs, v)       (((cs) & ~0xFF) | ((v) << 0))
111*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_SET_BIT_DEPTH(cs, v)    (((cs) & ~(0x3F << 8)) | ((v) << 8))
112*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_SET_ENDIAN(cs, v)       (((cs) & ~(0x1 << 14)) | ((v) << 14))
113*abb65b4bSAndroid Build Coastguard Worker 
114*abb65b4bSAndroid Build Coastguard Worker /* pre-defined color spaces */
115*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_UNKNOWN                 OAPV_CS_SET(0, 0, 0)
116*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_YCBCR400                OAPV_CS_SET(OAPV_CF_YCBCR400, 8, 0)
117*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_YCBCR420                OAPV_CS_SET(OAPV_CF_YCBCR420, 8, 0)
118*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_YCBCR422                OAPV_CS_SET(OAPV_CF_YCBCR422, 8, 0)
119*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_YCBCR444                OAPV_CS_SET(OAPV_CF_YCBCR444, 8, 0)
120*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_YCBCR4444               OAPV_CS_SET(OAPV_CF_YCBCR4444, 8, 0)
121*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_YCBCR400_10LE           OAPV_CS_SET(OAPV_CF_YCBCR400, 10, 0)
122*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_YCBCR420_10LE           OAPV_CS_SET(OAPV_CF_YCBCR420, 10, 0)
123*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_YCBCR422_10LE           OAPV_CS_SET(OAPV_CF_YCBCR422, 10, 0)
124*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_YCBCR444_10LE           OAPV_CS_SET(OAPV_CF_YCBCR444, 10, 0)
125*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_YCBCR4444_10LE          OAPV_CS_SET(OAPV_CF_YCBCR4444, 10, 0)
126*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_YCBCR400_12LE           OAPV_CS_SET(OAPV_CF_YCBCR400, 12, 0)
127*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_YCBCR420_12LE           OAPV_CS_SET(OAPV_CF_YCBCR420, 12, 0)
128*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_YCBCR400_14LE           OAPV_CS_SET(OAPV_CF_YCBCR400, 14, 0)
129*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_YCBCR420_14LE           OAPV_CS_SET(OAPV_CF_YCBCR420, 14, 0)
130*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CS_P210                    OAPV_CS_SET(OAPV_CF_PLANAR2, 10, 0)
131*abb65b4bSAndroid Build Coastguard Worker 
132*abb65b4bSAndroid Build Coastguard Worker /* max number of color channel: YCbCr4444 -> 4 channels */
133*abb65b4bSAndroid Build Coastguard Worker #define OAPV_MAX_CC                     (4)
134*abb65b4bSAndroid Build Coastguard Worker 
135*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
136*abb65b4bSAndroid Build Coastguard Worker  * config types
137*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
138*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_SET_QP                 (201)
139*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_SET_BPS                (202)
140*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_SET_FPS_NUM            (204)
141*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_SET_FPS_DEN            (205)
142*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_SET_QP_MIN             (208)
143*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_SET_QP_MAX             (209)
144*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_SET_USE_FRM_HASH       (301)
145*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_GET_QP_MIN             (600)
146*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_GET_QP_MAX             (601)
147*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_GET_QP                 (602)
148*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_GET_RCT                (603)
149*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_GET_BPS                (604)
150*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_GET_FPS_NUM            (605)
151*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_GET_FPS_DEN            (606)
152*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_GET_WIDTH              (701)
153*abb65b4bSAndroid Build Coastguard Worker #define OAPV_CFG_GET_HEIGHT             (702)
154*abb65b4bSAndroid Build Coastguard Worker 
155*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
156*abb65b4bSAndroid Build Coastguard Worker  * HLS configs
157*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
158*abb65b4bSAndroid Build Coastguard Worker #define OAPV_MAX_GRP_SIZE               ((1 << 16) - 1) // 0xFFFF reserved
159*abb65b4bSAndroid Build Coastguard Worker 
160*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
161*abb65b4bSAndroid Build Coastguard Worker  * PBU types
162*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
163*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PBU_TYPE_RESERVED          (0)
164*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PBU_TYPE_PRIMARY_FRAME     (1)
165*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PBU_TYPE_NON_PRIMARY_FRAME (2)
166*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PBU_TYPE_PREVIEW_FRAME     (25)
167*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PBU_TYPE_DEPTH_FRAME       (26)
168*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PBU_TYPE_ALPHA_FRAME       (27)
169*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PBU_TYPE_AU_INFO           (65)
170*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PBU_TYPE_METADATA          (66)
171*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PBU_TYPE_FILLER            (67)
172*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PBU_TYPE_UNKNOWN           (-1)
173*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PBU_NUMS                   (10)
174*abb65b4bSAndroid Build Coastguard Worker 
175*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PBU_FRAME_TYPE_NUM         (5)
176*abb65b4bSAndroid Build Coastguard Worker 
177*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
178*abb65b4bSAndroid Build Coastguard Worker  * metadata types
179*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
180*abb65b4bSAndroid Build Coastguard Worker #define OAPV_METADATA_ITU_T_T35         (4)
181*abb65b4bSAndroid Build Coastguard Worker #define OAPV_METADATA_MDCV              (5)
182*abb65b4bSAndroid Build Coastguard Worker #define OAPV_METADATA_CLL               (6)
183*abb65b4bSAndroid Build Coastguard Worker #define OAPV_METADATA_FILLER            (10)
184*abb65b4bSAndroid Build Coastguard Worker #define OAPV_METADATA_USER_DEFINED      (170)
185*abb65b4bSAndroid Build Coastguard Worker 
186*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
187*abb65b4bSAndroid Build Coastguard Worker  * profiles
188*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
189*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PROFILE_422_10             (33)
190*abb65b4bSAndroid Build Coastguard Worker 
191*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
192*abb65b4bSAndroid Build Coastguard Worker  * optimization level control
193*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
194*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PRESET_FASTEST             (0)
195*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PRESET_FAST                (1)
196*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PRESET_MEDIUM              (2)
197*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PRESET_SLOW                (3)
198*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PRESET_PLACEBO             (4)
199*abb65b4bSAndroid Build Coastguard Worker #define OAPV_PRESET_DEFAULT             OAPV_PRESET_MEDIUM
200*abb65b4bSAndroid Build Coastguard Worker 
201*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
202*abb65b4bSAndroid Build Coastguard Worker  * rate-control types
203*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
204*abb65b4bSAndroid Build Coastguard Worker #define OAPV_RC_CQP                     (0)
205*abb65b4bSAndroid Build Coastguard Worker #define OAPV_RC_ABR                     (1)
206*abb65b4bSAndroid Build Coastguard Worker 
207*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
208*abb65b4bSAndroid Build Coastguard Worker  * type and macro for media time
209*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
210*abb65b4bSAndroid Build Coastguard Worker typedef long long        oapv_mtime_t; /* in 100-nanosec unit */
211*abb65b4bSAndroid Build Coastguard Worker 
212*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
213*abb65b4bSAndroid Build Coastguard Worker  * image buffer format
214*abb65b4bSAndroid Build Coastguard Worker  *
215*abb65b4bSAndroid Build Coastguard Worker  *    baddr
216*abb65b4bSAndroid Build Coastguard Worker  *     +---------------------------------------------------+ ---
217*abb65b4bSAndroid Build Coastguard Worker  *     |                                                   |  ^
218*abb65b4bSAndroid Build Coastguard Worker  *     |                                              |    |  |
219*abb65b4bSAndroid Build Coastguard Worker  *     |      a                                       v    |  |
220*abb65b4bSAndroid Build Coastguard Worker  *     |   --- +-----------------------------------+ ---   |  |
221*abb65b4bSAndroid Build Coastguard Worker  *     |    ^  |  (x, y)                           |  y    |  |
222*abb65b4bSAndroid Build Coastguard Worker  *     |    |  |   +---------------------------+   + ---   |  |
223*abb65b4bSAndroid Build Coastguard Worker  *     |    |  |   |                           |   |  ^    |  |
224*abb65b4bSAndroid Build Coastguard Worker  *     |    |  |   |            /\             |   |  |    |  |
225*abb65b4bSAndroid Build Coastguard Worker  *     |    |  |   |           /  \            |   |  |    |  |
226*abb65b4bSAndroid Build Coastguard Worker  *     |    |  |   |          /    \           |   |  |    |  |
227*abb65b4bSAndroid Build Coastguard Worker  *     |       |   |  +--------------------+   |   |       |
228*abb65b4bSAndroid Build Coastguard Worker  *     |    ah |   |   \                  /    |   |  h    |  e
229*abb65b4bSAndroid Build Coastguard Worker  *     |       |   |    +----------------+     |   |       |
230*abb65b4bSAndroid Build Coastguard Worker  *     |    |  |   |       |          |        |   |  |    |  |
231*abb65b4bSAndroid Build Coastguard Worker  *     |    |  |   |      @    O   O   @       |   |  |    |  |
232*abb65b4bSAndroid Build Coastguard Worker  *     |    |  |   |        \    ~   /         |   |  v    |  |
233*abb65b4bSAndroid Build Coastguard Worker  *     |    |  |   +---------------------------+   | ---   |  |
234*abb65b4bSAndroid Build Coastguard Worker  *     |    v  |                                   |       |  |
235*abb65b4bSAndroid Build Coastguard Worker  *     |   --- +---+-------------------------------+       |  |
236*abb65b4bSAndroid Build Coastguard Worker  *     |     ->| x |<----------- w ----------->|           |  |
237*abb65b4bSAndroid Build Coastguard Worker  *     |       |<--------------- aw -------------->|       |  |
238*abb65b4bSAndroid Build Coastguard Worker  *     |                                                   |  v
239*abb65b4bSAndroid Build Coastguard Worker  *     +---------------------------------------------------+ ---
240*abb65b4bSAndroid Build Coastguard Worker  *
241*abb65b4bSAndroid Build Coastguard Worker  *     |<---------------------- s ------------------------>|
242*abb65b4bSAndroid Build Coastguard Worker  *
243*abb65b4bSAndroid Build Coastguard Worker  * - x, y, w, aw, h, ah : unit of pixel
244*abb65b4bSAndroid Build Coastguard Worker  * - s, e : unit of byte
245*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
246*abb65b4bSAndroid Build Coastguard Worker 
247*abb65b4bSAndroid Build Coastguard Worker typedef struct oapv_imgb oapv_imgb_t;
248*abb65b4bSAndroid Build Coastguard Worker struct oapv_imgb {
249*abb65b4bSAndroid Build Coastguard Worker     int           cs; /* color space */
250*abb65b4bSAndroid Build Coastguard Worker     int           np; /* number of plane */
251*abb65b4bSAndroid Build Coastguard Worker     /* width (in unit of pixel) */
252*abb65b4bSAndroid Build Coastguard Worker     int           w[OAPV_MAX_CC];
253*abb65b4bSAndroid Build Coastguard Worker     /* height (in unit of pixel) */
254*abb65b4bSAndroid Build Coastguard Worker     int           h[OAPV_MAX_CC];
255*abb65b4bSAndroid Build Coastguard Worker     /* X position of left top (in unit of pixel) */
256*abb65b4bSAndroid Build Coastguard Worker     int           x[OAPV_MAX_CC];
257*abb65b4bSAndroid Build Coastguard Worker     /* Y postion of left top (in unit of pixel) */
258*abb65b4bSAndroid Build Coastguard Worker     int           y[OAPV_MAX_CC];
259*abb65b4bSAndroid Build Coastguard Worker     /* buffer stride (in unit of byte) */
260*abb65b4bSAndroid Build Coastguard Worker     int           s[OAPV_MAX_CC];
261*abb65b4bSAndroid Build Coastguard Worker     /* buffer elevation (in unit of byte) */
262*abb65b4bSAndroid Build Coastguard Worker     int           e[OAPV_MAX_CC];
263*abb65b4bSAndroid Build Coastguard Worker     /* address of each plane */
264*abb65b4bSAndroid Build Coastguard Worker     void         *a[OAPV_MAX_CC];
265*abb65b4bSAndroid Build Coastguard Worker 
266*abb65b4bSAndroid Build Coastguard Worker     /* hash data for signature */
267*abb65b4bSAndroid Build Coastguard Worker     unsigned char hash[OAPV_MAX_CC][16];
268*abb65b4bSAndroid Build Coastguard Worker 
269*abb65b4bSAndroid Build Coastguard Worker     /* time-stamps */
270*abb65b4bSAndroid Build Coastguard Worker     oapv_mtime_t  ts[4];
271*abb65b4bSAndroid Build Coastguard Worker 
272*abb65b4bSAndroid Build Coastguard Worker     int           ndata[4]; /* arbitrary data, if needs */
273*abb65b4bSAndroid Build Coastguard Worker     void         *pdata[4]; /* arbitrary adedress if needs */
274*abb65b4bSAndroid Build Coastguard Worker 
275*abb65b4bSAndroid Build Coastguard Worker     /* aligned width (in unit of pixel) */
276*abb65b4bSAndroid Build Coastguard Worker     int           aw[OAPV_MAX_CC];
277*abb65b4bSAndroid Build Coastguard Worker     /* aligned height (in unit of pixel) */
278*abb65b4bSAndroid Build Coastguard Worker     int           ah[OAPV_MAX_CC];
279*abb65b4bSAndroid Build Coastguard Worker 
280*abb65b4bSAndroid Build Coastguard Worker     /* left padding size (in unit of pixel) */
281*abb65b4bSAndroid Build Coastguard Worker     int           padl[OAPV_MAX_CC];
282*abb65b4bSAndroid Build Coastguard Worker     /* right padding size (in unit of pixel) */
283*abb65b4bSAndroid Build Coastguard Worker     int           padr[OAPV_MAX_CC];
284*abb65b4bSAndroid Build Coastguard Worker     /* up padding size (in unit of pixel) */
285*abb65b4bSAndroid Build Coastguard Worker     int           padu[OAPV_MAX_CC];
286*abb65b4bSAndroid Build Coastguard Worker     /* bottom padding size (in unit of pixel) */
287*abb65b4bSAndroid Build Coastguard Worker     int           padb[OAPV_MAX_CC];
288*abb65b4bSAndroid Build Coastguard Worker 
289*abb65b4bSAndroid Build Coastguard Worker     /* address of actual allocated buffer */
290*abb65b4bSAndroid Build Coastguard Worker     void         *baddr[OAPV_MAX_CC];
291*abb65b4bSAndroid Build Coastguard Worker     /* actual allocated buffer size */
292*abb65b4bSAndroid Build Coastguard Worker     int           bsize[OAPV_MAX_CC];
293*abb65b4bSAndroid Build Coastguard Worker 
294*abb65b4bSAndroid Build Coastguard Worker     /* life cycle management */
295*abb65b4bSAndroid Build Coastguard Worker     int           refcnt;
296*abb65b4bSAndroid Build Coastguard Worker     int (*addref)(oapv_imgb_t *imgb);
297*abb65b4bSAndroid Build Coastguard Worker     int (*getref)(oapv_imgb_t *imgb);
298*abb65b4bSAndroid Build Coastguard Worker     int (*release)(oapv_imgb_t *imgb);
299*abb65b4bSAndroid Build Coastguard Worker };
300*abb65b4bSAndroid Build Coastguard Worker 
301*abb65b4bSAndroid Build Coastguard Worker typedef struct oapv_frm oapv_frm_t;
302*abb65b4bSAndroid Build Coastguard Worker struct oapv_frm {
303*abb65b4bSAndroid Build Coastguard Worker     oapv_imgb_t *imgb;
304*abb65b4bSAndroid Build Coastguard Worker     int          pbu_type;
305*abb65b4bSAndroid Build Coastguard Worker     int          group_id;
306*abb65b4bSAndroid Build Coastguard Worker };
307*abb65b4bSAndroid Build Coastguard Worker 
308*abb65b4bSAndroid Build Coastguard Worker #define OAPV_MAX_NUM_FRAMES (16) // max number of frames in an access unit
309*abb65b4bSAndroid Build Coastguard Worker #define OAPV_MAX_NUM_METAS  (16) // max number of metadata in an access unit
310*abb65b4bSAndroid Build Coastguard Worker 
311*abb65b4bSAndroid Build Coastguard Worker typedef struct oapv_frms oapv_frms_t;
312*abb65b4bSAndroid Build Coastguard Worker struct oapv_frms {
313*abb65b4bSAndroid Build Coastguard Worker     int        num_frms;                 // number of frames
314*abb65b4bSAndroid Build Coastguard Worker     oapv_frm_t frm[OAPV_MAX_NUM_FRAMES]; // container of frames
315*abb65b4bSAndroid Build Coastguard Worker };
316*abb65b4bSAndroid Build Coastguard Worker 
317*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
318*abb65b4bSAndroid Build Coastguard Worker  * Bitstream buffer
319*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
320*abb65b4bSAndroid Build Coastguard Worker typedef struct oapv_bitb oapv_bitb_t;
321*abb65b4bSAndroid Build Coastguard Worker struct oapv_bitb {
322*abb65b4bSAndroid Build Coastguard Worker     /* user space address indicating buffer */
323*abb65b4bSAndroid Build Coastguard Worker     void        *addr;
324*abb65b4bSAndroid Build Coastguard Worker     /* physical address indicating buffer, if any */
325*abb65b4bSAndroid Build Coastguard Worker     void        *pddr;
326*abb65b4bSAndroid Build Coastguard Worker     /* byte size of buffer memory */
327*abb65b4bSAndroid Build Coastguard Worker     int          bsize;
328*abb65b4bSAndroid Build Coastguard Worker     /* byte size of bitstream in buffer */
329*abb65b4bSAndroid Build Coastguard Worker     int          ssize;
330*abb65b4bSAndroid Build Coastguard Worker     /* bitstream has an error? */
331*abb65b4bSAndroid Build Coastguard Worker     int          err;
332*abb65b4bSAndroid Build Coastguard Worker     /* arbitrary data, if needs */
333*abb65b4bSAndroid Build Coastguard Worker     int          ndata[4];
334*abb65b4bSAndroid Build Coastguard Worker     /* arbitrary address, if needs */
335*abb65b4bSAndroid Build Coastguard Worker     void        *pdata[4];
336*abb65b4bSAndroid Build Coastguard Worker     /* time-stamps */
337*abb65b4bSAndroid Build Coastguard Worker     oapv_mtime_t ts[4];
338*abb65b4bSAndroid Build Coastguard Worker };
339*abb65b4bSAndroid Build Coastguard Worker 
340*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
341*abb65b4bSAndroid Build Coastguard Worker  * brief information of frame
342*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
343*abb65b4bSAndroid Build Coastguard Worker typedef struct oapv_frm_info oapv_frm_info_t;
344*abb65b4bSAndroid Build Coastguard Worker struct oapv_frm_info {
345*abb65b4bSAndroid Build Coastguard Worker     int w;
346*abb65b4bSAndroid Build Coastguard Worker     int h;
347*abb65b4bSAndroid Build Coastguard Worker     int cs;
348*abb65b4bSAndroid Build Coastguard Worker     int pbu_type;
349*abb65b4bSAndroid Build Coastguard Worker     int group_id;
350*abb65b4bSAndroid Build Coastguard Worker     int profile_idc;
351*abb65b4bSAndroid Build Coastguard Worker     int level_idc;
352*abb65b4bSAndroid Build Coastguard Worker     int band_idc;
353*abb65b4bSAndroid Build Coastguard Worker     int chroma_format_idc;
354*abb65b4bSAndroid Build Coastguard Worker     int bit_depth;
355*abb65b4bSAndroid Build Coastguard Worker     int capture_time_distance;
356*abb65b4bSAndroid Build Coastguard Worker };
357*abb65b4bSAndroid Build Coastguard Worker 
358*abb65b4bSAndroid Build Coastguard Worker typedef struct oapv_au_info oapv_au_info_t;
359*abb65b4bSAndroid Build Coastguard Worker struct oapv_au_info {
360*abb65b4bSAndroid Build Coastguard Worker     int             num_frms; // number of frames
361*abb65b4bSAndroid Build Coastguard Worker     oapv_frm_info_t frm_info[OAPV_MAX_NUM_FRAMES];
362*abb65b4bSAndroid Build Coastguard Worker };
363*abb65b4bSAndroid Build Coastguard Worker 
364*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
365*abb65b4bSAndroid Build Coastguard Worker  * coding parameters
366*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
367*abb65b4bSAndroid Build Coastguard Worker typedef struct oapve_param oapve_param_t;
368*abb65b4bSAndroid Build Coastguard Worker struct oapve_param {
369*abb65b4bSAndroid Build Coastguard Worker     /* profile_idc */
370*abb65b4bSAndroid Build Coastguard Worker     int profile_idc;
371*abb65b4bSAndroid Build Coastguard Worker     /* level */
372*abb65b4bSAndroid Build Coastguard Worker     int level_idc;
373*abb65b4bSAndroid Build Coastguard Worker     /* band */
374*abb65b4bSAndroid Build Coastguard Worker     int band_idc;
375*abb65b4bSAndroid Build Coastguard Worker     /* width of input frame */
376*abb65b4bSAndroid Build Coastguard Worker     int w;
377*abb65b4bSAndroid Build Coastguard Worker     /* height of input frame */
378*abb65b4bSAndroid Build Coastguard Worker     int h;
379*abb65b4bSAndroid Build Coastguard Worker     /* frame rate (Hz) numerator, denominator */
380*abb65b4bSAndroid Build Coastguard Worker     int fps_num;
381*abb65b4bSAndroid Build Coastguard Worker     int fps_den;
382*abb65b4bSAndroid Build Coastguard Worker     /* rate control type */
383*abb65b4bSAndroid Build Coastguard Worker     int rc_type;
384*abb65b4bSAndroid Build Coastguard Worker     /* quantization parameter (0 ~ 63)*/
385*abb65b4bSAndroid Build Coastguard Worker     int qp;
386*abb65b4bSAndroid Build Coastguard Worker     /* quantization parameter offset for CB */
387*abb65b4bSAndroid Build Coastguard Worker     int qp_cb_offset;
388*abb65b4bSAndroid Build Coastguard Worker     /* quantization parameter offset for CR */
389*abb65b4bSAndroid Build Coastguard Worker     int qp_cr_offset;
390*abb65b4bSAndroid Build Coastguard Worker     /* bitrate (unit: kbps) */
391*abb65b4bSAndroid Build Coastguard Worker     int bitrate;
392*abb65b4bSAndroid Build Coastguard Worker     /* use filler data for tight constant bitrate */
393*abb65b4bSAndroid Build Coastguard Worker     int use_filler;
394*abb65b4bSAndroid Build Coastguard Worker     /* use filler quantization matrix */
395*abb65b4bSAndroid Build Coastguard Worker     int use_q_matrix;
396*abb65b4bSAndroid Build Coastguard Worker     int q_matrix_y[OAPV_BLK_D];
397*abb65b4bSAndroid Build Coastguard Worker     int q_matrix_u[OAPV_BLK_D];
398*abb65b4bSAndroid Build Coastguard Worker     int q_matrix_v[OAPV_BLK_D];
399*abb65b4bSAndroid Build Coastguard Worker     int q_matrix_x[OAPV_BLK_D];
400*abb65b4bSAndroid Build Coastguard Worker     /* color space */
401*abb65b4bSAndroid Build Coastguard Worker     int csp;
402*abb65b4bSAndroid Build Coastguard Worker     int tile_cols;
403*abb65b4bSAndroid Build Coastguard Worker     int tile_rows;
404*abb65b4bSAndroid Build Coastguard Worker     int tile_w_mb;
405*abb65b4bSAndroid Build Coastguard Worker     int tile_h_mb;
406*abb65b4bSAndroid Build Coastguard Worker     int preset;
407*abb65b4bSAndroid Build Coastguard Worker };
408*abb65b4bSAndroid Build Coastguard Worker 
409*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
410*abb65b4bSAndroid Build Coastguard Worker  * description for encoder creation
411*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
412*abb65b4bSAndroid Build Coastguard Worker typedef struct oapve_cdesc oapve_cdesc_t;
413*abb65b4bSAndroid Build Coastguard Worker struct oapve_cdesc {
414*abb65b4bSAndroid Build Coastguard Worker     int           max_bs_buf_size;            // max bitstream buffer size
415*abb65b4bSAndroid Build Coastguard Worker     int           max_num_frms;               // max number of frames to be encoded
416*abb65b4bSAndroid Build Coastguard Worker     int           threads;                    // number of threads
417*abb65b4bSAndroid Build Coastguard Worker     oapve_param_t param[OAPV_MAX_NUM_FRAMES]; // encoding parameters
418*abb65b4bSAndroid Build Coastguard Worker };
419*abb65b4bSAndroid Build Coastguard Worker 
420*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
421*abb65b4bSAndroid Build Coastguard Worker  * encoding status
422*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
423*abb65b4bSAndroid Build Coastguard Worker typedef struct oapve_stat oapve_stat_t;
424*abb65b4bSAndroid Build Coastguard Worker struct oapve_stat {
425*abb65b4bSAndroid Build Coastguard Worker     int            write;                         // byte size of encoded bitstream
426*abb65b4bSAndroid Build Coastguard Worker     oapv_au_info_t aui;                           // information of encoded frames
427*abb65b4bSAndroid Build Coastguard Worker     int            frm_size[OAPV_MAX_NUM_FRAMES]; // bitstream byte size of each frame
428*abb65b4bSAndroid Build Coastguard Worker };
429*abb65b4bSAndroid Build Coastguard Worker 
430*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
431*abb65b4bSAndroid Build Coastguard Worker  * description for decoder creation
432*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
433*abb65b4bSAndroid Build Coastguard Worker typedef struct oapvd_cdesc oapvd_cdesc_t;
434*abb65b4bSAndroid Build Coastguard Worker struct oapvd_cdesc {
435*abb65b4bSAndroid Build Coastguard Worker     int threads; // number of threads
436*abb65b4bSAndroid Build Coastguard Worker };
437*abb65b4bSAndroid Build Coastguard Worker 
438*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
439*abb65b4bSAndroid Build Coastguard Worker  * decoding status
440*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
441*abb65b4bSAndroid Build Coastguard Worker typedef struct oapvd_stat oapvd_stat_t;
442*abb65b4bSAndroid Build Coastguard Worker struct oapvd_stat {
443*abb65b4bSAndroid Build Coastguard Worker     int            read;                          // byte size of decoded bitstream (read size)
444*abb65b4bSAndroid Build Coastguard Worker     oapv_au_info_t aui;                           // information of decoded frames
445*abb65b4bSAndroid Build Coastguard Worker     int            frm_size[OAPV_MAX_NUM_FRAMES]; // bitstream byte size of each frame
446*abb65b4bSAndroid Build Coastguard Worker };
447*abb65b4bSAndroid Build Coastguard Worker 
448*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
449*abb65b4bSAndroid Build Coastguard Worker  * metadata payload
450*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
451*abb65b4bSAndroid Build Coastguard Worker typedef struct oapvm_payload oapvm_payload_t;
452*abb65b4bSAndroid Build Coastguard Worker struct oapvm_payload {
453*abb65b4bSAndroid Build Coastguard Worker     int           group_id;  // group ID
454*abb65b4bSAndroid Build Coastguard Worker     int           type;      // payload type
455*abb65b4bSAndroid Build Coastguard Worker     unsigned char uuid[16];  // UUID for user-defined metadata payload
456*abb65b4bSAndroid Build Coastguard Worker     void         *data;      // address of metadata payload
457*abb65b4bSAndroid Build Coastguard Worker     int           data_size; // byte size of metadata payload
458*abb65b4bSAndroid Build Coastguard Worker };
459*abb65b4bSAndroid Build Coastguard Worker 
460*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
461*abb65b4bSAndroid Build Coastguard Worker  * interface for metadata container
462*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
463*abb65b4bSAndroid Build Coastguard Worker typedef void       *oapvm_t; /* instance identifier for OAPV metadata container */
464*abb65b4bSAndroid Build Coastguard Worker 
465*abb65b4bSAndroid Build Coastguard Worker oapvm_t OAPV_EXPORT oapvm_create(int *err);
466*abb65b4bSAndroid Build Coastguard Worker void OAPV_EXPORT oapvm_delete(oapvm_t mid);
467*abb65b4bSAndroid Build Coastguard Worker void OAPV_EXPORT oapvm_rem_all(oapvm_t mid);
468*abb65b4bSAndroid Build Coastguard Worker int OAPV_EXPORT oapvm_set(oapvm_t mid, int group_id, int type, void *data, int size, unsigned char *uuid);
469*abb65b4bSAndroid Build Coastguard Worker int OAPV_EXPORT oapvm_get(oapvm_t mid, int group_id, int type, void **data, int *size, unsigned char *uuid);
470*abb65b4bSAndroid Build Coastguard Worker int OAPV_EXPORT oapvm_rem(oapvm_t mid, int group_id, int type, unsigned char *uuid);
471*abb65b4bSAndroid Build Coastguard Worker int OAPV_EXPORT oapvm_set_all(oapvm_t mid, oapvm_payload_t *pld, int num_plds);
472*abb65b4bSAndroid Build Coastguard Worker int OAPV_EXPORT oapvm_get_all(oapvm_t mid, oapvm_payload_t *pld, int *num_plds);
473*abb65b4bSAndroid Build Coastguard Worker 
474*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
475*abb65b4bSAndroid Build Coastguard Worker  * interface for encoder
476*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
477*abb65b4bSAndroid Build Coastguard Worker typedef void       *oapve_t; /* instance identifier for OAPV encoder */
478*abb65b4bSAndroid Build Coastguard Worker 
479*abb65b4bSAndroid Build Coastguard Worker oapve_t OAPV_EXPORT oapve_create(oapve_cdesc_t *cdesc, int *err);
480*abb65b4bSAndroid Build Coastguard Worker void OAPV_EXPORT oapve_delete(oapve_t eid);
481*abb65b4bSAndroid Build Coastguard Worker int OAPV_EXPORT oapve_config(oapve_t eid, int cfg, void *buf, int *size);
482*abb65b4bSAndroid Build Coastguard Worker int OAPV_EXPORT oapve_param_default(oapve_param_t *param);
483*abb65b4bSAndroid Build Coastguard Worker int OAPV_EXPORT oapve_encode(oapve_t eid, oapv_frms_t *ifrms, oapvm_t mid, oapv_bitb_t *bitb, oapve_stat_t *stat, oapv_frms_t *rfrms);
484*abb65b4bSAndroid Build Coastguard Worker 
485*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
486*abb65b4bSAndroid Build Coastguard Worker  * interface for decoder
487*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
488*abb65b4bSAndroid Build Coastguard Worker typedef void       *oapvd_t; /* instance identifier for OAPV decoder */
489*abb65b4bSAndroid Build Coastguard Worker 
490*abb65b4bSAndroid Build Coastguard Worker oapvd_t OAPV_EXPORT oapvd_create(oapvd_cdesc_t *cdesc, int *err);
491*abb65b4bSAndroid Build Coastguard Worker void OAPV_EXPORT oapvd_delete(oapvd_t did);
492*abb65b4bSAndroid Build Coastguard Worker int OAPV_EXPORT oapvd_config(oapvd_t did, int cfg, void *buf, int *size);
493*abb65b4bSAndroid Build Coastguard Worker int OAPV_EXPORT oapvd_decode(oapvd_t did, oapv_bitb_t *bitb, oapv_frms_t *ofrms, oapvm_t mid, oapvd_stat_t *stat);
494*abb65b4bSAndroid Build Coastguard Worker 
495*abb65b4bSAndroid Build Coastguard Worker /*****************************************************************************
496*abb65b4bSAndroid Build Coastguard Worker  * interface for utility
497*abb65b4bSAndroid Build Coastguard Worker  *****************************************************************************/
498*abb65b4bSAndroid Build Coastguard Worker int OAPV_EXPORT oapvd_info(void *au, int au_size, oapv_au_info_t *aui);
499*abb65b4bSAndroid Build Coastguard Worker 
500*abb65b4bSAndroid Build Coastguard Worker #ifdef __cplusplus
501*abb65b4bSAndroid Build Coastguard Worker } /* extern "C" */
502*abb65b4bSAndroid Build Coastguard Worker #endif
503*abb65b4bSAndroid Build Coastguard Worker 
504*abb65b4bSAndroid Build Coastguard Worker #endif /* __OAPV_H__3342320849320483827648324783920483920432847382948__ */
505