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*  ive2.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 Encoders  This is version 2
29*
30* @author
31* Ittiam
32*
33* @par List of Functions:
34*
35* @remarks
36* None
37*
38*******************************************************************************
39*/
40
41#ifndef _IVE2_H_
42#define _IVE2_H_
43
44/*****************************************************************************/
45/* Constant Macros                                                           */
46/*****************************************************************************/
47
48/** Maximum number of components in I/O Buffers                             */
49#define IVE_MAX_IO_BUFFER_COMPONENTS   4
50
51/** Maximum number of reference pictures                                    */
52#define IVE_MAX_REF 16
53
54/*****************************************************************************/
55/* Enums                                                                     */
56/*****************************************************************************/
57
58/** Slice modes */
59typedef enum
60{
61    IVE_SLICE_MODE_NA           = 0x7FFFFFFF,
62    IVE_SLICE_MODE_NONE         = 0x0,
63
64    IVE_SLICE_MODE_BYTES        = 0x1,
65    IVE_SLICE_MODE_BLOCKS       = 0x2,
66}IVE_SLICE_MODE_T;
67
68/** Adaptive Intra refresh modes */
69typedef enum
70{
71    IVE_AIR_MODE_NA             = 0x7FFFFFFF,
72    IVE_AIR_MODE_NONE           = 0x0,
73    IVE_AIR_MODE_CYCLIC         = 0x1,
74    IVE_AIR_MODE_RANDOM         = 0x2,
75    IVE_AIR_MODE_DISTORTION     = 0x3,
76}IVE_AIR_MODE_T;
77
78/** Rate control modes   */
79typedef enum
80{
81  IVE_RC_NA                     = 0x7FFFFFFF,
82  IVE_RC_NONE                   = 0x0,
83  IVE_RC_STORAGE                = 0x1,
84  IVE_RC_CBR_NON_LOW_DELAY      = 0x2,
85  IVE_RC_CBR_LOW_DELAY          = 0x3,
86  IVE_RC_TWOPASS                = 0x4,
87  IVE_RC_RATECONTROLPRESET_DEFAULT = IVE_RC_STORAGE
88}IVE_RC_MODE_T;
89
90/** Encoder mode */
91typedef enum
92{
93    IVE_ENC_MODE_NA                          = 0x7FFFFFFF,
94    IVE_ENC_MODE_HEADER                      = 0x1,
95    IVE_ENC_MODE_PICTURE                     = 0x0,
96    IVE_ENC_MODE_DEFAULT                     = IVE_ENC_MODE_PICTURE,
97}IVE_ENC_MODE_T;
98
99/** Speed Config */
100typedef enum IVE_SPEED_CONFIG
101{
102  IVE_QUALITY_DUMMY                         = 0x7FFFFFFF,
103  IVE_CONFIG                                = 0,
104  IVE_SLOWEST                               = 1,
105  IVE_NORMAL                                = 2,
106  IVE_FAST                                  = 3,
107  IVE_HIGH_SPEED                            = 4,
108  IVE_FASTEST                               = 5,
109}IVE_SPEED_CONFIG;
110
111/** API command type                                   */
112typedef enum
113{
114    IVE_CMD_VIDEO_NA                          = 0x7FFFFFFF,
115    IVE_CMD_VIDEO_CTL                         = IV_CMD_EXTENSIONS + 1,
116    IVE_CMD_VIDEO_ENCODE,
117    IVE_CMD_QUEUE_INPUT,
118    IVE_CMD_DEQUEUE_INPUT,
119    IVE_CMD_QUEUE_OUTPUT,
120    IVE_CMD_DEQUEUE_OUTPUT,
121    IVE_CMD_GET_RECON,
122}IVE_API_COMMAND_TYPE_T;
123
124/** Video Control API command type            */
125typedef enum
126{
127    IVE_CMD_CT_NA                           = 0x7FFFFFFF,
128    IVE_CMD_CTL_SETDEFAULT                  = 0x0,
129    IVE_CMD_CTL_SET_DIMENSIONS              = 0x1,
130    IVE_CMD_CTL_SET_FRAMERATE               = 0x2,
131    IVE_CMD_CTL_SET_BITRATE                 = 0x3,
132    IVE_CMD_CTL_SET_FRAMETYPE               = 0x4,
133    IVE_CMD_CTL_SET_QP                      = 0x5,
134    IVE_CMD_CTL_SET_ENC_MODE                = 0x6,
135    IVE_CMD_CTL_SET_VBV_PARAMS              = 0x7,
136    IVE_CMD_CTL_SET_AIR_PARAMS              = 0x8,
137    IVE_CMD_CTL_SET_ME_PARAMS               = 0X9,
138    IVE_CMD_CTL_SET_GOP_PARAMS              = 0XA,
139    IVE_CMD_CTL_SET_PROFILE_PARAMS          = 0XB,
140    IVE_CMD_CTL_SET_DEBLOCK_PARAMS          = 0XC,
141    IVE_CMD_CTL_SET_IPE_PARAMS              = 0XD,
142    IVE_CMD_CTL_SET_VUI_PARAMS              = 0XE,
143    IVE_CMD_CTL_SET_NUM_CORES               = 0x30,
144    IVE_CMD_CTL_RESET                       = 0xA0,
145    IVE_CMD_CTL_FLUSH                       = 0xB0,
146    IVE_CMD_CTL_GETBUFINFO                  = 0xC0,
147    IVE_CMD_CTL_GETVERSION                  = 0xC1,
148    IVE_CMD_CTL_CODEC_SUBCMD_START          = 0x100,
149}IVE_CONTROL_API_COMMAND_TYPE_T;
150
151/* IVE_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 encoders 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                */
157typedef enum {
158
159    /* Bit 8 - Unsupported input parameter or configuration.                 */
160    IVE_UNSUPPORTEDPARAM                        = 0x8,
161
162    /* Bit 9 - Fatal error (stop the codec).If there is an                  */
163    /* error and this bit is not set, the error is a recoverable one.       */
164    IVE_FATALERROR                              = 0x9,
165
166    IVE_ERROR_BITS_T_DUMMY_ELEMENT              = 0x7FFFFFFF
167}IVE_ERROR_BITS_T;
168
169/* IVE_ERROR_CODES_T: The list of error codes depicting the possible error  */
170/* scenarios that can be encountered while encoding                         */
171typedef enum
172{
173
174    IVE_ERR_NA                                                  = 0x7FFFFFFF,
175    IVE_ERR_NONE                                                = 0x00,
176    IVE_ERR_INVALID_API_CMD                                     = 0x01,
177    IVE_ERR_INVALID_API_SUB_CMD                                 = 0x02,
178    IVE_ERR_IP_GET_MEM_REC_API_STRUCT_SIZE_INCORRECT            = 0x03,
179    IVE_ERR_OP_GET_MEM_REC_API_STRUCT_SIZE_INCORRECT            = 0x04,
180    IVE_ERR_IP_FILL_MEM_REC_API_STRUCT_SIZE_INCORRECT           = 0x05,
181    IVE_ERR_OP_FILL_MEM_REC_API_STRUCT_SIZE_INCORRECT           = 0x06,
182    IVE_ERR_IP_INIT_API_STRUCT_SIZE_INCORRECT                   = 0x07,
183    IVE_ERR_OP_INIT_API_STRUCT_SIZE_INCORRECT                   = 0x08,
184    IVE_ERR_IP_RETRIEVE_MEM_REC_API_STRUCT_SIZE_INCORRECT       = 0x09,
185    IVE_ERR_OP_RETRIEVE_MEM_REC_API_STRUCT_SIZE_INCORRECT       = 0x0A,
186    IVE_ERR_IP_ENCODE_API_STRUCT_SIZE_INCORRECT                 = 0x0B,
187    IVE_ERR_OP_ENCODE_API_STRUCT_SIZE_INCORRECT                 = 0x0C,
188    IVE_ERR_IP_CTL_SETDEF_API_STRUCT_SIZE_INCORRECT             = 0x0D,
189    IVE_ERR_OP_CTL_SETDEF_API_STRUCT_SIZE_INCORRECT             = 0x0E,
190    IVE_ERR_IP_CTL_GETBUFINFO_API_STRUCT_SIZE_INCORRECT         = 0x0F,
191    IVE_ERR_OP_CTL_GETBUFINFO_API_STRUCT_SIZE_INCORRECT         = 0x10,
192    IVE_ERR_IP_CTL_GETVERSION_API_STRUCT_SIZE_INCORRECT         = 0x11,
193    IVE_ERR_OP_CTL_GETVERSION_API_STRUCT_SIZE_INCORRECT         = 0x12,
194    IVE_ERR_IP_CTL_FLUSH_API_STRUCT_SIZE_INCORRECT              = 0x13,
195    IVE_ERR_OP_CTL_FLUSH_API_STRUCT_SIZE_INCORRECT              = 0x14,
196    IVE_ERR_IP_CTL_RESET_API_STRUCT_SIZE_INCORRECT              = 0x15,
197    IVE_ERR_OP_CTL_RESET_API_STRUCT_SIZE_INCORRECT              = 0x16,
198    IVE_ERR_IP_CTL_SETCORES_API_STRUCT_SIZE_INCORRECT           = 0x17,
199    IVE_ERR_OP_CTL_SETCORES_API_STRUCT_SIZE_INCORRECT           = 0x18,
200    IVE_ERR_IP_CTL_SETDIM_API_STRUCT_SIZE_INCORRECT             = 0x19,
201    IVE_ERR_OP_CTL_SETDIM_API_STRUCT_SIZE_INCORRECT             = 0x1A,
202    IVE_ERR_IP_CTL_SETFRAMERATE_API_STRUCT_SIZE_INCORRECT       = 0x1B,
203    IVE_ERR_OP_CTL_SETFRAMERATE_API_STRUCT_SIZE_INCORRECT       = 0x1C,
204    IVE_ERR_IP_CTL_SETBITRATE_API_STRUCT_SIZE_INCORRECT         = 0x1D,
205    IVE_ERR_OP_CTL_SETBITRATE_API_STRUCT_SIZE_INCORRECT         = 0x1E,
206    IVE_ERR_IP_CTL_SETFRAMETYPE_API_STRUCT_SIZE_INCORRECT       = 0x1F,
207    IVE_ERR_OP_CTL_SETFRAMETYPE_API_STRUCT_SIZE_INCORRECT       = 0x20,
208    IVE_ERR_IP_CTL_SETMEPARAMS_API_STRUCT_SIZE_INCORRECT        = 0x21,
209    IVE_ERR_OP_CTL_SETMEPARAMS_API_STRUCT_SIZE_INCORRECT        = 0x22,
210    IVE_ERR_IP_CTL_SETIPEPARAMS_API_STRUCT_SIZE_INCORRECT       = 0x23,
211    IVE_ERR_OP_CTL_SETIPEPARAMS_API_STRUCT_SIZE_INCORRECT       = 0x24,
212    IVE_ERR_IP_CTL_SETGOPPARAMS_API_STRUCT_SIZE_INCORRECT       = 0x25,
213    IVE_ERR_OP_CTL_SETGOPPARAMS_API_STRUCT_SIZE_INCORRECT       = 0x26,
214    IVE_ERR_IP_CTL_SETDEBLKPARAMS_API_STRUCT_SIZE_INCORRECT     = 0x27,
215    IVE_ERR_OP_CTL_SETDEBLKPARAMS_API_STRUCT_SIZE_INCORRECT     = 0x28,
216    IVE_ERR_IP_CTL_SETQPPARAMS_API_STRUCT_SIZE_INCORRECT        = 0x29,
217    IVE_ERR_OP_CTL_SETQPPARAMS_API_STRUCT_SIZE_INCORRECT        = 0x2A,
218    IVE_ERR_FILL_NUM_MEM_RECS_POINTER_NULL                      = 0x2B,
219    IVE_ERR_NUM_MEM_REC_NOT_SUFFICIENT                          = 0x2C,
220    IVE_ERR_MEM_REC_STRUCT_SIZE_INCORRECT                       = 0x2D,
221    IVE_ERR_MEM_REC_BASE_POINTER_NULL                           = 0x2E,
222    IVE_ERR_MEM_REC_OVERLAP_ERR                                 = 0x2F,
223    IVE_ERR_MEM_REC_INSUFFICIENT_SIZE                           = 0x30,
224    IVE_ERR_MEM_REC_ALIGNMENT_ERR                               = 0x31,
225    IVE_ERR_MEM_REC_INCORRECT_TYPE                              = 0x32,
226    IVE_ERR_HANDLE_NULL                                         = 0x33,
227    IVE_ERR_HANDLE_STRUCT_SIZE_INCORRECT                        = 0x34,
228    IVE_ERR_API_FUNCTION_PTR_NULL                               = 0x35,
229    IVE_ERR_INVALID_CODEC_HANDLE                                = 0x36,
230    IVE_ERR_CTL_GET_VERSION_BUFFER_IS_NULL                      = 0x37,
231    IVE_ERR_IP_CTL_SETAIRPARAMS_API_STRUCT_SIZE_INCORRECT       = 0x38,
232    IVE_ERR_OP_CTL_SETAIRPARAMS_API_STRUCT_SIZE_INCORRECT       = 0x39,
233    IVE_ERR_IP_CTL_SETENCMODE_API_STRUCT_SIZE_INCORRECT         = 0x3A,
234    IVE_ERR_OP_CTL_SETENCMODE_API_STRUCT_SIZE_INCORRECT         = 0x3B,
235    IVE_ERR_IP_CTL_SETVBVPARAMS_API_STRUCT_SIZE_INCORRECT       = 0x3C,
236    IVE_ERR_OP_CTL_SETVBVPARAMS_API_STRUCT_SIZE_INCORRECT       = 0x3D,
237    IVE_ERR_IP_CTL_SETPROFILE_API_STRUCT_SIZE_INCORRECT         = 0x3E,
238    IVE_ERR_OP_CTL_SETPROFILE_API_STRUCT_SIZE_INCORRECT         = 0x3F,
239    IVE_ERR_IP_CTL_SET_VUI_STRUCT_SIZE_INCORRECT                = 0x40,
240    IVE_ERR_OP_CTL_SET_VUI_STRUCT_SIZE_INCORRECT                = 0x41,
241}IVE_ERROR_CODES_T;
242
243
244/*****************************************************************************/
245/*   Initialize encoder                                                      */
246/*****************************************************************************/
247
248/** Input structure : Initialize the encoder                                */
249typedef struct
250{
251    /** size of the structure                                               */
252    UWORD32                                 u4_size;
253
254    /** Command type                                                        */
255    IV_API_COMMAND_TYPE_T                   e_cmd;
256
257    /** Number of memory records                                            */
258    UWORD32                                 u4_num_mem_rec;
259
260    /** pointer to array of memrecords structures should be filled by codec
261    with details of memory resource requirements                            */
262    iv_mem_rec_t                            *ps_mem_rec;
263
264    /** maximum width for which codec should request memory requirements    */
265    UWORD32                                 u4_max_wd;
266
267    /** maximum height for which codec should request memory requirements   */
268    UWORD32                                 u4_max_ht;
269
270    /** Maximum number of reference frames                                  */
271    UWORD32                                 u4_max_ref_cnt;
272
273    /** Maximum number of reorder frames                                    */
274    UWORD32                                 u4_max_reorder_cnt;
275
276    /** Maximum level supported                                             */
277    UWORD32                                 u4_max_level;
278
279    /** Input color format                                                  */
280    IV_COLOR_FORMAT_T                       e_inp_color_fmt;
281
282    /** Flag to enable/disable - To be used only for debugging/testing      */
283    UWORD32                                 u4_enable_recon;
284
285    /** Recon color format                                                  */
286    IV_COLOR_FORMAT_T                       e_recon_color_fmt;
287
288    /** Rate control mode                                                   */
289    IVE_RC_MODE_T                           e_rc_mode;
290
291    /** Maximum frame rate to be supported                                  */
292    UWORD32                                 u4_max_framerate;
293
294    /** Maximum bitrate to be supported                                     */
295    UWORD32                                 u4_max_bitrate;
296
297    /** Maximum number of consecutive  B frames                             */
298    UWORD32                                 u4_num_bframes;
299
300    /** Content type Interlaced/Progressive                                 */
301    IV_CONTENT_TYPE_T                       e_content_type;
302
303    /** Maximum search range to be used in X direction                      */
304    UWORD32                                 u4_max_srch_rng_x;
305
306    /** Maximum search range to be used in Y direction                      */
307    UWORD32                                 u4_max_srch_rng_y;
308
309    /** Slice Mode                                                          */
310    IVE_SLICE_MODE_T                        e_slice_mode;
311
312    /** Slice parameter                                                     */
313    UWORD32                                 u4_slice_param;
314
315    /** Processor architecture                                          */
316    IV_ARCH_T                                   e_arch;
317
318    /** SOC details                                                     */
319    IV_SOC_T                                    e_soc;
320
321
322}ive_init_ip_t;
323
324/** Output structure : Initialize the encoder                           */
325typedef struct
326{
327    /** Size of the structure                                           */
328    UWORD32                                 u4_size;
329
330    /** Return error code                                               */
331    UWORD32                                 u4_error_code;
332}ive_init_op_t;
333
334
335/*****************************************************************************/
336/*   Video Encode - Deprecated                                               */
337/*****************************************************************************/
338
339typedef struct
340{
341    /** size of the structure                                           */
342    UWORD32                                 u4_size;
343
344    IVE_API_COMMAND_TYPE_T                  e_cmd;
345
346    /** Descriptor for input raw buffer                                 */
347    iv_raw_buf_t                            s_inp_buf;
348
349    /** Buffer containing pic info if mb_info_type is non-zero           */
350    void                                    *pv_bufs;
351
352    /** Flag to indicate if mb info is sent along with input buffer     */
353    UWORD32                                 u4_mb_info_type;
354
355    /** Buffer containing mb info if mb_info_type is non-zero           */
356    void                                    *pv_mb_info;
357
358    /** Flag to indicate if pic info is sent along with input buffer     */
359    UWORD32                                 u4_pic_info_type;
360
361    /** Buffer containing pic info if mb_info_type is non-zero           */
362    void                                    *pv_pic_info;
363
364    /** Lower 32bits of input time stamp                                */
365    UWORD32                                 u4_timestamp_low;
366
367    /** Upper 32bits of input time stamp                                */
368    UWORD32                                 u4_timestamp_high;
369
370    /** Flag to indicate if this is the last input in the stream       */
371    UWORD32                                 u4_is_last;
372
373    /** Descriptor for output bit-stream buffer                         */
374    iv_bits_buf_t                           s_out_buf;
375
376    /** Descriptor for recon buffer                                     */
377    iv_raw_buf_t                            s_recon_buf;
378
379}ive_video_encode_ip_t;
380
381
382typedef struct
383{
384    /** size of the structure                                           */
385    UWORD32                                 u4_size;
386
387    /** error code                                                      */
388    UWORD32                                 u4_error_code;
389
390    /* Output present                                                   */
391    WORD32                                  output_present;
392
393    /* dump recon                                                       */
394    WORD32                                  dump_recon;
395
396    /* encoded frame type                                               */
397    UWORD32                                 u4_encoded_frame_type;
398
399    /** Flag to indicate if this is the last output from the encoder    */
400    UWORD32                                 u4_is_last;
401
402    /** Lower 32bits of input time stamp                                */
403    UWORD32                                 u4_timestamp_low;
404
405    /** Upper 32bits of input time stamp                                */
406    UWORD32                                 u4_timestamp_high;
407
408    /** Descriptor for input raw buffer freed from codec                */
409    iv_raw_buf_t                            s_inp_buf;
410
411    /** Descriptor for output bit-stream buffer                         */
412    iv_bits_buf_t                           s_out_buf;
413
414    /** Descriptor for recon buffer                                     */
415    iv_raw_buf_t                            s_recon_buf;
416
417}ive_video_encode_op_t;
418
419/*****************************************************************************/
420/*   Queue Input raw buffer - Send the YUV buffer to be encoded              */
421/*****************************************************************************/
422/** Input structure : Queue input buffer to the encoder                 */
423typedef struct
424{
425    /** size of the structure                                           */
426    UWORD32                                 u4_size;
427
428    /** Command : IVE_CMD_QUEUE_INPUT                                   */
429    IVE_API_COMMAND_TYPE_T                  e_cmd;
430
431    /** Descriptor for input raw buffer                                 */
432    iv_raw_buf_t                            s_inp_buf;
433
434    /** Flag to indicate if mb info is sent along with input buffer     */
435    UWORD32                                 u4_mb_info_type;
436
437    /** Flag to indicate the size of mb info structure                  */
438    UWORD32                                 u4_mb_info_size;
439
440    /** Buffer containing mb info if mb_info_type is non-zero           */
441    void                                    *pv_mb_info;
442
443    /** Flag to indicate if pic info is sent along with input buffer     */
444    UWORD32                                 u4_pic_info_type;
445
446    /** Buffer containing pic info if mb_info_type is non-zero           */
447    void                                    *pv_pic_info;
448
449    /** Lower 32bits of input time stamp                                */
450    UWORD32                                 u4_timestamp_low;
451
452    /** Upper 32bits of input time stamp                                */
453    UWORD32                                 u4_timestamp_high;
454
455
456    /** Flag to enable/disable blocking the current API call            */
457    UWORD32                                 u4_is_blocking;
458
459    /** Flag to indicate if this is the last input in the stream       */
460    UWORD32                                 u4_is_last;
461
462}ive_queue_inp_ip_t;
463
464/** Input structure : Queue output buffer to the encoder                */
465typedef struct
466{
467    /** size of the structure                                           */
468    UWORD32                                 u4_size;
469
470    /** Return error code                                               */
471    UWORD32                                 u4_error_code;
472}ive_queue_inp_op_t;
473
474/*****************************************************************************/
475/*   Dequeue Input raw buffer - Get free YUV buffer from the encoder         */
476/*****************************************************************************/
477/** Input structure : Dequeue input buffer from the encoder             */
478
479typedef struct
480{
481    /** size of the structure                                           */
482    UWORD32                                 u4_size;
483
484    /** Command: IVE_CMD_DEQUEUE_INPUT                                  */
485    IVE_API_COMMAND_TYPE_T                  e_cmd;
486
487    /** Flag to enable/disable blocking the current API call            */
488    UWORD32                                 u4_is_blocking;
489
490}ive_dequeue_inp_ip_t;
491
492/** Output structure : Dequeue input buffer from the encoder            */
493typedef struct
494{
495    /** size of the structure                                           */
496    UWORD32                                 u4_size;
497
498    /** Return error code                                               */
499    UWORD32                                 u4_error_code;
500
501    /** Buffer descriptor of the buffer returned from encoder           */
502    iv_raw_buf_t                            s_inp_buf;
503
504    /** Flag to indicate if mb info is sent along with input buffer     */
505    UWORD32                                 u4_mb_info_type;
506
507    /** Flag to indicate the size of mb info structure                  */
508    UWORD32                                 u4_mb_info_size;
509
510    /** Buffer containing mb info if mb_info_type is non-zero           */
511    void                                    *pv_mb_info;
512
513    /** Flag to indicate if pic info is sent along with input buffer     */
514    UWORD32                                 u4_pic_info_type;
515
516    /** Buffer containing pic info if mb_info_type is non-zero           */
517    void                                    *pv_pic_info;
518
519    /** Lower 32bits of input time stamp                                */
520    UWORD32                                 u4_timestamp_low;
521
522    /** Upper 32bits of input time stamp                                */
523    UWORD32                                 u4_timestamp_high;
524
525    /** Flag to indicate if this is the last input in the stream       */
526    UWORD32                                 u4_is_last;
527
528
529}ive_dequeue_inp_op_t;
530
531/*****************************************************************************/
532/*   Queue Output bitstream buffer - Send the bistream buffer to be filled   */
533/*****************************************************************************/
534/** Input structure : Queue output buffer to the encoder                 */
535
536typedef struct
537{
538    /** size of the structure                                           */
539    UWORD32                                 u4_size;
540
541    /** Command : IVE_CMD_QUEUE_OUTPUT                                  */
542    IVE_API_COMMAND_TYPE_T                  e_cmd;
543
544    /** Descriptor for output bit-stream buffer                         */
545    iv_bits_buf_t                           s_out_buf;
546
547    /** Flag to enable/disable blocking the current API call            */
548    UWORD32                                 u4_is_blocking;
549
550    /** Flag to indicate if this is the last output in the stream       */
551    UWORD32                                 u4_is_last;
552
553}ive_queue_out_ip_t;
554
555/** Output structure : Queue output buffer to the encoder               */
556typedef struct
557{
558    /** size of the structure                                           */
559    UWORD32                                 u4_size;
560
561    /** Return error code                                               */
562    UWORD32                                 u4_error_code;
563
564}ive_queue_out_op_t;
565
566
567/*****************************************************************************/
568/* Dequeue Output bitstream buffer - Get the bistream buffer filled          */
569/*****************************************************************************/
570/** Input structure : Dequeue output buffer from the encoder            */
571
572typedef struct
573{
574    /** size of the structure                                           */
575    UWORD32                                 u4_size;
576
577    /** Command : IVE_CMD_DEQUEUE_OUTPUT                                */
578    IVE_API_COMMAND_TYPE_T                  e_cmd;
579
580    /** Flag to enable/disable blocking the current API call            */
581    UWORD32                                 u4_is_blocking;
582}ive_dequeue_out_ip_t;
583
584/** Output structure : Dequeue output buffer from the encoder           */
585typedef struct
586{
587    /** size of the structure                                           */
588    UWORD32                                 u4_size;
589
590    /** Return error code                                               */
591    UWORD32                                 u4_error_code;
592
593    /** Descriptor for output bit-stream buffer                         */
594    iv_bits_buf_t                           s_out_buf;
595
596    /** Lower 32bits of timestamp corresponding to this buffer           */
597    UWORD32                                 u4_timestamp_low;
598
599    /** Upper 32bits of timestamp corresponding to this buffer           */
600    UWORD32                                 u4_timestamp_high;
601
602    /** Flag to indicate if this is the last output in the stream       */
603    UWORD32                                 u4_is_last;
604
605}ive_dequeue_out_op_t;
606
607/*****************************************************************************/
608/* Get Recon data - Get the reconstructed data from encoder                  */
609/*****************************************************************************/
610/** Input structure : Get recon data from the encoder                   */
611
612typedef struct
613{
614    /** size of the structure                                           */
615    UWORD32                                 u4_size;
616
617    /** Command : IVE_CMD_GET_RECON                                     */
618    IVE_API_COMMAND_TYPE_T                  e_cmd;
619
620    /** Flag to enable/disable blocking the current API call            */
621    UWORD32                                 u4_is_blocking;
622
623    /** Descriptor for recon buffer                                     */
624    iv_raw_buf_t                            s_recon_buf;
625
626    /** Flag to indicate if this is the last recon in the stream       */
627    UWORD32                                 u4_is_last;
628
629}ive_get_recon_ip_t;
630
631/** Output structure : Get recon data from the encoder                  */
632typedef struct
633{
634    /** size of the structure                                           */
635    UWORD32                                 u4_size;
636
637    /** Return error code                                               */
638    UWORD32                                 u4_error_code;
639
640    /** Lower 32bits of time stamp corresponding to this buffer          */
641    UWORD32                                 u4_timestamp_low;
642
643    /** Upper 32bits of time stamp corresponding to this buffer          */
644    UWORD32                                 u4_timestamp_high;
645
646    /** Flag to indicate if this is the last recon in the stream       */
647    UWORD32                                 u4_is_last;
648
649}ive_get_recon_op_t;
650
651/*****************************************************************************/
652/*   Video control  Flush                                                    */
653/*****************************************************************************/
654
655/** Input structure : Flush all the buffers from the encoder            */
656typedef struct
657{
658    /** size of the structure                                           */
659    UWORD32                                 u4_size;
660
661    /** Command type : IVE_CMD_VIDEO_CTL                                */
662    IVE_API_COMMAND_TYPE_T                  e_cmd;
663
664    /** Sub command type : IVE_CMD_CTL_FLUSH                            */
665    IVE_CONTROL_API_COMMAND_TYPE_T          e_sub_cmd;
666}ive_ctl_flush_ip_t;
667
668/** Output structure : Flush all the buffers from the encoder           */
669typedef struct
670{
671    /** size of the structure                                           */
672    UWORD32                                 u4_size;
673
674    /** Return error code                                               */
675    UWORD32                                 u4_error_code;
676}ive_ctl_flush_op_t;
677
678/*****************************************************************************/
679/*   Video control reset                                                     */
680/*****************************************************************************/
681/** Input structure : Reset the encoder                                 */
682typedef struct
683{
684    /** size of the structure                                           */
685    UWORD32                                 u4_size;
686
687    /** Command type : IVE_CMD_VIDEO_CTL                                */
688    IVE_API_COMMAND_TYPE_T                  e_cmd;
689
690    /** Sub command type : IVE_CMD_CTL_RESET                            */
691    IVE_CONTROL_API_COMMAND_TYPE_T          e_sub_cmd;
692}ive_ctl_reset_ip_t;
693
694/** Output structure : Reset the encoder                                */
695typedef struct
696{
697    /** size of the structure                                           */
698    UWORD32                                 u4_size;
699
700    /** Return error code                                               */
701    UWORD32                                 u4_error_code;
702}ive_ctl_reset_op_t;
703
704/*****************************************************************************/
705/*   Video control:Get Buf Info                                              */
706/*****************************************************************************/
707
708/** Input structure : Get encoder buffer requirements                   */
709typedef struct
710{
711    /** size of the structure                                           */
712    UWORD32                                     u4_size;
713
714    /** Command type : IVE_CMD_VIDEO_CTL                                */
715    IVE_API_COMMAND_TYPE_T                      e_cmd;
716
717    /** Sub command type : IVE_CMD_CTL_GETBUFINFO                       */
718    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
719
720    /** maximum width for which codec should request memory requirements    */
721    UWORD32                                     u4_max_wd;
722
723    /** maximum height for which codec should request memory requirements   */
724    UWORD32                                     u4_max_ht;
725
726    /** Input color format                                                  */
727    IV_COLOR_FORMAT_T                           e_inp_color_fmt;
728
729}ive_ctl_getbufinfo_ip_t;
730
731/** Output structure : Get encoder buffer requirements                  */
732typedef struct
733{
734    /** size of the structure                                           */
735    UWORD32 u4_size;
736
737    /** Return error code                                               */
738    UWORD32 u4_error_code;
739
740    /** Minimum number of input buffers required for codec              */
741    UWORD32 u4_min_inp_bufs;
742
743    /** Minimum number of output buffers required for codec             */
744    UWORD32 u4_min_out_bufs;
745
746    /** Number of components in input buffers required for codec        */
747    UWORD32 u4_inp_comp_cnt;
748
749    /** Number of components in output buffers required for codec       */
750    UWORD32 u4_out_comp_cnt;
751
752    /** Minimum sizes of each component in input buffer required        */
753    UWORD32 au4_min_in_buf_size[IVE_MAX_IO_BUFFER_COMPONENTS];
754
755    /** Minimum sizes of each component in output buffer  required      */
756    UWORD32 au4_min_out_buf_size[IVE_MAX_IO_BUFFER_COMPONENTS];
757
758}ive_ctl_getbufinfo_op_t;
759
760
761
762
763/*****************************************************************************/
764/*   Video control:Get Version Info                                          */
765/*****************************************************************************/
766
767/** Input structure : Get encoder version information                   */
768typedef struct
769{
770    /** size of the structure                                           */
771    UWORD32                                     u4_size;
772    /** Command type : IVE_CMD_VIDEO_CTL                                */
773    IVE_API_COMMAND_TYPE_T                      e_cmd;
774
775    /** Sub command type : IVE_CMD_CTL_GETVERSION                       */
776    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
777
778    /** Buffer where version info will be returned                      */
779    UWORD8                                      *pu1_version;
780
781    /** Size of the buffer allocated for version info                   */
782    UWORD32                                     u4_version_bufsize;
783}ive_ctl_getversioninfo_ip_t;
784
785/** Output structure : Get encoder version information                  */
786typedef struct
787{
788    /** size of the structure                                           */
789    UWORD32                                     u4_size;
790
791    /** Return error code                                               */
792    UWORD32                                     u4_error_code;
793}ive_ctl_getversioninfo_op_t;
794
795
796/*****************************************************************************/
797/*   Video control:set  default params                                       */
798/*****************************************************************************/
799/** Input structure : Set default encoder parameters                    */
800typedef struct
801{
802    /** size of the structure                                           */
803    UWORD32                                     u4_size;
804
805    /** Command type : IVE_CMD_VIDEO_CTL                                */
806    IVE_API_COMMAND_TYPE_T                      e_cmd;
807
808    /** Sub command type : IVE_CMD_CTL_SETDEFAULT                       */
809    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
810
811    /** Lower 32bits of time stamp corresponding to input buffer,
812     * from which this command takes effect                             */
813    UWORD32                                 u4_timestamp_low;
814
815    /** Upper 32bits of time stamp corresponding to input buffer,
816     * from which this command takes effect                             */
817    UWORD32                                 u4_timestamp_high;
818
819}ive_ctl_setdefault_ip_t;
820
821/** Output structure : Set default encoder parameters                   */
822typedef struct
823{
824    /** size of the structure                                           */
825    UWORD32                                     u4_size;
826
827    /** Return error code                                               */
828    UWORD32                                     u4_error_code;
829}ive_ctl_setdefault_op_t;
830
831/*****************************************************************************/
832/*   Video control  Set Frame dimensions                                     */
833/*****************************************************************************/
834
835/** Input structure : Set frame dimensions                              */
836typedef struct
837{
838    /** size of the structure                                           */
839    UWORD32                                     u4_size;
840
841    /** Command type : IVE_CMD_VIDEO_CTL                                */
842    IVE_API_COMMAND_TYPE_T                      e_cmd;
843
844    /** Sub command type : IVE_CMD_CTL_SET_DIMENSIONS                   */
845    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
846
847    /** Input width                                                     */
848    UWORD32                                     u4_wd;
849
850    /** Input height                                                    */
851    UWORD32                                     u4_ht;
852
853    /** Lower 32bits of time stamp corresponding to input buffer,
854     * from which this command takes effect                             */
855    UWORD32                                 u4_timestamp_low;
856
857    /** Upper 32bits of time stamp corresponding to input buffer,
858     * from which this command takes effect                             */
859    UWORD32                                 u4_timestamp_high;
860
861}ive_ctl_set_dimensions_ip_t;
862
863/** Output structure : Set frame dimensions                             */
864typedef struct
865{
866    /** size of the structure                                           */
867    UWORD32                                     u4_size;
868
869    /** Return error code                                               */
870    UWORD32                                     u4_error_code;
871}ive_ctl_set_dimensions_op_t;
872
873
874/*****************************************************************************/
875/*   Video control  Set Frame rates                                          */
876/*****************************************************************************/
877
878/** Input structure : Set frame rate                                    */
879typedef struct
880{
881    /** size of the structure                                           */
882    UWORD32                                     u4_size;
883
884    /** Command type : IVE_CMD_VIDEO_CTL                                */
885    IVE_API_COMMAND_TYPE_T                      e_cmd;
886
887    /** Sub command type : IVE_CMD_CTL_SET_FRAMERATE                   */
888    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
889
890    /** Source frame rate                                               */
891    UWORD32                                     u4_src_frame_rate;
892
893    /** Target frame rate                                               */
894    UWORD32                                     u4_tgt_frame_rate;
895
896    /** Lower 32bits of time stamp corresponding to input buffer,
897     * from which this command takes effect                             */
898    UWORD32                                 u4_timestamp_low;
899
900    /** Upper 32bits of time stamp corresponding to input buffer,
901     * from which this command takes effect                             */
902    UWORD32                                 u4_timestamp_high;
903
904}ive_ctl_set_frame_rate_ip_t;
905
906/** Output structure : Set frame rate                                    */
907typedef struct
908{
909    /** size of the structure                                           */
910    UWORD32                                     u4_size;
911
912    /** Return error code                                               */
913    UWORD32                                     u4_error_code;
914}ive_ctl_set_frame_rate_op_t;
915
916/*****************************************************************************/
917/*   Video control  Set Bitrate                                              */
918/*****************************************************************************/
919
920/** Input structure : Set bitrate                                       */
921typedef struct
922{
923    /** size of the structure                                           */
924    UWORD32                                     u4_size;
925
926    /** Command type : IVE_CMD_VIDEO_CTL                                */
927    IVE_API_COMMAND_TYPE_T                      e_cmd;
928
929    /** Sub command type : IVE_CMD_CTL_SET_BITRATE                      */
930    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
931
932    /** Target bitrate in kilobits per second                           */
933    UWORD32                                     u4_target_bitrate;
934
935    /** Lower 32bits of time stamp corresponding to input buffer,
936     * from which this command takes effect                             */
937    UWORD32                                 u4_timestamp_low;
938
939    /** Upper 32bits of time stamp corresponding to input buffer,
940     * from which this command takes effect                             */
941    UWORD32                                 u4_timestamp_high;
942
943}ive_ctl_set_bitrate_ip_t;
944
945/** Output structure : Set bitrate                                      */
946typedef struct
947{
948    /** size of the structure                                           */
949    UWORD32                                     u4_size;
950
951    /** Return error code                                               */
952    UWORD32                                     u4_error_code;
953}ive_ctl_set_bitrate_op_t;
954
955/*****************************************************************************/
956/*   Video control  Set Frame type                                           */
957/*****************************************************************************/
958
959/** Input structure : Set frametype                                     */
960typedef struct
961{
962    /** size of the structure                                           */
963    UWORD32                                     u4_size;
964
965    /** Command type : IVE_CMD_VIDEO_CTL                                */
966    IVE_API_COMMAND_TYPE_T                      e_cmd;
967
968    /** Sub command type : IVE_CMD_CTL_SET_FRAMETYPE                    */
969    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
970
971    /** Force current frame type                                        */
972    IV_PICTURE_CODING_TYPE_T                    e_frame_type;
973
974    /** Lower 32bits of time stamp corresponding to input buffer,
975     * from which this command takes effect                             */
976    UWORD32                                 u4_timestamp_low;
977
978    /** Upper 32bits of time stamp corresponding to input buffer,
979     * from which this command takes effect                             */
980    UWORD32                                 u4_timestamp_high;
981
982}ive_ctl_set_frame_type_ip_t;
983
984/** Output structure : Set frametype                                     */
985typedef struct
986{
987    /** size of the structure                                           */
988    UWORD32                                     u4_size;
989
990    /** Return error code                                               */
991    UWORD32                                     u4_error_code;
992}ive_ctl_set_frame_type_op_t;
993
994/*****************************************************************************/
995/*   Video control  Set Encode mode                                          */
996/*****************************************************************************/
997
998/** Input structure : Set encode mode                                   */
999typedef struct
1000{
1001    /** size of the structure                                           */
1002    UWORD32                                     u4_size;
1003
1004    /** Command type : IVE_CMD_VIDEO_CTL                                */
1005    IVE_API_COMMAND_TYPE_T                      e_cmd;
1006
1007    /** Sub command type : IVE_CMD_CTL_SET_ENC_MODE                    */
1008    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
1009
1010    /** Encoder mode                                                    */
1011    IVE_ENC_MODE_T                              e_enc_mode;
1012
1013    /** Lower 32bits of time stamp corresponding to input buffer,
1014     * from which this command takes effect                             */
1015    UWORD32                                 u4_timestamp_low;
1016
1017    /** Upper 32bits of time stamp corresponding to input buffer,
1018     * from which this command takes effect                             */
1019    UWORD32                                 u4_timestamp_high;
1020
1021}ive_ctl_set_enc_mode_ip_t;
1022
1023/** Output structure : Set encode mode                                  */
1024typedef struct
1025{
1026    /** size of the structure                                           */
1027    UWORD32                                     u4_size;
1028
1029    /** Return error code                                               */
1030    UWORD32                                     u4_error_code;
1031
1032}ive_ctl_set_enc_mode_op_t;
1033
1034/*****************************************************************************/
1035/*   Video control  Set QP                                                   */
1036/*****************************************************************************/
1037
1038/** Input structure : Set QP                                            */
1039typedef struct
1040{
1041    /** size of the structure                                           */
1042    UWORD32                                     u4_size;
1043
1044    /** Command type : IVE_CMD_VIDEO_CTL                                */
1045    IVE_API_COMMAND_TYPE_T                      e_cmd;
1046
1047    /** Sub command type : IVE_CMD_CTL_SET_QP                           */
1048    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
1049
1050    /** Set initial Qp for I pictures                                   */
1051    UWORD32                                     u4_i_qp;
1052
1053    /** Set initial Qp for P pictures                                   */
1054    UWORD32                                     u4_p_qp;
1055
1056    /** Set initial Qp for B pictures                                   */
1057    UWORD32                                     u4_b_qp;
1058
1059    /** Set minimum Qp for I pictures                                   */
1060    UWORD32                                     u4_i_qp_min;
1061
1062    /** Set maximum Qp for I pictures                                   */
1063    UWORD32                                     u4_i_qp_max;
1064
1065    /** Set minimum Qp for P pictures                                   */
1066    UWORD32                                     u4_p_qp_min;
1067
1068    /** Set maximum Qp for P pictures                                   */
1069    UWORD32                                     u4_p_qp_max;
1070
1071    /** Set minimum Qp for B pictures                                   */
1072    UWORD32                                     u4_b_qp_min;
1073
1074    /** Set maximum Qp for B pictures                                   */
1075    UWORD32                                     u4_b_qp_max;
1076
1077    /** Lower 32bits of time stamp corresponding to input buffer,
1078     * from which this command takes effect                             */
1079    UWORD32                                 u4_timestamp_low;
1080
1081    /** Upper 32bits of time stamp corresponding to input buffer,
1082     * from which this command takes effect                             */
1083    UWORD32                                 u4_timestamp_high;
1084
1085
1086}ive_ctl_set_qp_ip_t;
1087
1088/** Output structure : Set QP                                           */
1089typedef struct
1090{
1091    /** size of the structure                                           */
1092    UWORD32                                     u4_size;
1093
1094    /** Return error code                                               */
1095    UWORD32                                     u4_error_code;
1096}ive_ctl_set_qp_op_t;
1097
1098/*****************************************************************************/
1099/*   Video control  Set AIR params                                           */
1100/*****************************************************************************/
1101
1102/** Input structure : Set AIR params                                    */
1103typedef struct
1104{
1105    /** size of the structure                                           */
1106    UWORD32                                     u4_size;
1107    /** Command type : IVE_CMD_VIDEO_CTL                                */
1108    IVE_API_COMMAND_TYPE_T                      e_cmd;
1109
1110    /** Sub command type : IVE_CMD_CTL_SET_AIR_PARAMS                   */
1111    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
1112
1113    /** Adaptive intra refresh mode                                     */
1114    IVE_AIR_MODE_T                              e_air_mode;
1115
1116    /** Adaptive intra refresh period in frames                         */
1117    UWORD32                                     u4_air_refresh_period;
1118
1119    /** Lower 32bits of time stamp corresponding to input buffer,
1120     * from which this command takes effect                             */
1121    UWORD32                                 u4_timestamp_low;
1122
1123    /** Upper 32bits of time stamp corresponding to input buffer,
1124     * from which this command takes effect                             */
1125    UWORD32                                 u4_timestamp_high;
1126
1127
1128}ive_ctl_set_air_params_ip_t;
1129
1130/** Output structure : Set AIR params                                   */
1131typedef struct
1132{
1133    /** size of the structure                                           */
1134    UWORD32                                     u4_size;
1135
1136    /** Return error code                                               */
1137    UWORD32                                     u4_error_code;
1138}ive_ctl_set_air_params_op_t;
1139
1140/*****************************************************************************/
1141/*   Video control  Set VBV params                                           */
1142/*****************************************************************************/
1143
1144/** Input structure : Set VBV params                                    */
1145typedef struct
1146{
1147    /** size of the structure                                           */
1148    UWORD32                                     u4_size;
1149
1150    /** Command type : IVE_CMD_VIDEO_CTL                                */
1151    IVE_API_COMMAND_TYPE_T                      e_cmd;
1152
1153    /** Sub command type : IVE_CMD_CTL_SET_VBV_PARAMS                   */
1154    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
1155
1156    /** VBV buffer delay                                                */
1157    UWORD32                                     u4_vbv_buffer_delay;
1158
1159    /** VBV buffer size                                                 */
1160    UWORD32                                     u4_vbv_buf_size;
1161
1162    /** Lower 32bits of time stamp corresponding to input buffer,
1163     * from which this command takes effect                             */
1164    UWORD32                                 u4_timestamp_low;
1165
1166    /** Upper 32bits of time stamp corresponding to input buffer,
1167     * from which this command takes effect                             */
1168    UWORD32                                 u4_timestamp_high;
1169
1170
1171}ive_ctl_set_vbv_params_ip_t;
1172
1173/** Output structure : Set VBV params                                   */
1174typedef struct
1175{
1176    /** size of the structure                                           */
1177    UWORD32                                     u4_size;
1178
1179    /** Return error code                                               */
1180    UWORD32                                     u4_error_code;
1181}ive_ctl_set_vbv_params_op_t;
1182
1183
1184/*****************************************************************************/
1185/*   Video control  Set Processor Details                                    */
1186/*****************************************************************************/
1187
1188/** Input structure : Set processor details                             */
1189typedef struct
1190{
1191    /** size of the structure                                           */
1192    UWORD32                                     u4_size;
1193
1194    /** Command type : IVE_CMD_VIDEO_CTL                                */
1195    IVE_API_COMMAND_TYPE_T                      e_cmd;
1196
1197    /** Sub command type : IVE_CMD_CTL_SET_NUM_CORES                    */
1198    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
1199
1200    /** Total number of cores to be used                                */
1201    UWORD32                                     u4_num_cores;
1202
1203    /** Lower 32bits of time stamp corresponding to input buffer,
1204     * from which this command takes effect                             */
1205    UWORD32                                 u4_timestamp_low;
1206
1207    /** Upper 32bits of time stamp corresponding to input buffer,
1208     * from which this command takes effect                             */
1209    UWORD32                                 u4_timestamp_high;
1210
1211}ive_ctl_set_num_cores_ip_t;
1212
1213/** Output structure : Set processor details                            */
1214typedef struct
1215{
1216    /** size of the structure                                           */
1217    UWORD32                                     u4_size;
1218
1219    /** Return error code                                               */
1220    UWORD32                                     u4_error_code;
1221}ive_ctl_set_num_cores_op_t;
1222
1223/*****************************************************************************/
1224/*   Video control  Set Intra Prediction estimation params                   */
1225/*****************************************************************************/
1226
1227/** Input structure : Set IPE params                                    */
1228typedef struct
1229{
1230    /** size of the structure                                           */
1231    UWORD32                                     u4_size;
1232
1233    /** Command type : IVE_CMD_VIDEO_CTL                                */
1234    IVE_API_COMMAND_TYPE_T                      e_cmd;
1235
1236    /** Sub command type : IVE_CMD_CTL_SET_IPE_PARAMS                   */
1237    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
1238
1239    /** Flag to enable/disbale intra 4x4 analysis                       */
1240    UWORD32                                     u4_enable_intra_4x4;
1241
1242    /** Flag to enable/disable pre-enc stage of Intra Pred estimation   */
1243    UWORD32                                     u4_pre_enc_ipe;
1244
1245    /** Speed preset - Value between 0 (slowest) and 100 (fastest)      */
1246    IVE_SPEED_CONFIG                            u4_enc_speed_preset;
1247
1248    /** Lower 32bits of time stamp corresponding to input buffer,
1249     * from which this command takes effect                             */
1250    UWORD32                                     u4_timestamp_low;
1251
1252    /** Upper 32bits of time stamp corresponding to input buffer,
1253     * from which this command takes effect                             */
1254    UWORD32                                     u4_timestamp_high;
1255
1256    /** Constrained intra pred flag                                     */
1257    UWORD32                                     u4_constrained_intra_pred;
1258
1259}ive_ctl_set_ipe_params_ip_t;
1260
1261/** Output structure : Set IPE Params                                   */
1262typedef struct
1263{
1264    /** size of the structure                                           */
1265    UWORD32                                     u4_size;
1266
1267    /** Return error code                                               */
1268    UWORD32                                     u4_error_code;
1269}ive_ctl_set_ipe_params_op_t;
1270
1271/*****************************************************************************/
1272/*   Video control  Set Motion estimation params                             */
1273/*****************************************************************************/
1274
1275/** Input structure : Set ME Params                                     */
1276typedef struct
1277{
1278    /** size of the structure                                           */
1279    UWORD32                                     u4_size;
1280
1281    /** Command type : IVE_CMD_VIDEO_CTL                                */
1282    IVE_API_COMMAND_TYPE_T                      e_cmd;
1283
1284    /** Sub command type : IVE_CMD_CTL_SET_ME_PARAMS                    */
1285    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
1286
1287    /** Flag to enable/disable pre-enc stage of Motion estimation       */
1288    UWORD32                                     u4_pre_enc_me;
1289
1290    /** Speed preset - Value between 0 (slowest) and 100 (fastest)      */
1291    UWORD32                                     u4_me_speed_preset;
1292
1293    /** Flag to enable/disable half pel motion estimation               */
1294    UWORD32                                     u4_enable_hpel;
1295
1296    /** Flag to enable/disable quarter pel motion estimation            */
1297    UWORD32                                     u4_enable_qpel;
1298
1299    /** Flag to enable/disable fast SAD approximation                   */
1300    UWORD32                                     u4_enable_fast_sad;
1301
1302    /** Flag to enable/disable alternate reference frames               */
1303    UWORD32                                     u4_enable_alt_ref;
1304
1305    /** Maximum search range in X direction for farthest reference      */
1306    UWORD32                                     u4_srch_rng_x;
1307
1308    /** Maximum search range in Y direction for farthest reference      */
1309    UWORD32                                     u4_srch_rng_y;
1310
1311    /** Lower 32bits of time stamp corresponding to input buffer,
1312     * from which this command takes effect                             */
1313    UWORD32                                     u4_timestamp_low;
1314
1315    /** Upper 32bits of time stamp corresponding to input buffer,
1316     * from which this command takes effect                             */
1317    UWORD32                                     u4_timestamp_high;
1318
1319}ive_ctl_set_me_params_ip_t;
1320
1321/** Output structure : Set ME Params                                    */
1322typedef struct
1323{
1324    /** size of the structure                                           */
1325    UWORD32                                     u4_size;
1326
1327    /** Return error code                                               */
1328    UWORD32                                     u4_error_code;
1329}ive_ctl_set_me_params_op_t;
1330
1331/*****************************************************************************/
1332/*   Video control  Set GOP params                                           */
1333/*****************************************************************************/
1334
1335/** Input structure : Set GOP Params                                    */
1336typedef struct
1337{
1338    /** size of the structure                                           */
1339    UWORD32                                     u4_size;
1340
1341    /** Command type : IVE_CMD_VIDEO_CTL                                */
1342    IVE_API_COMMAND_TYPE_T                      e_cmd;
1343
1344    /** Sub command type : IVE_CMD_CTL_SET_GOP_PARAMS                   */
1345    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
1346
1347    /** I frame interval                                                */
1348    UWORD32                                     u4_i_frm_interval;
1349
1350    /** IDR frame interval                                              */
1351    UWORD32                                     u4_idr_frm_interval;
1352
1353    /** Lower 32bits of time stamp corresponding to input buffer,
1354     * from which this command takes effect                             */
1355    UWORD32                                 u4_timestamp_low;
1356
1357    /** Upper 32bits of time stamp corresponding to input buffer,
1358     * from which this command takes effect                             */
1359    UWORD32                                 u4_timestamp_high;
1360
1361}ive_ctl_set_gop_params_ip_t;
1362
1363/** Output structure : Set GOP params                                   */
1364typedef struct
1365{
1366    /** size of the structure                                           */
1367    UWORD32                                     u4_size;
1368
1369    /** Return error code                                               */
1370    UWORD32                                     u4_error_code;
1371}ive_ctl_set_gop_params_op_t;
1372
1373/*****************************************************************************/
1374/*   Video control  Set Deblock params                                       */
1375/*****************************************************************************/
1376
1377/** Input structure : Set Deblock Params                                */
1378typedef struct
1379{
1380    /** size of the structure                                           */
1381    UWORD32                                     u4_size;
1382
1383    /** Command type : IVE_CMD_VIDEO_CTL                                */
1384    IVE_API_COMMAND_TYPE_T                      e_cmd;
1385
1386    /** Sub command type : IVE_CMD_CTL_SET_GOP_PARAMS                   */
1387    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
1388
1389    /** Disable deblock level (0: Enable completely, 3: Disable completely */
1390    UWORD32                                     u4_disable_deblock_level;
1391
1392    /** Lower 32bits of time stamp corresponding to input buffer,
1393     * from which this command takes effect                             */
1394    UWORD32                                 u4_timestamp_low;
1395
1396    /** Upper 32bits of time stamp corresponding to input buffer,
1397     * from which this command takes effect                             */
1398    UWORD32                                 u4_timestamp_high;
1399
1400}ive_ctl_set_deblock_params_ip_t;
1401
1402/** Output structure : Set Deblock Params                               */
1403typedef struct
1404{
1405    /** size of the structure                                           */
1406    UWORD32                                     u4_size;
1407
1408    /** Return error code                                               */
1409    UWORD32                                     u4_error_code;
1410}ive_ctl_set_deblock_params_op_t;
1411
1412/*****************************************************************************/
1413/*   Video control  Set Profile params                                       */
1414/*****************************************************************************/
1415
1416/** Input structure : Set Profile Params                                */
1417typedef struct
1418{
1419    /** size of the structure                                           */
1420    UWORD32                                     u4_size;
1421
1422    /** Command type : IVE_CMD_VIDEO_CTL                                */
1423    IVE_API_COMMAND_TYPE_T                      e_cmd;
1424
1425    /** Sub command type : IVE_CMD_CTL_SET_PROFILE_PARAMS               */
1426    IVE_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
1427
1428    /** Profile                                                         */
1429    IV_PROFILE_T                               e_profile;
1430
1431    /** Lower 32bits of time stamp corresponding to input buffer,
1432     * from which this command takes effect                             */
1433    UWORD32                                 u4_timestamp_low;
1434
1435    /** Upper 32bits of time stamp corresponding to input buffer,
1436     * from which this command takes effect                             */
1437    UWORD32                                 u4_timestamp_high;
1438
1439    /** Entropy coding mode flag: 0-CAVLC, 1-CABAC                       */
1440    UWORD32                                 u4_entropy_coding_mode;
1441
1442}ive_ctl_set_profile_params_ip_t;
1443
1444/** Output structure : Set Profile Params                               */
1445typedef struct
1446{
1447    /** size of the structure                                           */
1448    UWORD32                                     u4_size;
1449
1450    /** Return error code                                               */
1451    UWORD32                                     u4_error_code;
1452}ive_ctl_set_profile_params_op_t;
1453
1454
1455#endif /* _IVE2_H_ */
1456
1457