• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2 *
3 * Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at:
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 ******************************************************************************/
18 /**
19 *******************************************************************************
20 * @file
21 *  ihevcd_cxa.h
22 *
23 * @brief
24 *  This file contains all the necessary structure and  enumeration
25 * definitions needed for the Application  Program Interface(API) of the
26 * Ittiam HEVC decoder  on Cortex Ax
27 *
28 * @author
29 *  Harish
30 *
31 * @remarks
32 *  None
33 *
34 *******************************************************************************
35 */
36 #ifndef __IHEVCD_CXA_H__
37 #define __IHEVCD_CXA_H__
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41 #include "iv.h"
42 #include "ivd.h"
43 
44 
45 /*****************************************************************************/
46 /* Constant Macros                                                           */
47 /*****************************************************************************/
48 
49 /*****************************************************************************/
50 /* Function Macros                                                           */
51 /*****************************************************************************/
52 #define IS_IVD_CONCEALMENT_APPLIED(x)       (x & (1 << IVD_APPLIEDCONCEALMENT))
53 #define IS_IVD_INSUFFICIENTDATA_ERROR(x)    (x & (1 << IVD_INSUFFICIENTDATA))
54 #define IS_IVD_CORRUPTEDDATA_ERROR(x)       (x & (1 << IVD_CORRUPTEDDATA))
55 #define IS_IVD_CORRUPTEDHEADER_ERROR(x)     (x & (1 << IVD_CORRUPTEDHEADER))
56 #define IS_IVD_UNSUPPORTEDINPUT_ERROR(x)    (x & (1 << IVD_UNSUPPORTEDINPUT))
57 #define IS_IVD_UNSUPPORTEDPARAM_ERROR(x)    (x & (1 << IVD_UNSUPPORTEDPARAM))
58 #define IS_IVD_FATAL_ERROR(x)               (x & (1 << IVD_FATALERROR))
59 #define IS_IVD_INVALID_BITSTREAM_ERROR(x)   (x & (1 << IVD_INVALID_BITSTREAM))
60 #define IS_IVD_INCOMPLETE_BITSTREAM_ERROR(x) (x & (1 << IVD_INCOMPLETE_BITSTREAM))
61 
62 
63 /*****************************************************************************/
64 /* API Function Prototype                                                    */
65 /*****************************************************************************/
66 IV_API_CALL_STATUS_T ihevcd_cxa_api_function(iv_obj_t *ps_handle,
67                                              void *pv_api_ip,
68                                              void *pv_api_op);
69 
70 /*****************************************************************************/
71 /* Enums                                                                     */
72 /*****************************************************************************/
73 /* Codec Error codes for HEVC  Decoder                                       */
74 
75 
76 typedef enum {
77     /**
78      *  No error
79      */
80     IHEVCD_SUCCESS = 0,
81 
82     /**
83      *  Codec calls done without successful init
84      */
85     IHEVCD_INIT_NOT_DONE                        = IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS,
86 
87 
88     IHEVCD_CXA_VID_HDR_DEC_NUM_FRM_BUF_NOT_SUFFICIENT,
89 
90     /**
91      *  Unsupported level passed as an argument
92      */
93     IHEVCD_LEVEL_UNSUPPORTED,
94     /**
95      *  Unsupported number of reference pictures passed as an argument
96      */
97     IHEVCD_NUM_REF_UNSUPPORTED,
98     /**
99      *  Unsupported number of reorder pictures passed as an argument
100      */
101     IHEVCD_NUM_REORDER_UNSUPPORTED,
102     /**
103      *  Unsupported number of extra display pictures passed as an argument
104      */
105     IHEVCD_NUM_EXTRA_DISP_UNSUPPORTED,
106     /**
107      *  Invalid display stride requested.
108      */
109     IHEVCD_INVALID_DISP_STRD,
110 
111     /**
112      * Reached end of sequence
113      */
114     IHEVCD_END_OF_SEQUENCE,
115 
116     /**
117      * Width/height greater than max width and max height
118      */
119     IHEVCD_UNSUPPORTED_DIMENSIONS,
120 
121     /**
122      *  Buffer size to hold version string is not sufficient
123      *  Allocate more to hold version string
124      */
125     IHEVCD_CXA_VERS_BUF_INSUFFICIENT,
126     /**
127      * Stream chroma format other than YUV420
128      */
129     IHEVCD_UNSUPPORTED_CHROMA_FMT_IDC,
130 
131     /**
132      * Generic failure
133      */
134     IHEVCD_FAIL                             = 0x7FFFFFFF
135 
136 
137 }IHEVCD_CXA_ERROR_CODES_T;
138 
139 /*****************************************************************************/
140 /* Extended Structures                                                       */
141 /*****************************************************************************/
142 
143 
144 /*****************************************************************************/
145 /*  Delete Codec                                                             */
146 /*****************************************************************************/
147 
148 typedef struct {
149     ivd_delete_ip_t               s_ivd_delete_ip_t;
150 }ihevcd_cxa_delete_ip_t;
151 
152 
153 typedef struct {
154     ivd_delete_op_t               s_ivd_delete_op_t;
155 }ihevcd_cxa_delete_op_t;
156 
157 /*****************************************************************************/
158 /*   Initialize decoder                                                      */
159 /*****************************************************************************/
160 
161 typedef struct {
162     ivd_create_ip_t                         s_ivd_create_ip_t;
163 }ihevcd_cxa_create_ip_t;
164 
165 
166 typedef struct {
167     ivd_create_op_t                         s_ivd_create_op_t;
168 }ihevcd_cxa_create_op_t;
169 
170 /*****************************************************************************/
171 /*   Video Decode                                                            */
172 /*****************************************************************************/
173 
174 typedef struct {
175 
176     /**
177      * ivd_video_decode_ip_t
178      */
179     ivd_video_decode_ip_t                   s_ivd_video_decode_ip_t;
180 }ihevcd_cxa_video_decode_ip_t;
181 
182 
183 typedef struct {
184 
185     /**
186      * ivd_video_decode_op_t
187      */
188     ivd_video_decode_op_t                   s_ivd_video_decode_op_t;
189 }ihevcd_cxa_video_decode_op_t;
190 
191 
192 /*****************************************************************************/
193 /*   Get Display Frame                                                       */
194 /*****************************************************************************/
195 
196 typedef struct
197 {
198     /**
199      * ivd_get_display_frame_ip_t
200      */
201     ivd_get_display_frame_ip_t              s_ivd_get_display_frame_ip_t;
202 }ihevcd_cxa_get_display_frame_ip_t;
203 
204 
205 typedef struct
206 {
207     /**
208      * ivd_get_display_frame_op_t
209      */
210     ivd_get_display_frame_op_t              s_ivd_get_display_frame_op_t;
211 }ihevcd_cxa_get_display_frame_op_t;
212 
213 /*****************************************************************************/
214 /*   Set Display Frame                                                       */
215 /*****************************************************************************/
216 
217 
218 typedef struct
219 {
220     /**
221      * ivd_set_display_frame_ip_t
222      */
223     ivd_set_display_frame_ip_t              s_ivd_set_display_frame_ip_t;
224 }ihevcd_cxa_set_display_frame_ip_t;
225 
226 
227 typedef struct
228 {
229     /**
230      * ivd_set_display_frame_op_t
231      */
232     ivd_set_display_frame_op_t              s_ivd_set_display_frame_op_t;
233 }ihevcd_cxa_set_display_frame_op_t;
234 
235 /*****************************************************************************/
236 /*   Release Display Buffers                                                 */
237 /*****************************************************************************/
238 
239 
240 typedef struct
241 {
242     /**
243      * ivd_rel_display_frame_ip_t
244      */
245 
246     ivd_rel_display_frame_ip_t                  s_ivd_rel_display_frame_ip_t;
247 }ihevcd_cxa_rel_display_frame_ip_t;
248 
249 
250 typedef struct
251 {
252     /**
253      * ivd_rel_display_frame_op_t
254      */
255     ivd_rel_display_frame_op_t                  s_ivd_rel_display_frame_op_t;
256 }ihevcd_cxa_rel_display_frame_op_t;
257 
258 
259 typedef enum
260 {
261     /** Set number of cores/threads to be used */
262     IHEVCD_CXA_CMD_CTL_SET_NUM_CORES         = IVD_CMD_CTL_CODEC_SUBCMD_START,
263 
264     /** Set processor details */
265     IHEVCD_CXA_CMD_CTL_SET_PROCESSOR         = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x001,
266 
267     /** Get display buffer dimensions */
268     IHEVCD_CXA_CMD_CTL_GET_BUFFER_DIMENSIONS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x100,
269 
270     /** Get VUI parameters */
271     IHEVCD_CXA_CMD_CTL_GET_VUI_PARAMS        = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x101,
272 
273     /** Get SEI Mastering display color volume parameters */
274     IHEVCD_CXA_CMD_CTL_GET_SEI_MASTERING_PARAMS   = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x102,
275 
276     /** Enable/disable GPU, supported on select platforms */
277     IHEVCD_CXA_CMD_CTL_GPU_ENABLE_DISABLE    = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x200,
278 
279     /** Set degrade level */
280     IHEVCD_CXA_CMD_CTL_DEGRADE               = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x300
281 }IHEVCD_CXA_CMD_CTL_SUB_CMDS;
282 /*****************************************************************************/
283 /*   Video control  Flush                                                    */
284 /*****************************************************************************/
285 
286 
287 typedef struct {
288 
289     /**
290      * ivd_ctl_flush_ip_t
291      */
292     ivd_ctl_flush_ip_t                      s_ivd_ctl_flush_ip_t;
293 }ihevcd_cxa_ctl_flush_ip_t;
294 
295 
296 typedef struct {
297 
298     /**
299      * ivd_ctl_flush_op_t
300      */
301     ivd_ctl_flush_op_t                      s_ivd_ctl_flush_op_t;
302 }ihevcd_cxa_ctl_flush_op_t;
303 
304 /*****************************************************************************/
305 /*   Video control reset                                                     */
306 /*****************************************************************************/
307 
308 
309 typedef struct {
310 
311     /**
312      * ivd_ctl_reset_ip_t
313      */
314     ivd_ctl_reset_ip_t                      s_ivd_ctl_reset_ip_t;
315 }ihevcd_cxa_ctl_reset_ip_t;
316 
317 
318 typedef struct {
319 
320     /**
321      * ivd_ctl_reset_op_t
322      */
323     ivd_ctl_reset_op_t                      s_ivd_ctl_reset_op_t;
324 }ihevcd_cxa_ctl_reset_op_t;
325 
326 
327 /*****************************************************************************/
328 /*   Video control  Set Params                                               */
329 /*****************************************************************************/
330 
331 
332 typedef struct {
333 
334     /**
335      *  ivd_ctl_set_config_ip_t
336      */
337     ivd_ctl_set_config_ip_t             s_ivd_ctl_set_config_ip_t;
338 }ihevcd_cxa_ctl_set_config_ip_t;
339 
340 
341 typedef struct {
342 
343     /**
344      * ivd_ctl_set_config_op_t
345      */
346     ivd_ctl_set_config_op_t             s_ivd_ctl_set_config_op_t;
347 }ihevcd_cxa_ctl_set_config_op_t;
348 
349 /*****************************************************************************/
350 /*   Video control:Get Buf Info                                              */
351 /*****************************************************************************/
352 
353 
354 typedef struct {
355 
356     /**
357      * ivd_ctl_getbufinfo_ip_t
358      */
359     ivd_ctl_getbufinfo_ip_t             s_ivd_ctl_getbufinfo_ip_t;
360 }ihevcd_cxa_ctl_getbufinfo_ip_t;
361 
362 
363 
364 typedef struct {
365 
366     /**
367      * ivd_ctl_getbufinfo_op_t
368      */
369     ivd_ctl_getbufinfo_op_t             s_ivd_ctl_getbufinfo_op_t;
370 }ihevcd_cxa_ctl_getbufinfo_op_t;
371 
372 
373 /*****************************************************************************/
374 /*   Video control:Getstatus Call                                            */
375 /*****************************************************************************/
376 
377 
378 typedef struct {
379 
380     /**
381      * ivd_ctl_getstatus_ip_t
382      */
383     ivd_ctl_getstatus_ip_t                  s_ivd_ctl_getstatus_ip_t;
384 }ihevcd_cxa_ctl_getstatus_ip_t;
385 
386 
387 
388 typedef struct {
389 
390     /**
391      * ivd_ctl_getstatus_op_t
392      */
393     ivd_ctl_getstatus_op_t                  s_ivd_ctl_getstatus_op_t;
394 
395     /**
396      * Height of the coding picture without cropping
397      */
398     UWORD32                  u4_coded_pic_ht;
399 
400     /**
401      * Width of the coding picture without cropping
402      */
403     UWORD32                  u4_coded_pic_wd;
404 }ihevcd_cxa_ctl_getstatus_op_t;
405 
406 
407 /*****************************************************************************/
408 /*   Video control:Get Version Info                                          */
409 /*****************************************************************************/
410 
411 
412 typedef struct {
413 
414     /**
415      *  ivd_ctl_getversioninfo_ip_t
416      */
417     ivd_ctl_getversioninfo_ip_t         s_ivd_ctl_getversioninfo_ip_t;
418 }ihevcd_cxa_ctl_getversioninfo_ip_t;
419 
420 
421 
422 typedef struct {
423 
424     /**
425      *  ivd_ctl_getversioninfo_op_t
426      */
427     ivd_ctl_getversioninfo_op_t         s_ivd_ctl_getversioninfo_op_t;
428 }ihevcd_cxa_ctl_getversioninfo_op_t;
429 
430 
431 typedef struct {
432 
433     /**
434      * u4_size
435      */
436     UWORD32                                     u4_size;
437 
438     /**
439      * cmd
440      */
441     IVD_API_COMMAND_TYPE_T                      e_cmd;
442 
443     /**
444      * sub_cmd
445      */
446     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
447 
448     /**
449      * Pictures that are are degraded
450      * 0 : No degrade
451      * 1 : Only on non-reference frames
452      * 2 : Use interval specified by u4_nondegrade_interval
453      * 3 : All non-key frames
454      * 4 : All frames
455      */
456     WORD32                                     i4_degrade_pics;
457 
458     /**
459      * Interval for pictures which are completely decoded without any degradation
460      */
461     WORD32                                     i4_nondegrade_interval;
462 
463     /**
464      * bit position (lsb is zero): Type of degradation
465      * 0 : Disable SAO
466      * 1 : Disable deblocking
467      * 2 : Faster inter prediction filters
468      * 3 : Fastest inter prediction filters
469      */
470     WORD32                                     i4_degrade_type;
471 
472 }ihevcd_cxa_ctl_degrade_ip_t;
473 
474 typedef struct
475 {
476     /**
477      * u4_size
478      */
479     UWORD32                                     u4_size;
480 
481     /**
482      * error_code
483      */
484     UWORD32                                     u4_error_code;
485 }ihevcd_cxa_ctl_degrade_op_t;
486 
487 typedef struct
488 {
489 
490     /**
491      * size
492      */
493     UWORD32                                     u4_size;
494 
495     /**
496      * cmd
497      */
498     IVD_API_COMMAND_TYPE_T                      e_cmd;
499 
500     /**
501      * sub_cmd
502      */
503     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
504 
505     /**
506      * num_cores
507      */
508     UWORD32                                     u4_num_cores;
509 }ihevcd_cxa_ctl_set_num_cores_ip_t;
510 
511 typedef struct
512 {
513 
514     /**
515      * size
516      */
517     UWORD32                                     u4_size;
518 
519     /**
520      * error_code
521      */
522     UWORD32                                     u4_error_code;
523 }ihevcd_cxa_ctl_set_num_cores_op_t;
524 
525 typedef struct
526 {
527     /**
528      * size
529      */
530     UWORD32                                     u4_size;
531     /**
532      * cmd
533      */
534     IVD_API_COMMAND_TYPE_T                      e_cmd;
535     /**
536      * sub cmd
537      */
538     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
539     /**
540      * Processor type
541      */
542     UWORD32                                     u4_arch;
543     /**
544      * SOC type
545      */
546     UWORD32                                     u4_soc;
547 
548     /**
549      * num_cores
550      */
551     UWORD32                                     u4_num_cores;
552 
553 }ihevcd_cxa_ctl_set_processor_ip_t;
554 
555 typedef struct
556 {
557     /**
558      * size
559      */
560     UWORD32                                     u4_size;
561     /**
562      * error_code
563      */
564     UWORD32                                     u4_error_code;
565 }ihevcd_cxa_ctl_set_processor_op_t;
566 
567 typedef struct
568 {
569 
570     /**
571      * size
572      */
573     UWORD32                                     u4_size;
574 
575     /**
576      * cmd
577      */
578     IVD_API_COMMAND_TYPE_T                      e_cmd;
579 
580     /**
581      * sub cmd
582      */
583     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
584 }ihevcd_cxa_ctl_get_frame_dimensions_ip_t;
585 
586 
587 typedef struct {
588 
589     /**
590      * size
591      */
592     UWORD32                                     u4_size;
593 
594     /**
595      * error_code
596      */
597     UWORD32                                     u4_error_code;
598 
599     /**
600      * x_offset[3]
601      */
602     UWORD32                                     u4_x_offset[3];
603 
604     /**
605      * y_offset[3]
606      */
607     UWORD32                                     u4_y_offset[3];
608 
609     /**
610      * disp_wd[3]
611      */
612     UWORD32                                     u4_disp_wd[3];
613 
614     /**
615      * disp_ht[3]
616      */
617     UWORD32                                     u4_disp_ht[3];
618 
619     /**
620      * buffer_wd[3]
621      */
622     UWORD32                                     u4_buffer_wd[3];
623 
624     /**
625      * buffer_ht[3]
626      */
627     UWORD32                                     u4_buffer_ht[3];
628 }ihevcd_cxa_ctl_get_frame_dimensions_op_t;
629 
630 typedef struct {
631     UWORD32                                     u4_size;
632     IVD_API_COMMAND_TYPE_T                      e_cmd;
633     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
634 }ihevcd_cxa_ctl_get_vui_params_ip_t;
635 
636 typedef struct {
637     UWORD32                                     u4_size;
638     UWORD32                                     u4_error_code;
639 
640     /**
641     *  indicates the presence of aspect_ratio
642     */
643     UWORD8 u1_aspect_ratio_info_present_flag;
644 
645     /**
646     *  specifies the aspect ratio of the luma samples
647     */
648     UWORD8 u1_aspect_ratio_idc;
649 
650     /**
651     *  width of the luma samples. user dependent
652     */
653     UWORD16 u2_sar_width;
654 
655     /**
656     *  hieght of the luma samples. user dependent
657     */
658     UWORD16 u2_sar_height;
659 
660     /**
661     * if 1, specifies that the overscan_appropriate_flag is present
662     * if 0, the preferred display method for the video signal is unspecified
663     */
664     UWORD8 u1_overscan_info_present_flag;
665 
666     /**
667     * if 1,indicates that the cropped decoded pictures output
668     * are suitable for display using overscan
669     */
670     UWORD8 u1_overscan_appropriate_flag;
671 
672     /**
673     * if 1 specifies that video_format, video_full_range_flag and
674     * colour_description_present_flag are present
675     */
676     UWORD8 u1_video_signal_type_present_flag;
677 
678     /**
679     *
680     */
681     UWORD8 u1_video_format;
682 
683     /**
684     * indicates the black level and range of the luma and chroma signals
685     */
686     UWORD8 u1_video_full_range_flag;
687 
688     /**
689     * if 1,to 1 specifies that colour_primaries, transfer_characteristics
690     * and matrix_coefficients are present
691     */
692     UWORD8 u1_colour_description_present_flag;
693 
694     /**
695     * indicates the chromaticity coordinates of the source primaries
696     */
697     UWORD8 u1_colour_primaries;
698 
699     /**
700     * indicates the opto-electronic transfer characteristic of the source picture
701     */
702     UWORD8 u1_transfer_characteristics;
703 
704     /**
705     * the matrix coefficients used in deriving luma and chroma signals
706     * from the green, blue, and red primaries
707     */
708     UWORD8 u1_matrix_coefficients;
709 
710     /**
711     * if 1, specifies that chroma_sample_loc_type_top_field and
712     * chroma_sample_loc_type_bottom_field are present
713     */
714     UWORD8 u1_chroma_loc_info_present_flag;
715 
716     /**
717     * location of chroma samples
718     */
719     UWORD8 u1_chroma_sample_loc_type_top_field;
720 
721     UWORD8 u1_chroma_sample_loc_type_bottom_field;
722 
723     /**
724     * if 1, indicates that the value of all decoded chroma samples is
725     * equal to 1 << ( BitDepthC - 1 )
726     */
727     UWORD8 u1_neutral_chroma_indication_flag;
728 
729     /**
730     *  1 indicates that the coded video sequence conveys pictures that represent fields
731     *  0 indicates the pictures that represents field
732     */
733     UWORD8 u1_field_seq_flag;
734 
735     /**
736     * specifies that picture timing SEI messages are present for every picture
737     */
738     UWORD8 u1_frame_field_info_present_flag;
739 
740     /**
741     * 1 indicates that the default display window parameters follow next in the VUI
742     */
743     UWORD8 u1_default_display_window_flag;
744 
745     /**
746     * specify the samples of the pictures in the coded video sequence
747     * that are within the default display window,
748     * in terms of a rectangular region specified in picture coordinates for display
749     */
750     UWORD32 u4_def_disp_win_left_offset;
751 
752     UWORD32 u4_def_disp_win_right_offset;
753 
754     UWORD32 u4_def_disp_win_top_offset;
755 
756     UWORD32 u4_def_disp_win_bottom_offset;
757 
758     /**
759     *  to 1 specifies that the syntax structure hrd_parameters is present in the vui_parameters syntax structue
760     */
761     UWORD8 u1_vui_hrd_parameters_present_flag;
762 
763     /**
764     *   Indicates the presence of the
765     *   num_units_in_ticks, time_scale flag
766     */
767     UWORD8 u1_vui_timing_info_present_flag;
768 
769     /**
770     *   Number of units that
771     *   correspond to one increment of the
772     *   clock. Indicates the  resolution
773     */
774     UWORD32 u4_vui_num_units_in_tick;
775 
776     /**
777     *   The number of time units that pass in one second
778     */
779     UWORD32 u4_vui_time_scale;
780     /**
781     * if 1, indicates that the POC for each picture in the coded video sequence (cvs) (not the first picture), in decoding order,
782     * is proportional to the output time of the picture relative to that of the first picture in the cvs
783     */
784     UWORD8 u1_poc_proportional_to_timing_flag;
785 
786     /**
787     * num_ticks_poc_diff_one_minus1 plus 1 specifies the number of clock ticks
788     * corresponding to a difference of poc values equal to 1
789     */
790     UWORD8 u1_num_ticks_poc_diff_one_minus1;
791 
792     /**
793     * 1, specifies that the following cvs bitstream restriction parameters are present
794     */
795     UWORD8 u1_bitstream_restriction_flag;
796 
797     /**
798     *  if 1, indicates that each pps that is active in the cvs has
799     *  the same value of the tile syntax elements
800     */
801     UWORD8 u1_tiles_fixed_structure_flag;
802 
803     /**
804     * if 0, indicates that no pel outside the pic boundaries and
805     * no sub-pels derived using pels outside the pic boundaries is used for inter prediction
806     */
807     UWORD8 u1_motion_vectors_over_pic_boundaries_flag;
808 
809     /**
810     * if 1, indicates
811     * all P/B slices belonging to the same pic have an identical refpic list0,
812     * all B slices that belong to the same picture have an identical refpic list1.
813     */
814     UWORD8 u1_restricted_ref_pic_lists_flag;
815 
816     /**
817     *
818     */
819     UWORD8 u4_min_spatial_segmentation_idc;
820     /**
821     * Indicates a number of bytes not exceeded by the sum of the sizes of the VCL NAL units
822     * associated with any coded picture
823     */
824     UWORD8 u1_max_bytes_per_pic_denom;
825 
826     /**
827     *  Indicates an upper bound for the number of bits of coding_unit() data
828     */
829     UWORD8 u1_max_bits_per_mincu_denom;
830 
831     /**
832     * Indicate the maximum absolute value of a decoded horizontal MV component
833     * in quarter-pel luma units
834     */
835     UWORD8 u1_log2_max_mv_length_horizontal;
836 
837     /**
838     * Indicate the maximum absolute value of a decoded vertical MV component
839     * in quarter-pel luma units
840     */
841     UWORD8 u1_log2_max_mv_length_vertical;
842 
843     /**
844      * HRD parameters
845      */
846 
847 
848     /**
849     *   Indicates the presence of the
850     *   num_units_in_ticks, time_scale flag
851     */
852     UWORD8 u1_timing_info_present_flag;
853 
854     /**
855     *   Number of units that
856     *   correspond to one increment of the
857     *   clock. Indicates the  resolution
858     */
859     UWORD32 u4_num_units_in_tick;
860 
861     /**
862     *   The number of time units that pass in one second
863     */
864     UWORD32 u4_time_scale;
865 
866     /**
867     * Nal- hrd parameters flag
868     */
869     UWORD8 u1_nal_hrd_parameters_present_flag;
870 
871     /**
872     * VCL- hrd parameters flag
873     */
874     UWORD8 u1_vcl_hrd_parameters_present_flag;
875 
876     /**
877     * Indicates the presence of NAL-HRD params or VCL_HRD params
878     * in the bitstream
879     */
880     UWORD8 u1_cpbdpb_delays_present_flag;
881 
882     /**
883     * specifies that sub-picture level CPB removal delay parameters are
884     * present in picture timing SEI messages
885     */
886     UWORD8 u1_sub_pic_cpb_params_present_flag;
887 
888     /**
889     * specify the clock sub-tick
890     * (the minimum interval of time that can be represented in the coded data when sub_pic_cpb_params_present_flag is equal to 1)
891     */
892     UWORD8 u1_tick_divisor_minus2;
893 
894     /**
895     * specifies the length, in bits for the du cpb delay syntax in pt_sei
896     */
897     UWORD8 u1_du_cpb_removal_delay_increment_length_minus1;
898 
899     /**
900     * Indicates presence of sub_pic_cpb_params in pic timing sei
901     */
902     UWORD8 u1_sub_pic_cpb_params_in_pic_timing_sei_flag;
903 
904     /**
905      * Indicates dpb output delay for the du
906      */
907     UWORD8 u1_dpb_output_delay_du_length_minus1;
908 
909     /**
910     * (together with bit_rate_value_minus1) specifies the
911     * maximum input bit rate of the i-th CPB
912     */
913     UWORD8 u4_bit_rate_scale;
914 
915     /**
916     * (together with cpb_size_du_value_minus1) specfies
917     * CPB size of the i-th CPB when the CPB operates
918     * at the access unit level
919     */
920     UWORD8 u4_cpb_size_scale;
921 
922     /**
923     * (together with cpb_size_du_value_minus1) specfies
924     * CPB size of the i-th CPB when the CPB operates
925     * at the sub-picture level
926     */
927     UWORD8 u4_cpb_size_du_scale;
928 
929 
930     /**
931     * specifies the length, in bits for initial cpb delay (nal/vcl)sysntax in bp sei
932     */
933     UWORD8  u1_initial_cpb_removal_delay_length_minus1;
934 
935     /**
936     * specifies the length, in bits for the au cpb delay syntax in pt_sei
937     */
938     UWORD8  u1_au_cpb_removal_delay_length_minus1;
939 
940     /**
941     * specifies the length, in bits, of the pic_dpb_output_delay syntax element in the pt SEI message
942     */
943     UWORD8  u1_dpb_output_delay_length_minus1;
944 
945     /**
946     * if 1, , for the highest temporal sub-layers, the temporal distance between the HRD output times
947     *  of consecutive pictures in output order is constrained refer to Table E-6
948     */
949     UWORD8 au1_fixed_pic_rate_general_flag[6];
950 
951     UWORD8 au1_fixed_pic_rate_within_cvs_flag[6];
952 
953     /**
954     * if 1, , for the highest temporal sub-layers, the temporal distance (in clock ticks) between the
955     * element units that specify HRD output times of consecutive pictures in output order is constrained
956     * refer to Table E-6
957     */
958     UWORD8 au1_elemental_duration_in_tc_minus1[6];
959 
960     /**
961     * specifies the HRD operational mode
962     */
963     UWORD8 au1_low_delay_hrd_flag[6];
964 
965     /**
966     * 1 specifies the number of alternative CPB specifications in the
967     * bitstream of the cvs when HighestTid is equal to i
968     */
969     UWORD8 au1_cpb_cnt_minus1[6];
970 }ihevcd_cxa_ctl_get_vui_params_op_t;
971 
972 typedef struct
973 {
974     UWORD32                                     u4_size;
975     IVD_API_COMMAND_TYPE_T                      e_cmd;
976     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
977 }ihevcd_cxa_ctl_get_sei_mastering_params_ip_t;
978 
979 typedef struct
980 {
981     UWORD32                                     u4_size;
982     UWORD32                                     u4_error_code;
983 
984     /**
985      * Array to store the display_primaries_x values
986      */
987     UWORD16 au2_display_primaries_x[3];
988 
989     /**
990      * Array to store the display_primaries_y values
991      */
992     UWORD16 au2_display_primaries_y[3];
993 
994     /**
995      * Variable to store the white point x value
996      */
997     UWORD16 u2_white_point_x;
998 
999     /**
1000      * Variable to store the white point y value
1001      */
1002     UWORD16 u2_white_point_y;
1003 
1004     /**
1005      * Variable to store the max display mastering luminance value
1006      */
1007     UWORD32 u4_max_display_mastering_luminance;
1008 
1009     /**
1010      * Variable to store the min display mastering luminance value
1011      */
1012     UWORD32 u4_min_display_mastering_luminance;
1013 
1014 }ihevcd_cxa_ctl_get_sei_mastering_params_op_t;
1015 
1016 #ifdef __cplusplus
1017 } /* closing brace for extern "C" */
1018 #endif
1019 #endif /* __IHEVCD_CXA_H__ */
1020