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 Name         : ivd.h                                                */
23/*                                                                           */
24/*  Description       : This file contains all the necessary structure and   */
25/*                      enumeration definitions needed for the Application   */
26/*                      Program Interface(API) of the Ittiam Video Decoders  */
27/*                                                                           */
28/*  List of Functions : None                                                 */
29/*                                                                           */
30/*  Issues / Problems : None                                                 */
31/*                                                                           */
32/*  Revision History  :                                                      */
33/*                                                                           */
34/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
35/*         26 08 2010   100239(RCY)     Draft                                */
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      = 0xD0,
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    /* number of output buffers */
243    UWORD32             u4_num_bufs;
244
245    /* list of pointers to output buffers */
246    UWORD8              *pu1_bufs[IVD_VIDDEC_MAX_IO_BUFFERS];
247
248    /* sizes of each output buffer */
249    UWORD32             u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
250
251}ivd_out_bufdesc_t;
252
253/*****************************************************************************/
254/*   Initialize decoder                                                      */
255/*****************************************************************************/
256
257/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_INIT                              */
258
259
260typedef struct {
261    /* u4_size of the structure                                         */
262    UWORD32                                 u4_size;
263    IVD_API_COMMAND_TYPE_T                  e_cmd;
264    /* no memrecords which are allocated on request of codec through
265    fill mem records */
266    UWORD32                                 u4_num_mem_rec;
267    /* maximum height for which codec should be initialized */
268    UWORD32                                 u4_frm_max_wd;
269    /* maximum width for which codec should be initialized  */
270    UWORD32                                 u4_frm_max_ht;
271    /* format in which codec has to give out frame data for display */
272    IV_COLOR_FORMAT_T                       e_output_format;
273    /* pointer to memrecord array, which contains allocated resources */
274    iv_mem_rec_t                            *pv_mem_rec_location;
275}ivd_init_ip_t;
276
277
278typedef struct{
279    /* u4_size of the structure                                         */
280    UWORD32                                 u4_size;
281    UWORD32                                 u4_error_code;
282}ivd_init_op_t;
283
284
285/*****************************************************************************/
286/*   Video Decode                                                            */
287/*****************************************************************************/
288
289
290/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_VIDEO_DECODE                      */
291
292
293typedef struct {
294    /* u4_size of the structure                                         */
295    UWORD32                                 u4_size;
296    IVD_API_COMMAND_TYPE_T                  e_cmd;
297    UWORD32                                 u4_ts;
298    UWORD32                                 u4_num_Bytes;
299    void                                    *pv_stream_buffer;
300
301    /* output buffer desc */
302    ivd_out_bufdesc_t                       s_out_buffer;
303
304}ivd_video_decode_ip_t;
305
306
307typedef struct{
308    /* u4_size of the structure                                         */
309    UWORD32                                 u4_size;
310    UWORD32                                 u4_error_code;
311    UWORD32                                 u4_num_bytes_consumed;
312    UWORD32                                 u4_pic_wd;
313    UWORD32                                 u4_pic_ht;
314    IV_PICTURE_CODING_TYPE_T                e_pic_type;
315    UWORD32                                 u4_frame_decoded_flag;
316    UWORD32                                 u4_new_seq;
317
318    UWORD32                                 u4_output_present;
319    UWORD32                                 u4_progressive_frame_flag;
320    UWORD32                                 u4_is_ref_flag;
321    IV_COLOR_FORMAT_T                       e_output_format;
322    iv_yuv_buf_t                            s_disp_frm_buf;
323    IV_FLD_TYPE_T                           e4_fld_type;
324    UWORD32                                 u4_ts;
325    UWORD32                                 u4_disp_buf_id;
326}ivd_video_decode_op_t;
327
328
329/*****************************************************************************/
330/*   Get Display Frame                                                       */
331/*****************************************************************************/
332
333
334/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_GET_DISPLAY_FRAME                 */
335
336typedef struct
337{
338    /* u4_size of the structure                                         */
339    UWORD32                                 u4_size;
340
341    IVD_API_COMMAND_TYPE_T                  e_cmd;
342
343    /* output buffer desc */
344    ivd_out_bufdesc_t                       s_out_buffer;
345
346}ivd_get_display_frame_ip_t;
347
348
349typedef struct
350{
351    /* u4_size of the structure                                         */
352    UWORD32                                 u4_size;
353    UWORD32                                 u4_error_code;
354    UWORD32                                 u4_progressive_frame_flag;
355    IV_PICTURE_CODING_TYPE_T                e_pic_type;
356    UWORD32                                 u4_is_ref_flag;
357    IV_COLOR_FORMAT_T                       e_output_format;
358    iv_yuv_buf_t                            s_disp_frm_buf;
359    IV_FLD_TYPE_T                           e4_fld_type;
360    UWORD32                                 u4_ts;
361    UWORD32                                 u4_disp_buf_id;
362}ivd_get_display_frame_op_t;
363
364/*****************************************************************************/
365/*   Set Display Frame                                                       */
366/*****************************************************************************/
367
368
369/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_SET_DISPLAY_FRAME                 */
370
371typedef struct
372{
373    /* u4_size of the structure                                         */
374    UWORD32                                 u4_size;
375
376    IVD_API_COMMAND_TYPE_T                  e_cmd;
377
378    UWORD32                                 num_disp_bufs;
379
380    /* output buffer desc */
381    ivd_out_bufdesc_t                       s_disp_buffer[IVD_VIDDEC_MAX_IO_BUFFERS];
382
383}ivd_set_display_frame_ip_t;
384
385
386typedef struct
387{
388    /* u4_size of the structure                                         */
389    UWORD32                                 u4_size;
390    UWORD32                                 u4_error_code;
391}ivd_set_display_frame_op_t;
392
393
394/*****************************************************************************/
395/*   Release Display Frame                                                       */
396/*****************************************************************************/
397
398
399/* IVD_API_COMMAND_TYPE_T::e_cmd = IVD_CMD_SET_DISPLAY_FRAME                 */
400
401typedef struct
402{
403    /* u4_size of the structure                                         */
404    UWORD32                                 u4_size;
405    IVD_API_COMMAND_TYPE_T                  e_cmd;
406    UWORD32                                 u4_disp_buf_id;
407}ivd_rel_display_frame_ip_t;
408
409
410typedef struct
411{
412    /* u4_size of the structure                                         */
413    UWORD32                                 u4_size;
414    UWORD32                                 u4_error_code;
415}ivd_rel_display_frame_op_t;
416
417/*****************************************************************************/
418/*   Video control  Flush                                                    */
419/*****************************************************************************/
420/* IVD_API_COMMAND_TYPE_T::e_cmd            = IVD_CMD_VIDEO_CTL              */
421/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd    = IVD_CMD_ctl_FLUSH          */
422
423
424
425typedef struct{
426    /* u4_size of the structure                                         */
427    UWORD32                                 u4_size;
428    IVD_API_COMMAND_TYPE_T                  e_cmd;
429    IVD_CONTROL_API_COMMAND_TYPE_T          e_sub_cmd;
430}ivd_ctl_flush_ip_t;
431
432
433typedef struct{
434    /* u4_size of the structure                                         */
435    UWORD32                                 u4_size;
436    UWORD32                                 u4_error_code;
437}ivd_ctl_flush_op_t;
438
439/*****************************************************************************/
440/*   Video control reset                                                     */
441/*****************************************************************************/
442/* IVD_API_COMMAND_TYPE_T::e_cmd            = IVD_CMD_VIDEO_CTL              */
443/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd    = IVD_CMD_ctl_RESET          */
444
445
446typedef struct{
447    /* u4_size of the structure                                         */
448    UWORD32                                 u4_size;
449    IVD_API_COMMAND_TYPE_T                  e_cmd;
450    IVD_CONTROL_API_COMMAND_TYPE_T          e_sub_cmd;
451}ivd_ctl_reset_ip_t;
452
453
454typedef struct{
455    /* u4_size of the structure                                         */
456    UWORD32                                 u4_size;
457    UWORD32                                 u4_error_code;
458}ivd_ctl_reset_op_t;
459
460
461/*****************************************************************************/
462/*   Video control  Set Params                                               */
463/*****************************************************************************/
464/* IVD_API_COMMAND_TYPE_T::e_cmd        = IVD_CMD_VIDEO_CTL                  */
465/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_SETPARAMS           */
466/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_SETDEFAULT          */
467
468
469
470typedef struct {
471    /* u4_size of the structure                                         */
472    UWORD32                                     u4_size;
473    IVD_API_COMMAND_TYPE_T                      e_cmd;
474    IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
475    IVD_VIDEO_DECODE_MODE_T                     e_vid_dec_mode;
476    UWORD32                                     u4_disp_wd;
477    IVD_FRAME_SKIP_MODE_T                       e_frm_skip_mode;
478    IVD_DISPLAY_FRAME_OUT_MODE_T                e_frm_out_mode;
479}ivd_ctl_set_config_ip_t;
480
481
482typedef struct{
483    /* u4_size of the structure                                         */
484    UWORD32                                     u4_size;
485    UWORD32                                     u4_error_code;
486}ivd_ctl_set_config_op_t;
487
488/*****************************************************************************/
489/*   Video control:Get Buf Info                                              */
490/*****************************************************************************/
491
492/* IVD_API_COMMAND_TYPE_T::e_cmd         = IVD_CMD_VIDEO_CTL                 */
493/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETBUFINFO          */
494
495
496typedef struct{
497    /* u4_size of the structure                                         */
498    UWORD32                                     u4_size;
499    IVD_API_COMMAND_TYPE_T                      e_cmd;
500    IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
501}ivd_ctl_getbufinfo_ip_t;
502
503
504typedef struct{
505    /* u4_size of the structure                                         */
506    UWORD32                                     u4_size;
507    UWORD32                                     u4_error_code;
508    /* no of display buffer sets required by codec */
509    UWORD32                                     u4_num_disp_bufs;
510    /* no of input buffers required for codec */
511    UWORD32                                     u4_min_num_in_bufs;
512    /* no of output buffers required for codec */
513    UWORD32                                     u4_min_num_out_bufs;
514    /* sizes of each input buffer required */
515    UWORD32                                     u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
516    /* sizes of each output buffer required */
517    UWORD32                                     u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
518}ivd_ctl_getbufinfo_op_t;
519
520
521/*****************************************************************************/
522/*   Video control:Getstatus Call                                            */
523/*****************************************************************************/
524
525
526/* IVD_API_COMMAND_TYPE_T::e_cmd        = IVD_CMD_VIDEO_CTL                  */
527/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETPARAMS           */
528
529
530typedef struct{
531    /* u4_size of the structure                                         */
532    UWORD32                                     u4_size;
533    IVD_API_COMMAND_TYPE_T                      e_cmd;
534    IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
535}ivd_ctl_getstatus_ip_t;
536
537
538typedef struct{
539    UWORD32                  u4_size;
540    UWORD32                  u4_error_code;
541    /* no of display buffer sets required by codec */
542    UWORD32                  u4_num_disp_bufs;
543    UWORD32                  u4_pic_ht;
544    UWORD32                  u4_pic_wd;
545    UWORD32                  u4_frame_rate;
546    UWORD32                  u4_bit_rate;
547    IV_CONTENT_TYPE_T        e_content_type;
548    IV_COLOR_FORMAT_T        e_output_chroma_format;
549    /* no of input buffers required for codec */
550    UWORD32                  u4_min_num_in_bufs;
551    /* no of output buffers required for codec */
552    UWORD32                  u4_min_num_out_bufs;
553    /* sizes of each input buffer required */
554    UWORD32                  u4_min_in_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
555    /* sizes of each output buffer required */
556    UWORD32                  u4_min_out_buf_size[IVD_VIDDEC_MAX_IO_BUFFERS];
557}ivd_ctl_getstatus_op_t;
558
559
560/*****************************************************************************/
561/*   Video control:Get Version Info                                          */
562/*****************************************************************************/
563
564/* IVD_API_COMMAND_TYPE_T::e_cmd        = IVD_CMD_VIDEO_CTL                  */
565/* IVD_CONTROL_API_COMMAND_TYPE_T::e_sub_cmd=IVD_CMD_ctl_GETVERSION          */
566
567
568typedef struct{
569    /* u4_size of the structure                                         */
570    UWORD32                                     u4_size;
571    IVD_API_COMMAND_TYPE_T                      e_cmd;
572    IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
573    void                                        *pv_version_buffer;
574    UWORD32                                     u4_version_buffer_size;
575}ivd_ctl_getversioninfo_ip_t;
576
577
578typedef struct{
579    /* u4_size of the structure                                         */
580    UWORD32                                     u4_size;
581    UWORD32                                     u4_error_code;
582}ivd_ctl_getversioninfo_op_t;
583
584#endif /* __IVD_H__ */
585
586