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