1/******************************************************************************
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*/
20/**
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*/
38
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,
131    IVD_CMD_VIDEO_CTL                         = IV_CMD_DUMMY_ELEMENT + 1,
132    IVD_CMD_VIDEO_DECODE,
133    IVD_CMD_GET_DISPLAY_FRAME,
134    IVD_CMD_REL_DISPLAY_FRAME,
135    IVD_CMD_SET_DISPLAY_FRAME
136}IVD_API_COMMAND_TYPE_T;
137
138/* IVD_CONTROL_API_COMMAND_TYPE_T: Video Control API command type            */
139
140typedef enum {
141    IVD_CMD_NA                          = 0x7FFFFFFF,
142    IVD_CMD_CTL_GETPARAMS               = 0x0,
143    IVD_CMD_CTL_SETPARAMS               = 0x1,
144    IVD_CMD_CTL_RESET                   = 0x2,
145    IVD_CMD_CTL_SETDEFAULT              = 0x3,
146    IVD_CMD_CTL_FLUSH                   = 0x4,
147    IVD_CMD_CTL_GETBUFINFO              = 0x5,
148    IVD_CMD_CTL_GETVERSION              = 0x6,
149    IVD_CMD_CTL_CODEC_SUBCMD_START      = 0x7
150}IVD_CONTROL_API_COMMAND_TYPE_T;
151
152
153/* IVD_ERROR_BITS_T: A UWORD32 container will be used for reporting the error*/
154/* code to the application. The first 8 bits starting from LSB have been     */
155/* reserved for the codec to report internal error details. The rest of the  */
156/* bits will be generic for all video decoders and each bit has an associated*/
157/* meaning as mentioned below. The unused bit fields are reserved for future */
158/* extenstions and will be zero in the current implementation                */
159
160typedef enum {
161    /* Bit 8  - Applied concealment.                                         */
162    IVD_APPLIEDCONCEALMENT                      = 0x8,
163    /* Bit 9 - Insufficient input data.                                     */
164    IVD_INSUFFICIENTDATA                        = 0x9,
165    /* Bit 10 - Data problem/corruption.                                     */
166    IVD_CORRUPTEDDATA                           = 0xa,
167    /* Bit 11 - Header problem/corruption.                                   */
168    IVD_CORRUPTEDHEADER                         = 0xb,
169    /* Bit 12 - Unsupported feature/parameter in input.                      */
170    IVD_UNSUPPORTEDINPUT                        = 0xc,
171    /* Bit 13 - Unsupported input parameter orconfiguration.                 */
172    IVD_UNSUPPORTEDPARAM                        = 0xd,
173    /* Bit 14 - Fatal error (stop the codec).If there is an                  */
174    /* error and this bit is not set, the error is a recoverable one.        */
175    IVD_FATALERROR                              = 0xe,
176    /* Bit 15 - Invalid bitstream. Applies when Bitstream/YUV frame          */
177    /* buffer for encode/decode call is made with non-valid or zero u4_size  */
178    /* data                                                                  */
179    IVD_INVALID_BITSTREAM                       = 0xf,
180    /* Bit 16          */
181    IVD_INCOMPLETE_BITSTREAM                    = 0x10,
182    IVD_ERROR_BITS_T_DUMMY_ELEMENT              = 0x7FFFFFFF
183}IVD_ERROR_BITS_T;
184
185
186/* IVD_CONTROL_API_COMMAND_TYPE_T: Video Control API command type            */
187typedef enum {
188    IVD_ERROR_NONE                              = 0x0,
189    IVD_NUM_MEM_REC_FAILED                      = 0x1,
190    IVD_NUM_REC_NOT_SUFFICIENT                  = 0x2,
191    IVD_FILL_MEM_REC_FAILED                     = 0x3,
192    IVD_REQUESTED_WIDTH_NOT_SUPPPORTED          = 0x4,
193    IVD_REQUESTED_HEIGHT_NOT_SUPPPORTED         = 0x5,
194    IVD_INIT_DEC_FAILED                         = 0x6,
195    IVD_INIT_DEC_NOT_SUFFICIENT                 = 0x7,
196    IVD_INIT_DEC_WIDTH_NOT_SUPPPORTED           = 0x8,
197    IVD_INIT_DEC_HEIGHT_NOT_SUPPPORTED          = 0x9,
198    IVD_INIT_DEC_MEM_NOT_ALIGNED                = 0xa,
199    IVD_INIT_DEC_COL_FMT_NOT_SUPPORTED          = 0xb,
200    IVD_INIT_DEC_MEM_REC_NOT_SUFFICIENT         = 0xc,
201    IVD_GET_VERSION_DATABUFFER_SZ_INSUFFICIENT  = 0xd,
202    IVD_BUFFER_SIZE_SET_TO_ZERO                 = 0xe,
203    IVD_UNEXPECTED_END_OF_STREAM                = 0xf,
204    IVD_SEQUENCE_HEADER_NOT_DECODED             = 0x10,
205    IVD_STREAM_WIDTH_HEIGHT_NOT_SUPPORTED       = 0x11,
206    IVD_MAX_FRAME_LIMIT_REACHED                 = 0x12,
207    IVD_IP_API_STRUCT_SIZE_INCORRECT            = 0x13,
208    IVD_OP_API_STRUCT_SIZE_INCORRECT            = 0x14,
209    IVD_HANDLE_NULL                             = 0x15,
210    IVD_HANDLE_STRUCT_SIZE_INCORRECT            = 0x16,
211    IVD_INVALID_HANDLE_NULL                     = 0x17,
212    IVD_INVALID_API_CMD                         = 0x18,
213    IVD_UNSUPPORTED_API_CMD                     = 0x19,
214    IVD_MEM_REC_STRUCT_SIZE_INCORRECT           = 0x1a,
215    IVD_DISP_FRM_ZERO_OP_BUFS                   = 0x1b,
216    IVD_DISP_FRM_OP_BUF_NULL                    = 0x1c,
217    IVD_DISP_FRM_ZERO_OP_BUF_SIZE               = 0x1d,
218    IVD_DEC_FRM_BS_BUF_NULL                     = 0x1e,
219    IVD_SET_CONFG_INVALID_DEC_MODE              = 0x1f,
220    IVD_SET_CONFG_UNSUPPORTED_DISP_WIDTH        = 0x20,
221    IVD_RESET_FAILED                            = 0x21,
222    IVD_INIT_DEC_MEM_REC_OVERLAP_ERR            = 0x22,
223    IVD_INIT_DEC_MEM_REC_BASE_NULL              = 0x23,
224    IVD_INIT_DEC_MEM_REC_ALIGNMENT_ERR          = 0x24,
225    IVD_INIT_DEC_MEM_REC_INSUFFICIENT_SIZE      = 0x25,
226    IVD_INIT_DEC_MEM_REC_INCORRECT_TYPE         = 0x26,
227    IVD_DEC_NUMBYTES_INV                        = 0x27,
228    IVD_DEC_REF_BUF_NULL                        = 0x28,
229    IVD_DEC_FRM_SKIPPED                         = 0x29,
230    IVD_RES_CHANGED                             = 0x2a,
231    IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS      = 0x300,
232}IVD_ERROR_CODES_T;
233
234
235/*****************************************************************************/
236/* Structure                                                                 */
237/*****************************************************************************/
238/* structure for passing output buffers to codec during get display buffer   */
239/* call                                                                      */
240typedef struct {
241
242    /**
243     * number of output buffers
244     */
245    UWORD32             u4_num_bufs;
246
247    /**
248     *list of pointers to output buffers
249     */
250    UWORD8              *pu1_bufs[IVD_VIDDEC_MAX_IO_BUFFERS];
251
252    /**
253     * sizes of each output buffer
254     */
255    UWORD32             u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
256
257}ivd_out_bufdesc_t;
258
259/*****************************************************************************/
260/*   Initialize decoder                                                      */
261/*****************************************************************************/
262
263/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_INIT                              */
264
265
266typedef struct {
267    /**
268     * u4_size of the structure
269     */
270    UWORD32                                 u4_size;
271
272    /**
273     *  e_cmd
274     */
275    IVD_API_COMMAND_TYPE_T                  e_cmd;
276
277    /**
278     *no memrecords which are allocated on request of codec through fill mem records
279     */
280    UWORD32                                 u4_num_mem_rec;
281    /**
282     * maximum height for which codec should be initialized
283     */
284    UWORD32                                 u4_frm_max_wd;
285    /**
286     * maximum width for which codec should be initialized
287     */
288    UWORD32                                 u4_frm_max_ht;
289    /**
290     * format in which codec has to give out frame data for display
291     */
292    IV_COLOR_FORMAT_T                       e_output_format;
293    /**
294     * pointer to memrecord array, which contains allocated resources
295     */
296    iv_mem_rec_t                            *pv_mem_rec_location;
297}ivd_init_ip_t;
298
299
300typedef struct{
301    /**
302     * u4_size of the structure
303     */
304    UWORD32                                 u4_size;
305
306    /**
307     * u4_error_code
308     */
309    UWORD32                                 u4_error_code;
310}ivd_init_op_t;
311
312
313/*****************************************************************************/
314/*   Video Decode                                                            */
315/*****************************************************************************/
316
317
318/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_DECODE                      */
319
320
321typedef struct {
322    /**
323     * u4_size of the structure
324     */
325    UWORD32                                 u4_size;
326
327    /**
328     * e_cmd
329     */
330    IVD_API_COMMAND_TYPE_T                  e_cmd;
331
332    /**
333     * u4_ts
334     */
335    UWORD32                                 u4_ts;
336
337    /**
338     * u4_num_Bytes
339     */
340    UWORD32                                 u4_num_Bytes;
341
342    /**
343     * pv_stream_buffer
344     */
345    void                                    *pv_stream_buffer;
346
347    /**
348     * output buffer desc
349     */
350    ivd_out_bufdesc_t                       s_out_buffer;
351
352}ivd_video_decode_ip_t;
353
354
355typedef struct{
356    /**
357     * u4_size of the structure
358     */
359    UWORD32                                 u4_size;
360
361    /**
362     * u4_error_code
363     */
364    UWORD32                                 u4_error_code;
365
366    /**
367     * num_bytes_consumed
368     */
369    UWORD32                                 u4_num_bytes_consumed;
370
371    /**
372     * pic_wd
373     */
374    UWORD32                                 u4_pic_wd;
375
376    /**
377     * pic_ht
378     */
379    UWORD32                                 u4_pic_ht;
380
381    /**
382     * pic_type
383     */
384    IV_PICTURE_CODING_TYPE_T                e_pic_type;
385
386    /**
387     * frame_decoded_flag
388     */
389    UWORD32                                 u4_frame_decoded_flag;
390
391    /**
392     * new_seq
393     */
394    UWORD32                                 u4_new_seq;
395
396    /**
397     * output_present
398     */
399    UWORD32                                 u4_output_present;
400
401    /**
402     * progressive_frame_flag
403     */
404    UWORD32                                 u4_progressive_frame_flag;
405
406    /**
407     * is_ref_flag
408     */
409    UWORD32                                 u4_is_ref_flag;
410
411    /**
412     * output_format
413     */
414    IV_COLOR_FORMAT_T                       e_output_format;
415
416    /**
417     * disp_frm_buf
418     */
419    iv_yuv_buf_t                            s_disp_frm_buf;
420
421    /**
422     * fld_type
423     */
424    IV_FLD_TYPE_T                           e4_fld_type;
425
426    /**
427     * ts
428     */
429    UWORD32                                 u4_ts;
430
431    /**
432     * disp_buf_id
433     */
434    UWORD32                                 u4_disp_buf_id;
435}ivd_video_decode_op_t;
436
437
438/*****************************************************************************/
439/*   Get Display Frame                                                       */
440/*****************************************************************************/
441
442
443/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_GET_DISPLAY_FRAME                 */
444
445typedef struct
446{
447    /**
448     * u4_size of the structure
449     */
450    UWORD32                                 u4_size;
451
452    /**
453     * e_cmd
454     */
455    IVD_API_COMMAND_TYPE_T                  e_cmd;
456
457    /**
458     * output buffer desc
459     */
460    ivd_out_bufdesc_t                       s_out_buffer;
461
462}ivd_get_display_frame_ip_t;
463
464
465typedef struct
466{
467    /**
468     * u4_size of the structure
469     */
470    UWORD32                                 u4_size;
471
472    /**
473     * error_code
474     */
475    UWORD32                                 u4_error_code;
476
477    /**
478     * progressive_frame_flag
479     */
480    UWORD32                                 u4_progressive_frame_flag;
481
482    /**
483     * pic_type
484     */
485    IV_PICTURE_CODING_TYPE_T                e_pic_type;
486
487    /**
488     * is_ref_flag
489     */
490    UWORD32                                 u4_is_ref_flag;
491
492    /**
493     * output_format
494     */
495    IV_COLOR_FORMAT_T                       e_output_format;
496
497    /**
498     * disp_frm_buf
499     */
500    iv_yuv_buf_t                            s_disp_frm_buf;
501
502    /**
503     * fld_type
504     */
505    IV_FLD_TYPE_T                           e4_fld_type;
506
507    /**
508     * ts
509     */
510    UWORD32                                 u4_ts;
511
512    /**
513     * disp_buf_id
514     */
515    UWORD32                                 u4_disp_buf_id;
516}ivd_get_display_frame_op_t;
517
518/*****************************************************************************/
519/*   Set Display Frame                                                       */
520/*****************************************************************************/
521
522
523/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_SET_DISPLAY_FRAME                 */
524
525typedef struct
526{
527    /**
528     * u4_size of the structure
529     */
530    UWORD32                                 u4_size;
531
532    /**
533     * cmd
534     */
535    IVD_API_COMMAND_TYPE_T                  e_cmd;
536
537    /**
538     * num_disp_bufs
539     */
540    UWORD32                                 num_disp_bufs;
541
542    /**
543     * output buffer desc
544     */
545    ivd_out_bufdesc_t                       s_disp_buffer[IVD_VIDDEC_MAX_IO_BUFFERS];
546
547}ivd_set_display_frame_ip_t;
548
549
550typedef struct
551{
552    /**
553     * u4_size of the structure
554     */
555    UWORD32                                 u4_size;
556
557    /**
558     * error code
559     */
560    UWORD32                                 u4_error_code;
561}ivd_set_display_frame_op_t;
562
563
564/*****************************************************************************/
565/*   Release Display Frame                                                       */
566/*****************************************************************************/
567
568
569/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_SET_DISPLAY_FRAME                 */
570
571typedef struct
572{
573    /**
574     * u4_size of the structure
575     */
576    UWORD32                                 u4_size;
577
578    /**
579     * e_cmd
580     */
581    IVD_API_COMMAND_TYPE_T                  e_cmd;
582
583    /**
584     * disp_buf_id
585     */
586    UWORD32                                 u4_disp_buf_id;
587}ivd_rel_display_frame_ip_t;
588
589
590typedef struct
591{
592    /**
593     * u4_size of the structure
594     */
595    UWORD32                                 u4_size;
596
597    /**
598     * error code
599     */
600    UWORD32                                 u4_error_code;
601}ivd_rel_display_frame_op_t;
602
603/*****************************************************************************/
604/*   Video control  Flush                                                    */
605/*****************************************************************************/
606/* IVD_API_COMMAND_TYPE_T::e_cmd            = IVD_CMD_VIDEO_CTL              */
607/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd    = IVD_CMD_ctl_FLUSH          */
608
609
610
611typedef struct{
612    /**
613     * u4_size of the structure
614     */
615    UWORD32                                 u4_size;
616
617    /**
618     * cmd
619     */
620    IVD_API_COMMAND_TYPE_T                  e_cmd;
621
622    /**
623     * sub_cmd
624     */
625    IVD_CONTROL_API_COMMAND_TYPE_T          e_sub_cmd;
626}ivd_ctl_flush_ip_t;
627
628
629typedef struct{
630    /**
631     * u4_size of the structure
632     */
633    UWORD32                                 u4_size;
634
635    /**
636     * error code
637     */
638    UWORD32                                 u4_error_code;
639}ivd_ctl_flush_op_t;
640
641/*****************************************************************************/
642/*   Video control reset                                                     */
643/*****************************************************************************/
644/* IVD_API_COMMAND_TYPE_T::e_cmd            = IVD_CMD_VIDEO_CTL              */
645/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd    = IVD_CMD_ctl_RESET          */
646
647
648typedef struct{
649    /**
650     * u4_size of the structure
651     */
652    UWORD32                                 u4_size;
653
654    /**
655     * cmd
656     */
657    IVD_API_COMMAND_TYPE_T                  e_cmd;
658
659    /**
660     * sub_cmd
661     */
662
663    IVD_CONTROL_API_COMMAND_TYPE_T          e_sub_cmd;
664}ivd_ctl_reset_ip_t;
665
666
667typedef struct{
668    /**
669     * u4_size of the structure
670     */
671    UWORD32                                 u4_size;
672
673    /**
674     * error code
675     */
676    UWORD32                                 u4_error_code;
677}ivd_ctl_reset_op_t;
678
679
680/*****************************************************************************/
681/*   Video control  Set Params                                               */
682/*****************************************************************************/
683/* IVD_API_COMMAND_TYPE_T::e_cmd        = IVD_CMD_VIDEO_CTL                  */
684/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_SETPARAMS           */
685/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_SETDEFAULT          */
686
687
688
689typedef struct {
690    /**
691     * u4_size of the structure
692     */
693    UWORD32                                     u4_size;
694
695    /**
696     * cmd
697     */
698    IVD_API_COMMAND_TYPE_T                      e_cmd;
699
700    /**
701     * sub_cmd
702     */
703    IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
704
705    /**
706     * vid_dec_mode
707     */
708    IVD_VIDEO_DECODE_MODE_T                     e_vid_dec_mode;
709
710    /**
711     * disp_wd
712     */
713    UWORD32                                     u4_disp_wd;
714
715    /**
716     * frm_skip_mode
717     */
718    IVD_FRAME_SKIP_MODE_T                       e_frm_skip_mode;
719
720    /**
721     * frm_out_mode
722     */
723    IVD_DISPLAY_FRAME_OUT_MODE_T                e_frm_out_mode;
724}ivd_ctl_set_config_ip_t;
725
726
727typedef struct{
728    /**
729     * u4_size of the structure
730     */
731    UWORD32                                     u4_size;
732
733    /**
734     * u4_error_code
735     */
736    UWORD32                                     u4_error_code;
737}ivd_ctl_set_config_op_t;
738
739/*****************************************************************************/
740/*   Video control:Get Buf Info                                              */
741/*****************************************************************************/
742
743/* IVD_API_COMMAND_TYPE_T::e_cmd         = IVD_CMD_VIDEO_CTL                 */
744/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETBUFINFO          */
745
746
747typedef struct{
748    /**
749     * u4_size of the structure
750     */
751    UWORD32                                     u4_size;
752
753    /**
754     *  e_cmd
755     */
756    IVD_API_COMMAND_TYPE_T                      e_cmd;
757
758    /**
759     * sub_cmd
760     */
761    IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
762}ivd_ctl_getbufinfo_ip_t;
763
764
765typedef struct{
766    /**
767     * u4_size of the structure
768     */
769    UWORD32                                     u4_size;
770
771    /**
772     * error code
773     */
774    UWORD32                                     u4_error_code;
775
776    /**
777     * no of display buffer sets required by codec
778     */
779    UWORD32                                     u4_num_disp_bufs;
780
781    /**
782     * no of input buffers required for codec
783     */
784    UWORD32                                     u4_min_num_in_bufs;
785
786    /**
787     * no of output buffers required for codec
788     */
789    UWORD32                                     u4_min_num_out_bufs;
790
791    /**
792     * sizes of each input buffer required
793     */
794    UWORD32                                     u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
795
796    /**
797     * sizes of each output buffer required
798     */
799    UWORD32                                     u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
800}ivd_ctl_getbufinfo_op_t;
801
802
803/*****************************************************************************/
804/*   Video control:Getstatus Call                                            */
805/*****************************************************************************/
806
807
808/* IVD_API_COMMAND_TYPE_T::e_cmd        = IVD_CMD_VIDEO_CTL                  */
809/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETPARAMS           */
810
811
812typedef struct{
813    /**
814     * u4_size of the structure
815     */
816    UWORD32                                     u4_size;
817
818    /**
819     * cmd
820     */
821    IVD_API_COMMAND_TYPE_T                      e_cmd;
822
823    /**
824     * sub_cmd
825     */
826    IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
827}ivd_ctl_getstatus_ip_t;
828
829
830typedef struct{
831
832     /**
833      * u4_size of the structure
834      */
835    UWORD32                  u4_size;
836
837    /**
838      * error code
839      */
840    UWORD32                  u4_error_code;
841
842    /**
843     * no of display buffer sets required by codec
844     */
845    UWORD32                  u4_num_disp_bufs;
846
847    /**
848     * u4_pic_ht
849     */
850    UWORD32                  u4_pic_ht;
851
852    /**
853     * u4_pic_wd
854     */
855    UWORD32                  u4_pic_wd;
856
857    /**
858     * frame_rate
859     */
860    UWORD32                  u4_frame_rate;
861
862    /**
863     * u4_bit_rate
864     */
865    UWORD32                  u4_bit_rate;
866
867    /**
868     * content_type
869     */
870    IV_CONTENT_TYPE_T        e_content_type;
871
872    /**
873     * output_chroma_format
874     */
875    IV_COLOR_FORMAT_T        e_output_chroma_format;
876
877    /**
878     * no of input buffers required for codec
879     */
880    UWORD32                  u4_min_num_in_bufs;
881
882    /**
883     * no of output buffers required for codec
884     */
885    UWORD32                  u4_min_num_out_bufs;
886
887    /**
888     * sizes of each input buffer required
889     */
890    UWORD32                  u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
891
892    /**
893     * sizes of each output buffer required
894     */
895    UWORD32                  u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
896}ivd_ctl_getstatus_op_t;
897
898
899/*****************************************************************************/
900/*   Video control:Get Version Info                                          */
901/*****************************************************************************/
902
903/* IVD_API_COMMAND_TYPE_T::e_cmd        = IVD_CMD_VIDEO_CTL                  */
904/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETVERSION          */
905
906
907typedef struct{
908    /**
909     * u4_size of the structure
910     */
911    UWORD32                                     u4_size;
912
913    /**
914     * cmd
915     */
916    IVD_API_COMMAND_TYPE_T                      e_cmd;
917
918    /**
919     * sub_cmd
920     */
921    IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
922
923    /**
924     * pv_version_buffer
925     */
926    void                                        *pv_version_buffer;
927
928    /**
929     * version_buffer_size
930     */
931    UWORD32                                     u4_version_buffer_size;
932}ivd_ctl_getversioninfo_ip_t;
933
934
935typedef struct{
936    /**
937     * u4_size of the structure
938     */
939    UWORD32                                     u4_size;
940
941    /**
942     * error code
943     */
944    UWORD32                                     u4_error_code;
945}ivd_ctl_getversioninfo_op_t;
946
947#endif /* __IVD_H__ */
948
949