blob: bac5847edc30c1bf91c3e1fc1ae4d5b968ca8d68 [file] [log] [blame]
Hamsalekha S8d3d3032015-03-13 21:24:58 +05301/******************************************************************************
2 *
3 * Copyright (C) 2015 The Android Open Source Project
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *****************************************************************************
18 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19*/
Harish Mahendrakar34b3e472015-08-04 09:55:15 +053020/**
21*******************************************************************************
22* @file
23* ivd.h
24*
25* @brief
26* This file contains all the necessary structure and enumeration
27* definitions needed for the Application Program Interface(API) of the
28* Ittiam Video Decoders
29*
30* @author
31* 100239(RCY)
32*
33* @remarks
34* None
35*
36*******************************************************************************
37*/
Hamsalekha S8d3d3032015-03-13 21:24:58 +053038
39#ifndef _IVD_H
40#define _IVD_H
41
42/*****************************************************************************/
43/* Constant Macros */
44/*****************************************************************************/
45#define IVD_VIDDEC_MAX_IO_BUFFERS 64
Chamarthi Kishoread2eaf82019-10-01 11:59:43 +053046
47/** SEI macros */
48/*
49 * @brief specifies the number of colour primary components of the mastering display
50 */
51#define NUM_SEI_MDCV_PRIMARIES 3
52
53/*
54 * @brief specifies the number of colour primary components of the nominal content colour volume
55 */
56#define NUM_SEI_CCV_PRIMARIES 3
57
Hamsalekha S8d3d3032015-03-13 21:24:58 +053058/*****************************************************************************/
59/* Typedefs */
60/*****************************************************************************/
61
62/*****************************************************************************/
63/* Enums */
64/*****************************************************************************/
65
66/* IVD_ARCH_T: Architecture Enumeration */
67typedef enum
68{
69 ARCH_NA = 0x7FFFFFFF,
70 ARCH_ARM_NONEON = 0x0,
71 ARCH_ARM_A9Q,
72 ARCH_ARM_A9A,
73 ARCH_ARM_A9,
74 ARCH_ARM_A7,
75 ARCH_ARM_A5,
76 ARCH_ARM_A15,
77 ARCH_ARM_NEONINTR,
78 ARCH_ARMV8_GENERIC,
79 ARCH_X86_GENERIC = 0x100,
80 ARCH_X86_SSSE3,
81 ARCH_X86_SSE42,
82 ARCH_X86_AVX2,
83 ARCH_MIPS_GENERIC = 0x200,
84 ARCH_MIPS_32
85}IVD_ARCH_T;
86
87/* IVD_SOC_T: SOC Enumeration */
88typedef enum
89{
90 SOC_NA = 0x7FFFFFFF,
91 SOC_GENERIC = 0x0,
92 SOC_HISI_37X = 0x100,
93}IVD_SOC_T;
94
95/* IVD_FRAME_SKIP_MODE_T:Skip mode Enumeration */
96
97typedef enum {
98 IVD_SKIP_NONE = 0x7FFFFFFF,
99 IVD_SKIP_P = 0x1,
100 IVD_SKIP_B = 0x2,
101 IVD_SKIP_I = 0x3,
102 IVD_SKIP_IP = 0x4,
103 IVD_SKIP_IB = 0x5,
104 IVD_SKIP_PB = 0x6,
105 IVD_SKIP_IPB = 0x7,
106 IVD_SKIP_IDR = 0x8,
107 IVD_SKIP_DEFAULT = IVD_SKIP_NONE,
108}IVD_FRAME_SKIP_MODE_T;
109
110/* IVD_VIDEO_DECODE_MODE_T: Set decoder to decode either frame worth of data */
111/* or only header worth of data */
112
113typedef enum {
114 IVD_DECODE_MODE_NA = 0x7FFFFFFF,
115
116 /* This enables the codec to process all decodable units */
117 IVD_DECODE_FRAME = 0x0,
118
119 /* This enables the codec to decode header only */
120 IVD_DECODE_HEADER = 0x1,
121
122
123
124}IVD_VIDEO_DECODE_MODE_T;
125
126
127/* IVD_DISPLAY_FRAME_OUT_MODE_T: Video Display Frame Output Mode */
128
129typedef enum {
130
131 IVD_DISPLAY_ORDER_NA = 0x7FFFFFFF,
132 /* To set codec to fill output buffers in display order */
133 IVD_DISPLAY_FRAME_OUT = 0x0,
134
135 /* To set codec to fill output buffers in decode order */
136 IVD_DECODE_FRAME_OUT = 0x1,
137}IVD_DISPLAY_FRAME_OUT_MODE_T;
138
139
140/* IVD_API_COMMAND_TYPE_T:API command type */
141typedef enum {
142 IVD_CMD_VIDEO_NA = 0x7FFFFFFF,
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530143 IVD_CMD_CREATE = IV_CMD_DUMMY_ELEMENT + 1,
144 IVD_CMD_DELETE,
145 IVD_CMD_VIDEO_CTL,
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530146 IVD_CMD_VIDEO_DECODE,
147 IVD_CMD_GET_DISPLAY_FRAME,
148 IVD_CMD_REL_DISPLAY_FRAME,
149 IVD_CMD_SET_DISPLAY_FRAME
150}IVD_API_COMMAND_TYPE_T;
151
152/* IVD_CONTROL_API_COMMAND_TYPE_T: Video Control API command type */
153
154typedef enum {
155 IVD_CMD_NA = 0x7FFFFFFF,
156 IVD_CMD_CTL_GETPARAMS = 0x0,
157 IVD_CMD_CTL_SETPARAMS = 0x1,
158 IVD_CMD_CTL_RESET = 0x2,
159 IVD_CMD_CTL_SETDEFAULT = 0x3,
160 IVD_CMD_CTL_FLUSH = 0x4,
161 IVD_CMD_CTL_GETBUFINFO = 0x5,
162 IVD_CMD_CTL_GETVERSION = 0x6,
163 IVD_CMD_CTL_CODEC_SUBCMD_START = 0x7
164}IVD_CONTROL_API_COMMAND_TYPE_T;
165
166
167/* IVD_ERROR_BITS_T: A UWORD32 container will be used for reporting the error*/
168/* code to the application. The first 8 bits starting from LSB have been */
169/* reserved for the codec to report internal error details. The rest of the */
170/* bits will be generic for all video decoders and each bit has an associated*/
171/* meaning as mentioned below. The unused bit fields are reserved for future */
172/* extenstions and will be zero in the current implementation */
173
174typedef enum {
175 /* Bit 8 - Applied concealment. */
176 IVD_APPLIEDCONCEALMENT = 0x8,
177 /* Bit 9 - Insufficient input data. */
178 IVD_INSUFFICIENTDATA = 0x9,
179 /* Bit 10 - Data problem/corruption. */
180 IVD_CORRUPTEDDATA = 0xa,
181 /* Bit 11 - Header problem/corruption. */
182 IVD_CORRUPTEDHEADER = 0xb,
183 /* Bit 12 - Unsupported feature/parameter in input. */
184 IVD_UNSUPPORTEDINPUT = 0xc,
185 /* Bit 13 - Unsupported input parameter orconfiguration. */
186 IVD_UNSUPPORTEDPARAM = 0xd,
187 /* Bit 14 - Fatal error (stop the codec).If there is an */
188 /* error and this bit is not set, the error is a recoverable one. */
189 IVD_FATALERROR = 0xe,
190 /* Bit 15 - Invalid bitstream. Applies when Bitstream/YUV frame */
191 /* buffer for encode/decode call is made with non-valid or zero u4_size */
192 /* data */
193 IVD_INVALID_BITSTREAM = 0xf,
194 /* Bit 16 */
195 IVD_INCOMPLETE_BITSTREAM = 0x10,
196 IVD_ERROR_BITS_T_DUMMY_ELEMENT = 0x7FFFFFFF
197}IVD_ERROR_BITS_T;
198
199
200/* IVD_CONTROL_API_COMMAND_TYPE_T: Video Control API command type */
201typedef enum {
202 IVD_ERROR_NONE = 0x0,
203 IVD_NUM_MEM_REC_FAILED = 0x1,
204 IVD_NUM_REC_NOT_SUFFICIENT = 0x2,
205 IVD_FILL_MEM_REC_FAILED = 0x3,
206 IVD_REQUESTED_WIDTH_NOT_SUPPPORTED = 0x4,
207 IVD_REQUESTED_HEIGHT_NOT_SUPPPORTED = 0x5,
208 IVD_INIT_DEC_FAILED = 0x6,
209 IVD_INIT_DEC_NOT_SUFFICIENT = 0x7,
210 IVD_INIT_DEC_WIDTH_NOT_SUPPPORTED = 0x8,
211 IVD_INIT_DEC_HEIGHT_NOT_SUPPPORTED = 0x9,
212 IVD_INIT_DEC_MEM_NOT_ALIGNED = 0xa,
213 IVD_INIT_DEC_COL_FMT_NOT_SUPPORTED = 0xb,
214 IVD_INIT_DEC_MEM_REC_NOT_SUFFICIENT = 0xc,
215 IVD_GET_VERSION_DATABUFFER_SZ_INSUFFICIENT = 0xd,
216 IVD_BUFFER_SIZE_SET_TO_ZERO = 0xe,
217 IVD_UNEXPECTED_END_OF_STREAM = 0xf,
218 IVD_SEQUENCE_HEADER_NOT_DECODED = 0x10,
219 IVD_STREAM_WIDTH_HEIGHT_NOT_SUPPORTED = 0x11,
220 IVD_MAX_FRAME_LIMIT_REACHED = 0x12,
221 IVD_IP_API_STRUCT_SIZE_INCORRECT = 0x13,
222 IVD_OP_API_STRUCT_SIZE_INCORRECT = 0x14,
223 IVD_HANDLE_NULL = 0x15,
224 IVD_HANDLE_STRUCT_SIZE_INCORRECT = 0x16,
225 IVD_INVALID_HANDLE_NULL = 0x17,
226 IVD_INVALID_API_CMD = 0x18,
227 IVD_UNSUPPORTED_API_CMD = 0x19,
228 IVD_MEM_REC_STRUCT_SIZE_INCORRECT = 0x1a,
229 IVD_DISP_FRM_ZERO_OP_BUFS = 0x1b,
230 IVD_DISP_FRM_OP_BUF_NULL = 0x1c,
231 IVD_DISP_FRM_ZERO_OP_BUF_SIZE = 0x1d,
232 IVD_DEC_FRM_BS_BUF_NULL = 0x1e,
233 IVD_SET_CONFG_INVALID_DEC_MODE = 0x1f,
234 IVD_SET_CONFG_UNSUPPORTED_DISP_WIDTH = 0x20,
235 IVD_RESET_FAILED = 0x21,
236 IVD_INIT_DEC_MEM_REC_OVERLAP_ERR = 0x22,
237 IVD_INIT_DEC_MEM_REC_BASE_NULL = 0x23,
238 IVD_INIT_DEC_MEM_REC_ALIGNMENT_ERR = 0x24,
239 IVD_INIT_DEC_MEM_REC_INSUFFICIENT_SIZE = 0x25,
240 IVD_INIT_DEC_MEM_REC_INCORRECT_TYPE = 0x26,
241 IVD_DEC_NUMBYTES_INV = 0x27,
242 IVD_DEC_REF_BUF_NULL = 0x28,
243 IVD_DEC_FRM_SKIPPED = 0x29,
244 IVD_RES_CHANGED = 0x2a,
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530245 IVD_MEM_ALLOC_FAILED = 0x2b,
Hamsalekha Scaab4fe2015-05-07 16:38:07 +0530246 IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS = 0xD0,
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530247}IVD_ERROR_CODES_T;
248
249
250/*****************************************************************************/
251/* Structure */
252/*****************************************************************************/
253/* structure for passing output buffers to codec during get display buffer */
254/* call */
255typedef struct {
256
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530257 /**
258 * number of output buffers
259 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530260 UWORD32 u4_num_bufs;
261
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530262 /**
263 *list of pointers to output buffers
264 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530265 UWORD8 *pu1_bufs[IVD_VIDDEC_MAX_IO_BUFFERS];
266
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530267 /**
268 * sizes of each output buffer
269 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530270 UWORD32 u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
271
272}ivd_out_bufdesc_t;
273
274/*****************************************************************************/
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530275/* Create decoder */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530276/*****************************************************************************/
277
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530278/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_CREATE */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530279
280
281typedef struct {
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530282 /**
283 * u4_size of the structure
284 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530285 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530286
287 /**
288 * e_cmd
289 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530290 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530291
292 /**
293 * format in which codec has to give out frame data for display
294 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530295 IV_COLOR_FORMAT_T e_output_format;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530296
297 /**
298 * Flag to indicate shared display buffer mode
299 */
300 UWORD32 u4_share_disp_buf;
301
302 /**
303 * Pointer to a function for aligned allocation.
304 */
305 void *(*pf_aligned_alloc)(void *pv_mem_ctxt, WORD32 alignment, WORD32 size);
306
307 /**
308 * Pointer to a function for aligned free.
309 */
310 void (*pf_aligned_free)(void *pv_mem_ctxt, void *pv_buf);
311
312 /**
313 * Pointer to memory context that is needed during alloc/free for custom
314 * memory managers. This will be passed as first argument to pf_aligned_alloc and
315 * pf_aligned_free.
316 * If application is using standard memory functions like
317 * malloc/aligned_malloc/memalign/free/aligned_free,
318 * then this is not needed and can be set to NULL
319 */
320 void *pv_mem_ctxt;
321
322}ivd_create_ip_t;
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530323
324
325typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530326 /**
327 * u4_size of the structure
328 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530329 UWORD32 u4_size;
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530330
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530331 /**
332 * u4_error_code
333 */
334 UWORD32 u4_error_code;
335
336 /**
337 * Codec Handle
338 */
339 void *pv_handle;
340
341}ivd_create_op_t;
342
343
344/*****************************************************************************/
345/* Delete decoder */
346/*****************************************************************************/
347
348/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_DELETE */
349
350
351
352typedef struct {
353 /**
354 * u4_size of the structure
355 */
356 UWORD32 u4_size;
357
358 /**
359 * cmd
360 */
361 IVD_API_COMMAND_TYPE_T e_cmd;
362
363}ivd_delete_ip_t;
364
365
366typedef struct{
367 /**
368 * u4_size of the structure
369 */
370 UWORD32 u4_size;
371
372 /**
373 * error_code
374 */
375 UWORD32 u4_error_code;
376
377}ivd_delete_op_t;
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530378
379/*****************************************************************************/
380/* Video Decode */
381/*****************************************************************************/
382
Chamarthi Kishoread2eaf82019-10-01 11:59:43 +0530383/* SEI params deocde */
384typedef struct {
385 UWORD8 u1_sei_mdcv_params_present_flag;
386
387 UWORD8 u1_sei_cll_params_present_flag;
388
389 UWORD8 u1_sei_ave_params_present_flag;
390
391 UWORD8 u1_sei_ccv_params_present_flag;
392
393}ivd_sei_decode_op_t;
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530394
395/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_DECODE */
396
397
398typedef struct {
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530399 /**
400 * u4_size of the structure
401 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530402 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530403
404 /**
405 * e_cmd
406 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530407 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530408
409 /**
410 * u4_ts
411 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530412 UWORD32 u4_ts;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530413
414 /**
415 * u4_num_Bytes
416 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530417 UWORD32 u4_num_Bytes;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530418
419 /**
420 * pv_stream_buffer
421 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530422 void *pv_stream_buffer;
423
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530424 /**
425 * output buffer desc
426 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530427 ivd_out_bufdesc_t s_out_buffer;
428
429}ivd_video_decode_ip_t;
430
431
432typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530433 /**
434 * u4_size of the structure
435 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530436 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530437
438 /**
439 * u4_error_code
440 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530441 UWORD32 u4_error_code;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530442
443 /**
444 * num_bytes_consumed
445 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530446 UWORD32 u4_num_bytes_consumed;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530447
448 /**
449 * pic_wd
450 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530451 UWORD32 u4_pic_wd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530452
453 /**
454 * pic_ht
455 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530456 UWORD32 u4_pic_ht;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530457
458 /**
459 * pic_type
460 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530461 IV_PICTURE_CODING_TYPE_T e_pic_type;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530462
463 /**
464 * frame_decoded_flag
465 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530466 UWORD32 u4_frame_decoded_flag;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530467
468 /**
469 * new_seq
470 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530471 UWORD32 u4_new_seq;
472
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530473 /**
474 * output_present
475 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530476 UWORD32 u4_output_present;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530477
478 /**
479 * progressive_frame_flag
480 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530481 UWORD32 u4_progressive_frame_flag;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530482
483 /**
484 * is_ref_flag
485 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530486 UWORD32 u4_is_ref_flag;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530487
488 /**
489 * output_format
490 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530491 IV_COLOR_FORMAT_T e_output_format;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530492
493 /**
494 * disp_frm_buf
495 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530496 iv_yuv_buf_t s_disp_frm_buf;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530497
498 /**
Chamarthi Kishoread2eaf82019-10-01 11:59:43 +0530499 * sei params o/p struct
500 */
501 ivd_sei_decode_op_t s_sei_decode_op;
502
503 /**
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530504 * fld_type
505 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530506 IV_FLD_TYPE_T e4_fld_type;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530507
508 /**
509 * ts
510 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530511 UWORD32 u4_ts;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530512
513 /**
514 * disp_buf_id
515 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530516 UWORD32 u4_disp_buf_id;
Rakesh Kumarfe5a6ad2019-03-07 12:30:09 +0530517
518 /**
519 * reorder_depth
520 */
521 WORD32 i4_reorder_depth;
522
523 /**
524 * disp_buf_id
525 */
526 WORD32 i4_display_index;
527
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530528}ivd_video_decode_op_t;
529
530
531/*****************************************************************************/
532/* Get Display Frame */
533/*****************************************************************************/
534
535
536/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_GET_DISPLAY_FRAME */
537
538typedef struct
539{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530540 /**
541 * u4_size of the structure
542 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530543 UWORD32 u4_size;
544
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530545 /**
546 * e_cmd
547 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530548 IVD_API_COMMAND_TYPE_T e_cmd;
549
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530550 /**
551 * output buffer desc
552 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530553 ivd_out_bufdesc_t s_out_buffer;
554
555}ivd_get_display_frame_ip_t;
556
557
558typedef struct
559{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530560 /**
561 * u4_size of the structure
562 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530563 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530564
565 /**
566 * error_code
567 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530568 UWORD32 u4_error_code;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530569
570 /**
571 * progressive_frame_flag
572 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530573 UWORD32 u4_progressive_frame_flag;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530574
575 /**
576 * pic_type
577 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530578 IV_PICTURE_CODING_TYPE_T e_pic_type;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530579
580 /**
581 * is_ref_flag
582 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530583 UWORD32 u4_is_ref_flag;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530584
585 /**
586 * output_format
587 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530588 IV_COLOR_FORMAT_T e_output_format;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530589
590 /**
591 * disp_frm_buf
592 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530593 iv_yuv_buf_t s_disp_frm_buf;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530594
595 /**
596 * fld_type
597 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530598 IV_FLD_TYPE_T e4_fld_type;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530599
600 /**
601 * ts
602 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530603 UWORD32 u4_ts;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530604
605 /**
606 * disp_buf_id
607 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530608 UWORD32 u4_disp_buf_id;
609}ivd_get_display_frame_op_t;
610
611/*****************************************************************************/
612/* Set Display Frame */
613/*****************************************************************************/
614
615
616/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_SET_DISPLAY_FRAME */
617
618typedef struct
619{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530620 /**
621 * u4_size of the structure
622 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530623 UWORD32 u4_size;
624
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530625 /**
626 * cmd
627 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530628 IVD_API_COMMAND_TYPE_T e_cmd;
629
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530630 /**
631 * num_disp_bufs
632 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530633 UWORD32 num_disp_bufs;
634
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530635 /**
636 * output buffer desc
637 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530638 ivd_out_bufdesc_t s_disp_buffer[IVD_VIDDEC_MAX_IO_BUFFERS];
639
640}ivd_set_display_frame_ip_t;
641
642
643typedef struct
644{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530645 /**
646 * u4_size of the structure
647 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530648 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530649
650 /**
651 * error code
652 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530653 UWORD32 u4_error_code;
654}ivd_set_display_frame_op_t;
655
656
657/*****************************************************************************/
658/* Release Display Frame */
659/*****************************************************************************/
660
661
662/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_SET_DISPLAY_FRAME */
663
664typedef struct
665{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530666 /**
667 * u4_size of the structure
668 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530669 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530670
671 /**
672 * e_cmd
673 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530674 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530675
676 /**
677 * disp_buf_id
678 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530679 UWORD32 u4_disp_buf_id;
680}ivd_rel_display_frame_ip_t;
681
682
683typedef struct
684{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530685 /**
686 * u4_size of the structure
687 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530688 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530689
690 /**
691 * error code
692 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530693 UWORD32 u4_error_code;
694}ivd_rel_display_frame_op_t;
695
696/*****************************************************************************/
697/* Video control Flush */
698/*****************************************************************************/
699/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */
700/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd = IVD_CMD_ctl_FLUSH */
701
702
703
704typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530705 /**
706 * u4_size of the structure
707 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530708 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530709
710 /**
711 * cmd
712 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530713 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530714
715 /**
716 * sub_cmd
717 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530718 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
719}ivd_ctl_flush_ip_t;
720
721
722typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530723 /**
724 * u4_size of the structure
725 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530726 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530727
728 /**
729 * error code
730 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530731 UWORD32 u4_error_code;
732}ivd_ctl_flush_op_t;
733
734/*****************************************************************************/
735/* Video control reset */
736/*****************************************************************************/
737/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */
738/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd = IVD_CMD_ctl_RESET */
739
740
741typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530742 /**
743 * u4_size of the structure
744 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530745 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530746
747 /**
748 * cmd
749 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530750 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530751
752 /**
753 * sub_cmd
754 */
755
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530756 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
757}ivd_ctl_reset_ip_t;
758
759
760typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530761 /**
762 * u4_size of the structure
763 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530764 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530765
766 /**
767 * error code
768 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530769 UWORD32 u4_error_code;
770}ivd_ctl_reset_op_t;
771
772
773/*****************************************************************************/
774/* Video control Set Params */
775/*****************************************************************************/
776/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */
777/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_SETPARAMS */
778/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_SETDEFAULT */
779
780
781
782typedef struct {
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530783 /**
784 * u4_size of the structure
785 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530786 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530787
788 /**
789 * cmd
790 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530791 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530792
793 /**
794 * sub_cmd
795 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530796 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530797
798 /**
799 * vid_dec_mode
800 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530801 IVD_VIDEO_DECODE_MODE_T e_vid_dec_mode;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530802
803 /**
804 * disp_wd
805 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530806 UWORD32 u4_disp_wd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530807
808 /**
809 * frm_skip_mode
810 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530811 IVD_FRAME_SKIP_MODE_T e_frm_skip_mode;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530812
813 /**
814 * frm_out_mode
815 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530816 IVD_DISPLAY_FRAME_OUT_MODE_T e_frm_out_mode;
817}ivd_ctl_set_config_ip_t;
818
819
820typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530821 /**
822 * u4_size of the structure
823 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530824 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530825
826 /**
827 * u4_error_code
828 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530829 UWORD32 u4_error_code;
830}ivd_ctl_set_config_op_t;
831
832/*****************************************************************************/
833/* Video control:Get Buf Info */
834/*****************************************************************************/
835
836/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */
837/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETBUFINFO */
838
839
840typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530841 /**
842 * u4_size of the structure
843 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530844 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530845
846 /**
847 * e_cmd
848 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530849 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530850
851 /**
852 * sub_cmd
853 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530854 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
855}ivd_ctl_getbufinfo_ip_t;
856
857
858typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530859 /**
860 * u4_size of the structure
861 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530862 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530863
864 /**
865 * error code
866 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530867 UWORD32 u4_error_code;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530868
869 /**
870 * no of display buffer sets required by codec
871 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530872 UWORD32 u4_num_disp_bufs;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530873
874 /**
875 * no of input buffers required for codec
876 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530877 UWORD32 u4_min_num_in_bufs;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530878
879 /**
880 * no of output buffers required for codec
881 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530882 UWORD32 u4_min_num_out_bufs;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530883
884 /**
885 * sizes of each input buffer required
886 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530887 UWORD32 u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530888
889 /**
890 * sizes of each output buffer required
891 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530892 UWORD32 u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
893}ivd_ctl_getbufinfo_op_t;
894
895
896/*****************************************************************************/
897/* Video control:Getstatus Call */
898/*****************************************************************************/
899
900
901/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */
902/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETPARAMS */
903
904
905typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530906 /**
907 * u4_size of the structure
908 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530909 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530910
911 /**
912 * cmd
913 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530914 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530915
916 /**
917 * sub_cmd
918 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530919 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
920}ivd_ctl_getstatus_ip_t;
921
922
923typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530924
925 /**
926 * u4_size of the structure
927 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530928 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530929
930 /**
931 * error code
932 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530933 UWORD32 u4_error_code;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530934
935 /**
936 * no of display buffer sets required by codec
937 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530938 UWORD32 u4_num_disp_bufs;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530939
940 /**
941 * u4_pic_ht
942 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530943 UWORD32 u4_pic_ht;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530944
945 /**
946 * u4_pic_wd
947 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530948 UWORD32 u4_pic_wd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530949
950 /**
951 * frame_rate
952 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530953 UWORD32 u4_frame_rate;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530954
955 /**
956 * u4_bit_rate
957 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530958 UWORD32 u4_bit_rate;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530959
960 /**
961 * content_type
962 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530963 IV_CONTENT_TYPE_T e_content_type;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530964
965 /**
966 * output_chroma_format
967 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530968 IV_COLOR_FORMAT_T e_output_chroma_format;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530969
970 /**
971 * no of input buffers required for codec
972 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530973 UWORD32 u4_min_num_in_bufs;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530974
975 /**
976 * no of output buffers required for codec
977 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530978 UWORD32 u4_min_num_out_bufs;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530979
980 /**
981 * sizes of each input buffer required
982 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530983 UWORD32 u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530984
985 /**
986 * sizes of each output buffer required
987 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530988 UWORD32 u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
989}ivd_ctl_getstatus_op_t;
990
991
992/*****************************************************************************/
993/* Video control:Get Version Info */
994/*****************************************************************************/
995
996/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */
997/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETVERSION */
998
999
1000typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +05301001 /**
1002 * u4_size of the structure
1003 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +05301004 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +05301005
1006 /**
1007 * cmd
1008 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +05301009 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +05301010
1011 /**
1012 * sub_cmd
1013 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +05301014 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +05301015
1016 /**
1017 * pv_version_buffer
1018 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +05301019 void *pv_version_buffer;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +05301020
1021 /**
1022 * version_buffer_size
1023 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +05301024 UWORD32 u4_version_buffer_size;
1025}ivd_ctl_getversioninfo_ip_t;
1026
1027
1028typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +05301029 /**
1030 * u4_size of the structure
1031 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +05301032 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +05301033
1034 /**
1035 * error code
1036 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +05301037 UWORD32 u4_error_code;
1038}ivd_ctl_getversioninfo_op_t;
1039
1040#endif /* __IVD_H__ */
1041