blob: 8d304bcead82f1be49befd24412ec6b1fd5b7b8d [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
46/*****************************************************************************/
47/* Typedefs */
48/*****************************************************************************/
49
50/*****************************************************************************/
51/* Enums */
52/*****************************************************************************/
53
54/* IVD_ARCH_T: Architecture Enumeration */
55typedef enum
56{
57 ARCH_NA = 0x7FFFFFFF,
58 ARCH_ARM_NONEON = 0x0,
59 ARCH_ARM_A9Q,
60 ARCH_ARM_A9A,
61 ARCH_ARM_A9,
62 ARCH_ARM_A7,
63 ARCH_ARM_A5,
64 ARCH_ARM_A15,
65 ARCH_ARM_NEONINTR,
66 ARCH_ARMV8_GENERIC,
67 ARCH_X86_GENERIC = 0x100,
68 ARCH_X86_SSSE3,
69 ARCH_X86_SSE42,
70 ARCH_X86_AVX2,
71 ARCH_MIPS_GENERIC = 0x200,
72 ARCH_MIPS_32
73}IVD_ARCH_T;
74
75/* IVD_SOC_T: SOC Enumeration */
76typedef enum
77{
78 SOC_NA = 0x7FFFFFFF,
79 SOC_GENERIC = 0x0,
80 SOC_HISI_37X = 0x100,
81}IVD_SOC_T;
82
83/* IVD_FRAME_SKIP_MODE_T:Skip mode Enumeration */
84
85typedef enum {
86 IVD_SKIP_NONE = 0x7FFFFFFF,
87 IVD_SKIP_P = 0x1,
88 IVD_SKIP_B = 0x2,
89 IVD_SKIP_I = 0x3,
90 IVD_SKIP_IP = 0x4,
91 IVD_SKIP_IB = 0x5,
92 IVD_SKIP_PB = 0x6,
93 IVD_SKIP_IPB = 0x7,
94 IVD_SKIP_IDR = 0x8,
95 IVD_SKIP_DEFAULT = IVD_SKIP_NONE,
96}IVD_FRAME_SKIP_MODE_T;
97
98/* IVD_VIDEO_DECODE_MODE_T: Set decoder to decode either frame worth of data */
99/* or only header worth of data */
100
101typedef enum {
102 IVD_DECODE_MODE_NA = 0x7FFFFFFF,
103
104 /* This enables the codec to process all decodable units */
105 IVD_DECODE_FRAME = 0x0,
106
107 /* This enables the codec to decode header only */
108 IVD_DECODE_HEADER = 0x1,
109
110
111
112}IVD_VIDEO_DECODE_MODE_T;
113
114
115/* IVD_DISPLAY_FRAME_OUT_MODE_T: Video Display Frame Output Mode */
116
117typedef enum {
118
119 IVD_DISPLAY_ORDER_NA = 0x7FFFFFFF,
120 /* To set codec to fill output buffers in display order */
121 IVD_DISPLAY_FRAME_OUT = 0x0,
122
123 /* To set codec to fill output buffers in decode order */
124 IVD_DECODE_FRAME_OUT = 0x1,
125}IVD_DISPLAY_FRAME_OUT_MODE_T;
126
127
128/* IVD_API_COMMAND_TYPE_T:API command type */
129typedef enum {
130 IVD_CMD_VIDEO_NA = 0x7FFFFFFF,
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530131 IVD_CMD_CREATE = IV_CMD_DUMMY_ELEMENT + 1,
132 IVD_CMD_DELETE,
133 IVD_CMD_VIDEO_CTL,
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530134 IVD_CMD_VIDEO_DECODE,
135 IVD_CMD_GET_DISPLAY_FRAME,
136 IVD_CMD_REL_DISPLAY_FRAME,
137 IVD_CMD_SET_DISPLAY_FRAME
138}IVD_API_COMMAND_TYPE_T;
139
140/* IVD_CONTROL_API_COMMAND_TYPE_T: Video Control API command type */
141
142typedef enum {
143 IVD_CMD_NA = 0x7FFFFFFF,
144 IVD_CMD_CTL_GETPARAMS = 0x0,
145 IVD_CMD_CTL_SETPARAMS = 0x1,
146 IVD_CMD_CTL_RESET = 0x2,
147 IVD_CMD_CTL_SETDEFAULT = 0x3,
148 IVD_CMD_CTL_FLUSH = 0x4,
149 IVD_CMD_CTL_GETBUFINFO = 0x5,
150 IVD_CMD_CTL_GETVERSION = 0x6,
151 IVD_CMD_CTL_CODEC_SUBCMD_START = 0x7
152}IVD_CONTROL_API_COMMAND_TYPE_T;
153
154
155/* IVD_ERROR_BITS_T: A UWORD32 container will be used for reporting the error*/
156/* code to the application. The first 8 bits starting from LSB have been */
157/* reserved for the codec to report internal error details. The rest of the */
158/* bits will be generic for all video decoders and each bit has an associated*/
159/* meaning as mentioned below. The unused bit fields are reserved for future */
160/* extenstions and will be zero in the current implementation */
161
162typedef enum {
163 /* Bit 8 - Applied concealment. */
164 IVD_APPLIEDCONCEALMENT = 0x8,
165 /* Bit 9 - Insufficient input data. */
166 IVD_INSUFFICIENTDATA = 0x9,
167 /* Bit 10 - Data problem/corruption. */
168 IVD_CORRUPTEDDATA = 0xa,
169 /* Bit 11 - Header problem/corruption. */
170 IVD_CORRUPTEDHEADER = 0xb,
171 /* Bit 12 - Unsupported feature/parameter in input. */
172 IVD_UNSUPPORTEDINPUT = 0xc,
173 /* Bit 13 - Unsupported input parameter orconfiguration. */
174 IVD_UNSUPPORTEDPARAM = 0xd,
175 /* Bit 14 - Fatal error (stop the codec).If there is an */
176 /* error and this bit is not set, the error is a recoverable one. */
177 IVD_FATALERROR = 0xe,
178 /* Bit 15 - Invalid bitstream. Applies when Bitstream/YUV frame */
179 /* buffer for encode/decode call is made with non-valid or zero u4_size */
180 /* data */
181 IVD_INVALID_BITSTREAM = 0xf,
182 /* Bit 16 */
183 IVD_INCOMPLETE_BITSTREAM = 0x10,
184 IVD_ERROR_BITS_T_DUMMY_ELEMENT = 0x7FFFFFFF
185}IVD_ERROR_BITS_T;
186
187
188/* IVD_CONTROL_API_COMMAND_TYPE_T: Video Control API command type */
189typedef enum {
190 IVD_ERROR_NONE = 0x0,
191 IVD_NUM_MEM_REC_FAILED = 0x1,
192 IVD_NUM_REC_NOT_SUFFICIENT = 0x2,
193 IVD_FILL_MEM_REC_FAILED = 0x3,
194 IVD_REQUESTED_WIDTH_NOT_SUPPPORTED = 0x4,
195 IVD_REQUESTED_HEIGHT_NOT_SUPPPORTED = 0x5,
196 IVD_INIT_DEC_FAILED = 0x6,
197 IVD_INIT_DEC_NOT_SUFFICIENT = 0x7,
198 IVD_INIT_DEC_WIDTH_NOT_SUPPPORTED = 0x8,
199 IVD_INIT_DEC_HEIGHT_NOT_SUPPPORTED = 0x9,
200 IVD_INIT_DEC_MEM_NOT_ALIGNED = 0xa,
201 IVD_INIT_DEC_COL_FMT_NOT_SUPPORTED = 0xb,
202 IVD_INIT_DEC_MEM_REC_NOT_SUFFICIENT = 0xc,
203 IVD_GET_VERSION_DATABUFFER_SZ_INSUFFICIENT = 0xd,
204 IVD_BUFFER_SIZE_SET_TO_ZERO = 0xe,
205 IVD_UNEXPECTED_END_OF_STREAM = 0xf,
206 IVD_SEQUENCE_HEADER_NOT_DECODED = 0x10,
207 IVD_STREAM_WIDTH_HEIGHT_NOT_SUPPORTED = 0x11,
208 IVD_MAX_FRAME_LIMIT_REACHED = 0x12,
209 IVD_IP_API_STRUCT_SIZE_INCORRECT = 0x13,
210 IVD_OP_API_STRUCT_SIZE_INCORRECT = 0x14,
211 IVD_HANDLE_NULL = 0x15,
212 IVD_HANDLE_STRUCT_SIZE_INCORRECT = 0x16,
213 IVD_INVALID_HANDLE_NULL = 0x17,
214 IVD_INVALID_API_CMD = 0x18,
215 IVD_UNSUPPORTED_API_CMD = 0x19,
216 IVD_MEM_REC_STRUCT_SIZE_INCORRECT = 0x1a,
217 IVD_DISP_FRM_ZERO_OP_BUFS = 0x1b,
218 IVD_DISP_FRM_OP_BUF_NULL = 0x1c,
219 IVD_DISP_FRM_ZERO_OP_BUF_SIZE = 0x1d,
220 IVD_DEC_FRM_BS_BUF_NULL = 0x1e,
221 IVD_SET_CONFG_INVALID_DEC_MODE = 0x1f,
222 IVD_SET_CONFG_UNSUPPORTED_DISP_WIDTH = 0x20,
223 IVD_RESET_FAILED = 0x21,
224 IVD_INIT_DEC_MEM_REC_OVERLAP_ERR = 0x22,
225 IVD_INIT_DEC_MEM_REC_BASE_NULL = 0x23,
226 IVD_INIT_DEC_MEM_REC_ALIGNMENT_ERR = 0x24,
227 IVD_INIT_DEC_MEM_REC_INSUFFICIENT_SIZE = 0x25,
228 IVD_INIT_DEC_MEM_REC_INCORRECT_TYPE = 0x26,
229 IVD_DEC_NUMBYTES_INV = 0x27,
230 IVD_DEC_REF_BUF_NULL = 0x28,
231 IVD_DEC_FRM_SKIPPED = 0x29,
232 IVD_RES_CHANGED = 0x2a,
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530233 IVD_MEM_ALLOC_FAILED = 0x2b,
Hamsalekha Scaab4fe2015-05-07 16:38:07 +0530234 IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS = 0xD0,
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530235}IVD_ERROR_CODES_T;
236
237
238/*****************************************************************************/
239/* Structure */
240/*****************************************************************************/
241/* structure for passing output buffers to codec during get display buffer */
242/* call */
243typedef struct {
244
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530245 /**
246 * number of output buffers
247 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530248 UWORD32 u4_num_bufs;
249
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530250 /**
251 *list of pointers to output buffers
252 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530253 UWORD8 *pu1_bufs[IVD_VIDDEC_MAX_IO_BUFFERS];
254
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530255 /**
256 * sizes of each output buffer
257 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530258 UWORD32 u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
259
260}ivd_out_bufdesc_t;
261
262/*****************************************************************************/
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530263/* Create decoder */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530264/*****************************************************************************/
265
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530266/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_CREATE */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530267
268
269typedef struct {
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530270 /**
271 * u4_size of the structure
272 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530273 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530274
275 /**
276 * e_cmd
277 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530278 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530279
280 /**
281 * format in which codec has to give out frame data for display
282 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530283 IV_COLOR_FORMAT_T e_output_format;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530284
285 /**
286 * Flag to indicate shared display buffer mode
287 */
288 UWORD32 u4_share_disp_buf;
289
290 /**
291 * Pointer to a function for aligned allocation.
292 */
293 void *(*pf_aligned_alloc)(void *pv_mem_ctxt, WORD32 alignment, WORD32 size);
294
295 /**
296 * Pointer to a function for aligned free.
297 */
298 void (*pf_aligned_free)(void *pv_mem_ctxt, void *pv_buf);
299
300 /**
301 * Pointer to memory context that is needed during alloc/free for custom
302 * memory managers. This will be passed as first argument to pf_aligned_alloc and
303 * pf_aligned_free.
304 * If application is using standard memory functions like
305 * malloc/aligned_malloc/memalign/free/aligned_free,
306 * then this is not needed and can be set to NULL
307 */
308 void *pv_mem_ctxt;
309
310}ivd_create_ip_t;
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530311
312
313typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530314 /**
315 * u4_size of the structure
316 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530317 UWORD32 u4_size;
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530318
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530319 /**
320 * u4_error_code
321 */
322 UWORD32 u4_error_code;
323
324 /**
325 * Codec Handle
326 */
327 void *pv_handle;
328
329}ivd_create_op_t;
330
331
332/*****************************************************************************/
333/* Delete decoder */
334/*****************************************************************************/
335
336/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_DELETE */
337
338
339
340typedef struct {
341 /**
342 * u4_size of the structure
343 */
344 UWORD32 u4_size;
345
346 /**
347 * cmd
348 */
349 IVD_API_COMMAND_TYPE_T e_cmd;
350
351}ivd_delete_ip_t;
352
353
354typedef struct{
355 /**
356 * u4_size of the structure
357 */
358 UWORD32 u4_size;
359
360 /**
361 * error_code
362 */
363 UWORD32 u4_error_code;
364
365}ivd_delete_op_t;
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530366
367/*****************************************************************************/
368/* Video Decode */
369/*****************************************************************************/
370
371
372/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_DECODE */
373
374
375typedef struct {
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530376 /**
377 * u4_size of the structure
378 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530379 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530380
381 /**
382 * e_cmd
383 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530384 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530385
386 /**
387 * u4_ts
388 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530389 UWORD32 u4_ts;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530390
391 /**
392 * u4_num_Bytes
393 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530394 UWORD32 u4_num_Bytes;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530395
396 /**
397 * pv_stream_buffer
398 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530399 void *pv_stream_buffer;
400
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530401 /**
402 * output buffer desc
403 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530404 ivd_out_bufdesc_t s_out_buffer;
405
406}ivd_video_decode_ip_t;
407
408
409typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530410 /**
411 * u4_size of the structure
412 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530413 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530414
415 /**
416 * u4_error_code
417 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530418 UWORD32 u4_error_code;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530419
420 /**
421 * num_bytes_consumed
422 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530423 UWORD32 u4_num_bytes_consumed;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530424
425 /**
426 * pic_wd
427 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530428 UWORD32 u4_pic_wd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530429
430 /**
431 * pic_ht
432 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530433 UWORD32 u4_pic_ht;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530434
435 /**
436 * pic_type
437 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530438 IV_PICTURE_CODING_TYPE_T e_pic_type;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530439
440 /**
441 * frame_decoded_flag
442 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530443 UWORD32 u4_frame_decoded_flag;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530444
445 /**
446 * new_seq
447 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530448 UWORD32 u4_new_seq;
449
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530450 /**
451 * output_present
452 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530453 UWORD32 u4_output_present;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530454
455 /**
456 * progressive_frame_flag
457 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530458 UWORD32 u4_progressive_frame_flag;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530459
460 /**
461 * is_ref_flag
462 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530463 UWORD32 u4_is_ref_flag;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530464
465 /**
466 * output_format
467 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530468 IV_COLOR_FORMAT_T e_output_format;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530469
470 /**
471 * disp_frm_buf
472 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530473 iv_yuv_buf_t s_disp_frm_buf;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530474
475 /**
476 * fld_type
477 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530478 IV_FLD_TYPE_T e4_fld_type;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530479
480 /**
481 * ts
482 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530483 UWORD32 u4_ts;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530484
485 /**
486 * disp_buf_id
487 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530488 UWORD32 u4_disp_buf_id;
489}ivd_video_decode_op_t;
490
491
492/*****************************************************************************/
493/* Get Display Frame */
494/*****************************************************************************/
495
496
497/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_GET_DISPLAY_FRAME */
498
499typedef struct
500{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530501 /**
502 * u4_size of the structure
503 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530504 UWORD32 u4_size;
505
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530506 /**
507 * e_cmd
508 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530509 IVD_API_COMMAND_TYPE_T e_cmd;
510
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530511 /**
512 * output buffer desc
513 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530514 ivd_out_bufdesc_t s_out_buffer;
515
516}ivd_get_display_frame_ip_t;
517
518
519typedef struct
520{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530521 /**
522 * u4_size of the structure
523 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530524 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530525
526 /**
527 * error_code
528 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530529 UWORD32 u4_error_code;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530530
531 /**
532 * progressive_frame_flag
533 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530534 UWORD32 u4_progressive_frame_flag;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530535
536 /**
537 * pic_type
538 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530539 IV_PICTURE_CODING_TYPE_T e_pic_type;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530540
541 /**
542 * is_ref_flag
543 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530544 UWORD32 u4_is_ref_flag;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530545
546 /**
547 * output_format
548 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530549 IV_COLOR_FORMAT_T e_output_format;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530550
551 /**
552 * disp_frm_buf
553 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530554 iv_yuv_buf_t s_disp_frm_buf;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530555
556 /**
557 * fld_type
558 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530559 IV_FLD_TYPE_T e4_fld_type;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530560
561 /**
562 * ts
563 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530564 UWORD32 u4_ts;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530565
566 /**
567 * disp_buf_id
568 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530569 UWORD32 u4_disp_buf_id;
570}ivd_get_display_frame_op_t;
571
572/*****************************************************************************/
573/* Set Display Frame */
574/*****************************************************************************/
575
576
577/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_SET_DISPLAY_FRAME */
578
579typedef struct
580{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530581 /**
582 * u4_size of the structure
583 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530584 UWORD32 u4_size;
585
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530586 /**
587 * cmd
588 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530589 IVD_API_COMMAND_TYPE_T e_cmd;
590
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530591 /**
592 * num_disp_bufs
593 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530594 UWORD32 num_disp_bufs;
595
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530596 /**
597 * output buffer desc
598 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530599 ivd_out_bufdesc_t s_disp_buffer[IVD_VIDDEC_MAX_IO_BUFFERS];
600
601}ivd_set_display_frame_ip_t;
602
603
604typedef struct
605{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530606 /**
607 * u4_size of the structure
608 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530609 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530610
611 /**
612 * error code
613 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530614 UWORD32 u4_error_code;
615}ivd_set_display_frame_op_t;
616
617
618/*****************************************************************************/
619/* Release Display Frame */
620/*****************************************************************************/
621
622
623/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_SET_DISPLAY_FRAME */
624
625typedef struct
626{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530627 /**
628 * u4_size of the structure
629 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530630 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530631
632 /**
633 * e_cmd
634 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530635 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530636
637 /**
638 * disp_buf_id
639 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530640 UWORD32 u4_disp_buf_id;
641}ivd_rel_display_frame_ip_t;
642
643
644typedef struct
645{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530646 /**
647 * u4_size of the structure
648 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530649 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530650
651 /**
652 * error code
653 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530654 UWORD32 u4_error_code;
655}ivd_rel_display_frame_op_t;
656
657/*****************************************************************************/
658/* Video control Flush */
659/*****************************************************************************/
660/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */
661/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd = IVD_CMD_ctl_FLUSH */
662
663
664
665typedef struct{
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 * 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 * sub_cmd
678 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530679 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
680}ivd_ctl_flush_ip_t;
681
682
683typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530684 /**
685 * u4_size of the structure
686 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530687 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530688
689 /**
690 * error code
691 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530692 UWORD32 u4_error_code;
693}ivd_ctl_flush_op_t;
694
695/*****************************************************************************/
696/* Video control reset */
697/*****************************************************************************/
698/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */
699/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd = IVD_CMD_ctl_RESET */
700
701
702typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530703 /**
704 * u4_size of the structure
705 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530706 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530707
708 /**
709 * cmd
710 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530711 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530712
713 /**
714 * sub_cmd
715 */
716
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530717 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
718}ivd_ctl_reset_ip_t;
719
720
721typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530722 /**
723 * u4_size of the structure
724 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530725 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530726
727 /**
728 * error code
729 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530730 UWORD32 u4_error_code;
731}ivd_ctl_reset_op_t;
732
733
734/*****************************************************************************/
735/* Video control Set Params */
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_SETPARAMS */
739/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_SETDEFAULT */
740
741
742
743typedef struct {
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530744 /**
745 * u4_size of the structure
746 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530747 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530748
749 /**
750 * cmd
751 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530752 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530753
754 /**
755 * sub_cmd
756 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530757 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530758
759 /**
760 * vid_dec_mode
761 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530762 IVD_VIDEO_DECODE_MODE_T e_vid_dec_mode;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530763
764 /**
765 * disp_wd
766 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530767 UWORD32 u4_disp_wd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530768
769 /**
770 * frm_skip_mode
771 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530772 IVD_FRAME_SKIP_MODE_T e_frm_skip_mode;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530773
774 /**
775 * frm_out_mode
776 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530777 IVD_DISPLAY_FRAME_OUT_MODE_T e_frm_out_mode;
778}ivd_ctl_set_config_ip_t;
779
780
781typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530782 /**
783 * u4_size of the structure
784 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530785 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530786
787 /**
788 * u4_error_code
789 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530790 UWORD32 u4_error_code;
791}ivd_ctl_set_config_op_t;
792
793/*****************************************************************************/
794/* Video control:Get Buf Info */
795/*****************************************************************************/
796
797/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */
798/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETBUFINFO */
799
800
801typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530802 /**
803 * u4_size of the structure
804 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530805 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530806
807 /**
808 * e_cmd
809 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530810 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530811
812 /**
813 * sub_cmd
814 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530815 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
816}ivd_ctl_getbufinfo_ip_t;
817
818
819typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530820 /**
821 * u4_size of the structure
822 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530823 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530824
825 /**
826 * error code
827 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530828 UWORD32 u4_error_code;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530829
830 /**
831 * no of display buffer sets required by codec
832 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530833 UWORD32 u4_num_disp_bufs;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530834
835 /**
836 * no of input buffers required for codec
837 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530838 UWORD32 u4_min_num_in_bufs;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530839
840 /**
841 * no of output buffers required for codec
842 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530843 UWORD32 u4_min_num_out_bufs;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530844
845 /**
846 * sizes of each input buffer required
847 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530848 UWORD32 u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530849
850 /**
851 * sizes of each output buffer required
852 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530853 UWORD32 u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
854}ivd_ctl_getbufinfo_op_t;
855
856
857/*****************************************************************************/
858/* Video control:Getstatus Call */
859/*****************************************************************************/
860
861
862/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */
863/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETPARAMS */
864
865
866typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530867 /**
868 * u4_size of the structure
869 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530870 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530871
872 /**
873 * cmd
874 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530875 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530876
877 /**
878 * sub_cmd
879 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530880 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
881}ivd_ctl_getstatus_ip_t;
882
883
884typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530885
886 /**
887 * u4_size of the structure
888 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530889 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530890
891 /**
892 * error code
893 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530894 UWORD32 u4_error_code;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530895
896 /**
897 * no of display buffer sets required by codec
898 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530899 UWORD32 u4_num_disp_bufs;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530900
901 /**
902 * u4_pic_ht
903 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530904 UWORD32 u4_pic_ht;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530905
906 /**
907 * u4_pic_wd
908 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530909 UWORD32 u4_pic_wd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530910
911 /**
912 * frame_rate
913 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530914 UWORD32 u4_frame_rate;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530915
916 /**
917 * u4_bit_rate
918 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530919 UWORD32 u4_bit_rate;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530920
921 /**
922 * content_type
923 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530924 IV_CONTENT_TYPE_T e_content_type;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530925
926 /**
927 * output_chroma_format
928 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530929 IV_COLOR_FORMAT_T e_output_chroma_format;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530930
931 /**
932 * no of input buffers required for codec
933 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530934 UWORD32 u4_min_num_in_bufs;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530935
936 /**
937 * no of output buffers required for codec
938 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530939 UWORD32 u4_min_num_out_bufs;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530940
941 /**
942 * sizes of each input buffer required
943 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530944 UWORD32 u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530945
946 /**
947 * sizes of each output buffer required
948 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530949 UWORD32 u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
950}ivd_ctl_getstatus_op_t;
951
952
953/*****************************************************************************/
954/* Video control:Get Version Info */
955/*****************************************************************************/
956
957/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_CTL */
958/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETVERSION */
959
960
961typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530962 /**
963 * u4_size of the structure
964 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530965 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530966
967 /**
968 * cmd
969 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530970 IVD_API_COMMAND_TYPE_T e_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530971
972 /**
973 * sub_cmd
974 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530975 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530976
977 /**
978 * pv_version_buffer
979 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530980 void *pv_version_buffer;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530981
982 /**
983 * version_buffer_size
984 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530985 UWORD32 u4_version_buffer_size;
986}ivd_ctl_getversioninfo_ip_t;
987
988
989typedef struct{
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530990 /**
991 * u4_size of the structure
992 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530993 UWORD32 u4_size;
Harish Mahendrakar34b3e472015-08-04 09:55:15 +0530994
995 /**
996 * error code
997 */
Hamsalekha S8d3d3032015-03-13 21:24:58 +0530998 UWORD32 u4_error_code;
999}ivd_ctl_getversioninfo_op_t;
1000
1001#endif /* __IVD_H__ */
1002