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     /** Enable/disable GPU, supported on select platforms */
274     IHEVCD_CXA_CMD_CTL_GPU_ENABLE_DISABLE    = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x200,
275 
276     /** Set degrade level */
277     IHEVCD_CXA_CMD_CTL_DEGRADE               = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x300
278 }IHEVCD_CXA_CMD_CTL_SUB_CMDS;
279 /*****************************************************************************/
280 /*   Video control  Flush                                                    */
281 /*****************************************************************************/
282 
283 
284 typedef struct {
285 
286     /**
287      * ivd_ctl_flush_ip_t
288      */
289     ivd_ctl_flush_ip_t                      s_ivd_ctl_flush_ip_t;
290 }ihevcd_cxa_ctl_flush_ip_t;
291 
292 
293 typedef struct {
294 
295     /**
296      * ivd_ctl_flush_op_t
297      */
298     ivd_ctl_flush_op_t                      s_ivd_ctl_flush_op_t;
299 }ihevcd_cxa_ctl_flush_op_t;
300 
301 /*****************************************************************************/
302 /*   Video control reset                                                     */
303 /*****************************************************************************/
304 
305 
306 typedef struct {
307 
308     /**
309      * ivd_ctl_reset_ip_t
310      */
311     ivd_ctl_reset_ip_t                      s_ivd_ctl_reset_ip_t;
312 }ihevcd_cxa_ctl_reset_ip_t;
313 
314 
315 typedef struct {
316 
317     /**
318      * ivd_ctl_reset_op_t
319      */
320     ivd_ctl_reset_op_t                      s_ivd_ctl_reset_op_t;
321 }ihevcd_cxa_ctl_reset_op_t;
322 
323 
324 /*****************************************************************************/
325 /*   Video control  Set Params                                               */
326 /*****************************************************************************/
327 
328 
329 typedef struct {
330 
331     /**
332      *  ivd_ctl_set_config_ip_t
333      */
334     ivd_ctl_set_config_ip_t             s_ivd_ctl_set_config_ip_t;
335 }ihevcd_cxa_ctl_set_config_ip_t;
336 
337 
338 typedef struct {
339 
340     /**
341      * ivd_ctl_set_config_op_t
342      */
343     ivd_ctl_set_config_op_t             s_ivd_ctl_set_config_op_t;
344 }ihevcd_cxa_ctl_set_config_op_t;
345 
346 /*****************************************************************************/
347 /*   Video control:Get Buf Info                                              */
348 /*****************************************************************************/
349 
350 
351 typedef struct {
352 
353     /**
354      * ivd_ctl_getbufinfo_ip_t
355      */
356     ivd_ctl_getbufinfo_ip_t             s_ivd_ctl_getbufinfo_ip_t;
357 }ihevcd_cxa_ctl_getbufinfo_ip_t;
358 
359 
360 
361 typedef struct {
362 
363     /**
364      * ivd_ctl_getbufinfo_op_t
365      */
366     ivd_ctl_getbufinfo_op_t             s_ivd_ctl_getbufinfo_op_t;
367 }ihevcd_cxa_ctl_getbufinfo_op_t;
368 
369 
370 /*****************************************************************************/
371 /*   Video control:Getstatus Call                                            */
372 /*****************************************************************************/
373 
374 
375 typedef struct {
376 
377     /**
378      * ivd_ctl_getstatus_ip_t
379      */
380     ivd_ctl_getstatus_ip_t                  s_ivd_ctl_getstatus_ip_t;
381 }ihevcd_cxa_ctl_getstatus_ip_t;
382 
383 
384 
385 typedef struct {
386 
387     /**
388      * ivd_ctl_getstatus_op_t
389      */
390     ivd_ctl_getstatus_op_t                  s_ivd_ctl_getstatus_op_t;
391 
392     /**
393      * Height of the coding picture without cropping
394      */
395     UWORD32                  u4_coded_pic_ht;
396 
397     /**
398      * Width of the coding picture without cropping
399      */
400     UWORD32                  u4_coded_pic_wd;
401 }ihevcd_cxa_ctl_getstatus_op_t;
402 
403 
404 /*****************************************************************************/
405 /*   Video control:Get Version Info                                          */
406 /*****************************************************************************/
407 
408 
409 typedef struct {
410 
411     /**
412      *  ivd_ctl_getversioninfo_ip_t
413      */
414     ivd_ctl_getversioninfo_ip_t         s_ivd_ctl_getversioninfo_ip_t;
415 }ihevcd_cxa_ctl_getversioninfo_ip_t;
416 
417 
418 
419 typedef struct {
420 
421     /**
422      *  ivd_ctl_getversioninfo_op_t
423      */
424     ivd_ctl_getversioninfo_op_t         s_ivd_ctl_getversioninfo_op_t;
425 }ihevcd_cxa_ctl_getversioninfo_op_t;
426 
427 
428 typedef struct {
429 
430     /**
431      * u4_size
432      */
433     UWORD32                                     u4_size;
434 
435     /**
436      * cmd
437      */
438     IVD_API_COMMAND_TYPE_T                      e_cmd;
439 
440     /**
441      * sub_cmd
442      */
443     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
444 
445     /**
446      * Pictures that are are degraded
447      * 0 : No degrade
448      * 1 : Only on non-reference frames
449      * 2 : Use interval specified by u4_nondegrade_interval
450      * 3 : All non-key frames
451      * 4 : All frames
452      */
453     WORD32                                     i4_degrade_pics;
454 
455     /**
456      * Interval for pictures which are completely decoded without any degradation
457      */
458     WORD32                                     i4_nondegrade_interval;
459 
460     /**
461      * bit position (lsb is zero): Type of degradation
462      * 0 : Disable SAO
463      * 1 : Disable deblocking
464      * 2 : Faster inter prediction filters
465      * 3 : Fastest inter prediction filters
466      */
467     WORD32                                     i4_degrade_type;
468 
469 }ihevcd_cxa_ctl_degrade_ip_t;
470 
471 typedef struct
472 {
473     /**
474      * u4_size
475      */
476     UWORD32                                     u4_size;
477 
478     /**
479      * error_code
480      */
481     UWORD32                                     u4_error_code;
482 }ihevcd_cxa_ctl_degrade_op_t;
483 
484 typedef struct
485 {
486 
487     /**
488      * size
489      */
490     UWORD32                                     u4_size;
491 
492     /**
493      * cmd
494      */
495     IVD_API_COMMAND_TYPE_T                      e_cmd;
496 
497     /**
498      * sub_cmd
499      */
500     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
501 
502     /**
503      * num_cores
504      */
505     UWORD32                                     u4_num_cores;
506 }ihevcd_cxa_ctl_set_num_cores_ip_t;
507 
508 typedef struct
509 {
510 
511     /**
512      * size
513      */
514     UWORD32                                     u4_size;
515 
516     /**
517      * error_code
518      */
519     UWORD32                                     u4_error_code;
520 }ihevcd_cxa_ctl_set_num_cores_op_t;
521 
522 typedef struct
523 {
524     /**
525      * size
526      */
527     UWORD32                                     u4_size;
528     /**
529      * cmd
530      */
531     IVD_API_COMMAND_TYPE_T                      e_cmd;
532     /**
533      * sub cmd
534      */
535     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
536     /**
537      * Processor type
538      */
539     UWORD32                                     u4_arch;
540     /**
541      * SOC type
542      */
543     UWORD32                                     u4_soc;
544 
545     /**
546      * num_cores
547      */
548     UWORD32                                     u4_num_cores;
549 
550 }ihevcd_cxa_ctl_set_processor_ip_t;
551 
552 typedef struct
553 {
554     /**
555      * size
556      */
557     UWORD32                                     u4_size;
558     /**
559      * error_code
560      */
561     UWORD32                                     u4_error_code;
562 }ihevcd_cxa_ctl_set_processor_op_t;
563 
564 typedef struct
565 {
566 
567     /**
568      * size
569      */
570     UWORD32                                     u4_size;
571 
572     /**
573      * cmd
574      */
575     IVD_API_COMMAND_TYPE_T                      e_cmd;
576 
577     /**
578      * sub cmd
579      */
580     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
581 }ihevcd_cxa_ctl_get_frame_dimensions_ip_t;
582 
583 
584 typedef struct {
585 
586     /**
587      * size
588      */
589     UWORD32                                     u4_size;
590 
591     /**
592      * error_code
593      */
594     UWORD32                                     u4_error_code;
595 
596     /**
597      * x_offset[3]
598      */
599     UWORD32                                     u4_x_offset[3];
600 
601     /**
602      * y_offset[3]
603      */
604     UWORD32                                     u4_y_offset[3];
605 
606     /**
607      * disp_wd[3]
608      */
609     UWORD32                                     u4_disp_wd[3];
610 
611     /**
612      * disp_ht[3]
613      */
614     UWORD32                                     u4_disp_ht[3];
615 
616     /**
617      * buffer_wd[3]
618      */
619     UWORD32                                     u4_buffer_wd[3];
620 
621     /**
622      * buffer_ht[3]
623      */
624     UWORD32                                     u4_buffer_ht[3];
625 }ihevcd_cxa_ctl_get_frame_dimensions_op_t;
626 
627 typedef struct {
628     UWORD32                                     u4_size;
629     IVD_API_COMMAND_TYPE_T                      e_cmd;
630     IVD_CONTROL_API_COMMAND_TYPE_T              e_sub_cmd;
631 }ihevcd_cxa_ctl_get_vui_params_ip_t;
632 
633 typedef struct {
634     UWORD32                                     u4_size;
635     UWORD32                                     u4_error_code;
636 
637     /**
638     *  indicates the presence of aspect_ratio
639     */
640     UWORD8 u1_aspect_ratio_info_present_flag;
641 
642     /**
643     *  specifies the aspect ratio of the luma samples
644     */
645     UWORD8 u1_aspect_ratio_idc;
646 
647     /**
648     *  width of the luma samples. user dependent
649     */
650     UWORD16 u2_sar_width;
651 
652     /**
653     *  hieght of the luma samples. user dependent
654     */
655     UWORD16 u2_sar_height;
656 
657     /**
658     * if 1, specifies that the overscan_appropriate_flag is present
659     * if 0, the preferred display method for the video signal is unspecified
660     */
661     UWORD8 u1_overscan_info_present_flag;
662 
663     /**
664     * if 1,indicates that the cropped decoded pictures output
665     * are suitable for display using overscan
666     */
667     UWORD8 u1_overscan_appropriate_flag;
668 
669     /**
670     * if 1 specifies that video_format, video_full_range_flag and
671     * colour_description_present_flag are present
672     */
673     UWORD8 u1_video_signal_type_present_flag;
674 
675     /**
676     *
677     */
678     UWORD8 u1_video_format;
679 
680     /**
681     * indicates the black level and range of the luma and chroma signals
682     */
683     UWORD8 u1_video_full_range_flag;
684 
685     /**
686     * if 1,to 1 specifies that colour_primaries, transfer_characteristics
687     * and matrix_coefficients are present
688     */
689     UWORD8 u1_colour_description_present_flag;
690 
691     /**
692     * indicates the chromaticity coordinates of the source primaries
693     */
694     UWORD8 u1_colour_primaries;
695 
696     /**
697     * indicates the opto-electronic transfer characteristic of the source picture
698     */
699     UWORD8 u1_transfer_characteristics;
700 
701     /**
702     * the matrix coefficients used in deriving luma and chroma signals
703     * from the green, blue, and red primaries
704     */
705     UWORD8 u1_matrix_coefficients;
706 
707     /**
708     * if 1, specifies that chroma_sample_loc_type_top_field and
709     * chroma_sample_loc_type_bottom_field are present
710     */
711     UWORD8 u1_chroma_loc_info_present_flag;
712 
713     /**
714     * location of chroma samples
715     */
716     UWORD8 u1_chroma_sample_loc_type_top_field;
717 
718     UWORD8 u1_chroma_sample_loc_type_bottom_field;
719 
720     /**
721     * if 1, indicates that the value of all decoded chroma samples is
722     * equal to 1 << ( BitDepthC - 1 )
723     */
724     UWORD8 u1_neutral_chroma_indication_flag;
725 
726     /**
727     *  1 indicates that the coded video sequence conveys pictures that represent fields
728     *  0 indicates the pictures that represents field
729     */
730     UWORD8 u1_field_seq_flag;
731 
732     /**
733     * specifies that picture timing SEI messages are present for every picture
734     */
735     UWORD8 u1_frame_field_info_present_flag;
736 
737     /**
738     * 1 indicates that the default display window parameters follow next in the VUI
739     */
740     UWORD8 u1_default_display_window_flag;
741 
742     /**
743     * specify the samples of the pictures in the coded video sequence
744     * that are within the default display window,
745     * in terms of a rectangular region specified in picture coordinates for display
746     */
747     UWORD32 u4_def_disp_win_left_offset;
748 
749     UWORD32 u4_def_disp_win_right_offset;
750 
751     UWORD32 u4_def_disp_win_top_offset;
752 
753     UWORD32 u4_def_disp_win_bottom_offset;
754 
755     /**
756     *  to 1 specifies that the syntax structure hrd_parameters is present in the vui_parameters syntax structue
757     */
758     UWORD8 u1_vui_hrd_parameters_present_flag;
759 
760     /**
761     *   Indicates the presence of the
762     *   num_units_in_ticks, time_scale flag
763     */
764     UWORD8 u1_vui_timing_info_present_flag;
765 
766     /**
767     *   Number of units that
768     *   correspond to one increment of the
769     *   clock. Indicates the  resolution
770     */
771     UWORD32 u4_vui_num_units_in_tick;
772 
773     /**
774     *   The number of time units that pass in one second
775     */
776     UWORD32 u4_vui_time_scale;
777     /**
778     * if 1, indicates that the POC for each picture in the coded video sequence (cvs) (not the first picture), in decoding order,
779     * is proportional to the output time of the picture relative to that of the first picture in the cvs
780     */
781     UWORD8 u1_poc_proportional_to_timing_flag;
782 
783     /**
784     * num_ticks_poc_diff_one_minus1 plus 1 specifies the number of clock ticks
785     * corresponding to a difference of poc values equal to 1
786     */
787     UWORD8 u1_num_ticks_poc_diff_one_minus1;
788 
789     /**
790     * 1, specifies that the following cvs bitstream restriction parameters are present
791     */
792     UWORD8 u1_bitstream_restriction_flag;
793 
794     /**
795     *  if 1, indicates that each pps that is active in the cvs has
796     *  the same value of the tile syntax elements
797     */
798     UWORD8 u1_tiles_fixed_structure_flag;
799 
800     /**
801     * if 0, indicates that no pel outside the pic boundaries and
802     * no sub-pels derived using pels outside the pic boundaries is used for inter prediction
803     */
804     UWORD8 u1_motion_vectors_over_pic_boundaries_flag;
805 
806     /**
807     * if 1, indicates
808     * all P/B slices belonging to the same pic have an identical refpic list0,
809     * all B slices that belong to the same picture have an identical refpic list1.
810     */
811     UWORD8 u1_restricted_ref_pic_lists_flag;
812 
813     /**
814     *
815     */
816     UWORD8 u4_min_spatial_segmentation_idc;
817     /**
818     * Indicates a number of bytes not exceeded by the sum of the sizes of the VCL NAL units
819     * associated with any coded picture
820     */
821     UWORD8 u1_max_bytes_per_pic_denom;
822 
823     /**
824     *  Indicates an upper bound for the number of bits of coding_unit() data
825     */
826     UWORD8 u1_max_bits_per_mincu_denom;
827 
828     /**
829     * Indicate the maximum absolute value of a decoded horizontal MV component
830     * in quarter-pel luma units
831     */
832     UWORD8 u1_log2_max_mv_length_horizontal;
833 
834     /**
835     * Indicate the maximum absolute value of a decoded vertical MV component
836     * in quarter-pel luma units
837     */
838     UWORD8 u1_log2_max_mv_length_vertical;
839 
840     /**
841      * HRD parameters
842      */
843 
844 
845     /**
846     *   Indicates the presence of the
847     *   num_units_in_ticks, time_scale flag
848     */
849     UWORD8 u1_timing_info_present_flag;
850 
851     /**
852     *   Number of units that
853     *   correspond to one increment of the
854     *   clock. Indicates the  resolution
855     */
856     UWORD32 u4_num_units_in_tick;
857 
858     /**
859     *   The number of time units that pass in one second
860     */
861     UWORD32 u4_time_scale;
862 
863     /**
864     * Nal- hrd parameters flag
865     */
866     UWORD8 u1_nal_hrd_parameters_present_flag;
867 
868     /**
869     * VCL- hrd parameters flag
870     */
871     UWORD8 u1_vcl_hrd_parameters_present_flag;
872 
873     /**
874     * Indicates the presence of NAL-HRD params or VCL_HRD params
875     * in the bitstream
876     */
877     UWORD8 u1_cpbdpb_delays_present_flag;
878 
879     /**
880     * specifies that sub-picture level CPB removal delay parameters are
881     * present in picture timing SEI messages
882     */
883     UWORD8 u1_sub_pic_cpb_params_present_flag;
884 
885     /**
886     * specify the clock sub-tick
887     * (the minimum interval of time that can be represented in the coded data when sub_pic_cpb_params_present_flag is equal to 1)
888     */
889     UWORD8 u1_tick_divisor_minus2;
890 
891     /**
892     * specifies the length, in bits for the du cpb delay syntax in pt_sei
893     */
894     UWORD8 u1_du_cpb_removal_delay_increment_length_minus1;
895 
896     /**
897     * Indicates presence of sub_pic_cpb_params in pic timing sei
898     */
899     UWORD8 u1_sub_pic_cpb_params_in_pic_timing_sei_flag;
900 
901     /**
902      * Indicates dpb output delay for the du
903      */
904     UWORD8 u1_dpb_output_delay_du_length_minus1;
905 
906     /**
907     * (together with bit_rate_value_minus1) specifies the
908     * maximum input bit rate of the i-th CPB
909     */
910     UWORD8 u4_bit_rate_scale;
911 
912     /**
913     * (together with cpb_size_du_value_minus1) specfies
914     * CPB size of the i-th CPB when the CPB operates
915     * at the access unit level
916     */
917     UWORD8 u4_cpb_size_scale;
918 
919     /**
920     * (together with cpb_size_du_value_minus1) specfies
921     * CPB size of the i-th CPB when the CPB operates
922     * at the sub-picture level
923     */
924     UWORD8 u4_cpb_size_du_scale;
925 
926 
927     /**
928     * specifies the length, in bits for initial cpb delay (nal/vcl)sysntax in bp sei
929     */
930     UWORD8  u1_initial_cpb_removal_delay_length_minus1;
931 
932     /**
933     * specifies the length, in bits for the au cpb delay syntax in pt_sei
934     */
935     UWORD8  u1_au_cpb_removal_delay_length_minus1;
936 
937     /**
938     * specifies the length, in bits, of the pic_dpb_output_delay syntax element in the pt SEI message
939     */
940     UWORD8  u1_dpb_output_delay_length_minus1;
941 
942     /**
943     * if 1, , for the highest temporal sub-layers, the temporal distance between the HRD output times
944     *  of consecutive pictures in output order is constrained refer to Table E-6
945     */
946     UWORD8 au1_fixed_pic_rate_general_flag[6];
947 
948     UWORD8 au1_fixed_pic_rate_within_cvs_flag[6];
949 
950     /**
951     * if 1, , for the highest temporal sub-layers, the temporal distance (in clock ticks) between the
952     * element units that specify HRD output times of consecutive pictures in output order is constrained
953     * refer to Table E-6
954     */
955     UWORD8 au1_elemental_duration_in_tc_minus1[6];
956 
957     /**
958     * specifies the HRD operational mode
959     */
960     UWORD8 au1_low_delay_hrd_flag[6];
961 
962     /**
963     * 1 specifies the number of alternative CPB specifications in the
964     * bitstream of the cvs when HighestTid is equal to i
965     */
966     UWORD8 au1_cpb_cnt_minus1[6];
967 }ihevcd_cxa_ctl_get_vui_params_op_t;
968 
969 #ifdef __cplusplus
970 } /* closing brace for extern "C" */
971 #endif
972 #endif /* __IHEVCD_CXA_H__ */
973