• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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                               */
55 typedef 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                               */
76 typedef 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 
85 typedef 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 
101 typedef 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 
117 typedef 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                                   */
129 typedef enum {
130     IVD_CMD_VIDEO_NA                          = 0x7FFFFFFF,
131     IVD_CMD_CREATE                            = IV_CMD_DUMMY_ELEMENT + 1,
132     IVD_CMD_DELETE,
133     IVD_CMD_VIDEO_CTL,
134     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 
142 typedef 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 
162 typedef 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            */
189 typedef 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,
233     IVD_MEM_ALLOC_FAILED                        = 0x2b,
234     IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS      = 0xD0,
235 }IVD_ERROR_CODES_T;
236 
237 
238 /*****************************************************************************/
239 /* Structure                                                                 */
240 /*****************************************************************************/
241 /* structure for passing output buffers to codec during get display buffer   */
242 /* call                                                                      */
243 typedef struct {
244 
245     /**
246      * number of output buffers
247      */
248     UWORD32             u4_num_bufs;
249 
250     /**
251      *list of pointers to output buffers
252      */
253     UWORD8              *pu1_bufs[IVD_VIDDEC_MAX_IO_BUFFERS];
254 
255     /**
256      * sizes of each output buffer
257      */
258     UWORD32             u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
259 
260 }ivd_out_bufdesc_t;
261 
262 /*****************************************************************************/
263 /*   Create decoder                                                          */
264 /*****************************************************************************/
265 
266 /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_CREATE                            */
267 
268 
269 typedef struct {
270     /**
271      * u4_size of the structure
272      */
273     UWORD32                                 u4_size;
274 
275     /**
276      *  e_cmd
277      */
278     IVD_API_COMMAND_TYPE_T                  e_cmd;
279 
280     /**
281      * format in which codec has to give out frame data for display
282      */
283     IV_COLOR_FORMAT_T                       e_output_format;
284 
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;
311 
312 
313 typedef struct{
314     /**
315      * u4_size of the structure
316      */
317     UWORD32                                 u4_size;
318 
319     /**
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 
340 typedef 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 
354 typedef 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;
366 
367 /*****************************************************************************/
368 /*   Video Decode                                                            */
369 /*****************************************************************************/
370 
371 
372 /* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_DECODE                      */
373 
374 
375 typedef struct {
376     /**
377      * u4_size of the structure
378      */
379     UWORD32                                 u4_size;
380 
381     /**
382      * e_cmd
383      */
384     IVD_API_COMMAND_TYPE_T                  e_cmd;
385 
386     /**
387      * u4_ts
388      */
389     UWORD32                                 u4_ts;
390 
391     /**
392      * u4_num_Bytes
393      */
394     UWORD32                                 u4_num_Bytes;
395 
396     /**
397      * pv_stream_buffer
398      */
399     void                                    *pv_stream_buffer;
400 
401     /**
402      * output buffer desc
403      */
404     ivd_out_bufdesc_t                       s_out_buffer;
405 
406 }ivd_video_decode_ip_t;
407 
408 
409 typedef struct{
410     /**
411      * u4_size of the structure
412      */
413     UWORD32                                 u4_size;
414 
415     /**
416      * u4_error_code
417      */
418     UWORD32                                 u4_error_code;
419 
420     /**
421      * num_bytes_consumed
422      */
423     UWORD32                                 u4_num_bytes_consumed;
424 
425     /**
426      * pic_wd
427      */
428     UWORD32                                 u4_pic_wd;
429 
430     /**
431      * pic_ht
432      */
433     UWORD32                                 u4_pic_ht;
434 
435     /**
436      * pic_type
437      */
438     IV_PICTURE_CODING_TYPE_T                e_pic_type;
439 
440     /**
441      * frame_decoded_flag
442      */
443     UWORD32                                 u4_frame_decoded_flag;
444 
445     /**
446      * new_seq
447      */
448     UWORD32                                 u4_new_seq;
449 
450     /**
451      * output_present
452      */
453     UWORD32                                 u4_output_present;
454 
455     /**
456      * progressive_frame_flag
457      */
458     UWORD32                                 u4_progressive_frame_flag;
459 
460     /**
461      * is_ref_flag
462      */
463     UWORD32                                 u4_is_ref_flag;
464 
465     /**
466      * output_format
467      */
468     IV_COLOR_FORMAT_T                       e_output_format;
469 
470     /**
471      * disp_frm_buf
472      */
473     iv_yuv_buf_t                            s_disp_frm_buf;
474 
475     /**
476      * fld_type
477      */
478     IV_FLD_TYPE_T                           e4_fld_type;
479 
480     /**
481      * ts
482      */
483     UWORD32                                 u4_ts;
484 
485     /**
486      * disp_buf_id
487      */
488     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 
499 typedef struct
500 {
501     /**
502      * u4_size of the structure
503      */
504     UWORD32                                 u4_size;
505 
506     /**
507      * e_cmd
508      */
509     IVD_API_COMMAND_TYPE_T                  e_cmd;
510 
511     /**
512      * output buffer desc
513      */
514     ivd_out_bufdesc_t                       s_out_buffer;
515 
516 }ivd_get_display_frame_ip_t;
517 
518 
519 typedef struct
520 {
521     /**
522      * u4_size of the structure
523      */
524     UWORD32                                 u4_size;
525 
526     /**
527      * error_code
528      */
529     UWORD32                                 u4_error_code;
530 
531     /**
532      * progressive_frame_flag
533      */
534     UWORD32                                 u4_progressive_frame_flag;
535 
536     /**
537      * pic_type
538      */
539     IV_PICTURE_CODING_TYPE_T                e_pic_type;
540 
541     /**
542      * is_ref_flag
543      */
544     UWORD32                                 u4_is_ref_flag;
545 
546     /**
547      * output_format
548      */
549     IV_COLOR_FORMAT_T                       e_output_format;
550 
551     /**
552      * disp_frm_buf
553      */
554     iv_yuv_buf_t                            s_disp_frm_buf;
555 
556     /**
557      * fld_type
558      */
559     IV_FLD_TYPE_T                           e4_fld_type;
560 
561     /**
562      * ts
563      */
564     UWORD32                                 u4_ts;
565 
566     /**
567      * disp_buf_id
568      */
569     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 
579 typedef struct
580 {
581     /**
582      * u4_size of the structure
583      */
584     UWORD32                                 u4_size;
585 
586     /**
587      * cmd
588      */
589     IVD_API_COMMAND_TYPE_T                  e_cmd;
590 
591     /**
592      * num_disp_bufs
593      */
594     UWORD32                                 num_disp_bufs;
595 
596     /**
597      * output buffer desc
598      */
599     ivd_out_bufdesc_t                       s_disp_buffer[IVD_VIDDEC_MAX_IO_BUFFERS];
600 
601 }ivd_set_display_frame_ip_t;
602 
603 
604 typedef struct
605 {
606     /**
607      * u4_size of the structure
608      */
609     UWORD32                                 u4_size;
610 
611     /**
612      * error code
613      */
614     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 
625 typedef struct
626 {
627     /**
628      * u4_size of the structure
629      */
630     UWORD32                                 u4_size;
631 
632     /**
633      * e_cmd
634      */
635     IVD_API_COMMAND_TYPE_T                  e_cmd;
636 
637     /**
638      * disp_buf_id
639      */
640     UWORD32                                 u4_disp_buf_id;
641 }ivd_rel_display_frame_ip_t;
642 
643 
644 typedef struct
645 {
646     /**
647      * u4_size of the structure
648      */
649     UWORD32                                 u4_size;
650 
651     /**
652      * error code
653      */
654     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 
665 typedef struct{
666     /**
667      * u4_size of the structure
668      */
669     UWORD32                                 u4_size;
670 
671     /**
672      * cmd
673      */
674     IVD_API_COMMAND_TYPE_T                  e_cmd;
675 
676     /**
677      * sub_cmd
678      */
679     IVD_CONTROL_API_COMMAND_TYPE_T          e_sub_cmd;
680 }ivd_ctl_flush_ip_t;
681 
682 
683 typedef struct{
684     /**
685      * u4_size of the structure
686      */
687     UWORD32                                 u4_size;
688 
689     /**
690      * error code
691      */
692     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 
702 typedef struct{
703     /**
704      * u4_size of the structure
705      */
706     UWORD32                                 u4_size;
707 
708     /**
709      * cmd
710      */
711     IVD_API_COMMAND_TYPE_T                  e_cmd;
712 
713     /**
714      * sub_cmd
715      */
716 
717     IVD_CONTROL_API_COMMAND_TYPE_T          e_sub_cmd;
718 }ivd_ctl_reset_ip_t;
719 
720 
721 typedef struct{
722     /**
723      * u4_size of the structure
724      */
725     UWORD32                                 u4_size;
726 
727     /**
728      * error code
729      */
730     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 
743 typedef struct {
744     /**
745      * u4_size of the structure
746      */
747     UWORD32                                     u4_size;
748 
749     /**
750      * cmd
751      */
752     IVD_API_COMMAND_TYPE_T                      e_cmd;
753 
754     /**
755      * sub_cmd
756      */
757     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
758 
759     /**
760      * vid_dec_mode
761      */
762     IVD_VIDEO_DECODE_MODE_T                     e_vid_dec_mode;
763 
764     /**
765      * disp_wd
766      */
767     UWORD32                                     u4_disp_wd;
768 
769     /**
770      * frm_skip_mode
771      */
772     IVD_FRAME_SKIP_MODE_T                       e_frm_skip_mode;
773 
774     /**
775      * frm_out_mode
776      */
777     IVD_DISPLAY_FRAME_OUT_MODE_T                e_frm_out_mode;
778 }ivd_ctl_set_config_ip_t;
779 
780 
781 typedef struct{
782     /**
783      * u4_size of the structure
784      */
785     UWORD32                                     u4_size;
786 
787     /**
788      * u4_error_code
789      */
790     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 
801 typedef struct{
802     /**
803      * u4_size of the structure
804      */
805     UWORD32                                     u4_size;
806 
807     /**
808      *  e_cmd
809      */
810     IVD_API_COMMAND_TYPE_T                      e_cmd;
811 
812     /**
813      * sub_cmd
814      */
815     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
816 }ivd_ctl_getbufinfo_ip_t;
817 
818 
819 typedef struct{
820     /**
821      * u4_size of the structure
822      */
823     UWORD32                                     u4_size;
824 
825     /**
826      * error code
827      */
828     UWORD32                                     u4_error_code;
829 
830     /**
831      * no of display buffer sets required by codec
832      */
833     UWORD32                                     u4_num_disp_bufs;
834 
835     /**
836      * no of input buffers required for codec
837      */
838     UWORD32                                     u4_min_num_in_bufs;
839 
840     /**
841      * no of output buffers required for codec
842      */
843     UWORD32                                     u4_min_num_out_bufs;
844 
845     /**
846      * sizes of each input buffer required
847      */
848     UWORD32                                     u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
849 
850     /**
851      * sizes of each output buffer required
852      */
853     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 
866 typedef struct{
867     /**
868      * u4_size of the structure
869      */
870     UWORD32                                     u4_size;
871 
872     /**
873      * cmd
874      */
875     IVD_API_COMMAND_TYPE_T                      e_cmd;
876 
877     /**
878      * sub_cmd
879      */
880     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
881 }ivd_ctl_getstatus_ip_t;
882 
883 
884 typedef struct{
885 
886      /**
887       * u4_size of the structure
888       */
889     UWORD32                  u4_size;
890 
891     /**
892       * error code
893       */
894     UWORD32                  u4_error_code;
895 
896     /**
897      * no of display buffer sets required by codec
898      */
899     UWORD32                  u4_num_disp_bufs;
900 
901     /**
902      * u4_pic_ht
903      */
904     UWORD32                  u4_pic_ht;
905 
906     /**
907      * u4_pic_wd
908      */
909     UWORD32                  u4_pic_wd;
910 
911     /**
912      * frame_rate
913      */
914     UWORD32                  u4_frame_rate;
915 
916     /**
917      * u4_bit_rate
918      */
919     UWORD32                  u4_bit_rate;
920 
921     /**
922      * content_type
923      */
924     IV_CONTENT_TYPE_T        e_content_type;
925 
926     /**
927      * output_chroma_format
928      */
929     IV_COLOR_FORMAT_T        e_output_chroma_format;
930 
931     /**
932      * no of input buffers required for codec
933      */
934     UWORD32                  u4_min_num_in_bufs;
935 
936     /**
937      * no of output buffers required for codec
938      */
939     UWORD32                  u4_min_num_out_bufs;
940 
941     /**
942      * sizes of each input buffer required
943      */
944     UWORD32                  u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
945 
946     /**
947      * sizes of each output buffer required
948      */
949     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 
961 typedef struct{
962     /**
963      * u4_size of the structure
964      */
965     UWORD32                                     u4_size;
966 
967     /**
968      * cmd
969      */
970     IVD_API_COMMAND_TYPE_T                      e_cmd;
971 
972     /**
973      * sub_cmd
974      */
975     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
976 
977     /**
978      * pv_version_buffer
979      */
980     void                                        *pv_version_buffer;
981 
982     /**
983      * version_buffer_size
984      */
985     UWORD32                                     u4_version_buffer_size;
986 }ivd_ctl_getversioninfo_ip_t;
987 
988 
989 typedef struct{
990     /**
991      * u4_size of the structure
992      */
993     UWORD32                                     u4_size;
994 
995     /**
996      * error code
997      */
998     UWORD32                                     u4_error_code;
999 }ivd_ctl_getversioninfo_op_t;
1000 
1001 #endif /* __IVD_H__ */
1002 
1003