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