blob: 7c71271c556b5223451628c7759bf12c455e0247 [file] [log] [blame]
Harish Mahendrakar0d8951c2014-05-16 10:31:13 -07001/******************************************************************************
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
39extern "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/*****************************************************************************/
66IV_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
76typedef 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/* Get Number of Memory Records */
145/*****************************************************************************/
146
147
148typedef struct {
149
150 /**
151 * ivd_num_mem_rec_ip_t
152 */
153 iv_num_mem_rec_ip_t s_ivd_num_mem_rec_ip_t;
154}ihevcd_cxa_num_mem_rec_ip_t;
155
156
157typedef struct {
158
159 /**
160 * ivd_num_mem_rec_op_t
161 */
162 iv_num_mem_rec_op_t s_ivd_num_mem_rec_op_t;
163}ihevcd_cxa_num_mem_rec_op_t;
164
165
166/*****************************************************************************/
167/* Fill Memory Records */
168/*****************************************************************************/
169
170
171typedef struct {
172 /**
173 * ivd_fill_mem_rec_ip_t
174 */
175 iv_fill_mem_rec_ip_t s_ivd_fill_mem_rec_ip_t;
176
177 /**
178 * level
179 */
180 WORD32 i4_level;
181
182 /**
183 * num_reorder_frames
184 */
185 UWORD32 u4_num_reorder_frames;
186
187 /**
188 * num_ref_frames
189 */
190 UWORD32 u4_num_ref_frames;
191
192 /**
193 * share_disp_buf
194 */
195 UWORD32 u4_share_disp_buf;
196
197 /**
198 * format in which codec has to give out frame data for display
199 */
200 IV_COLOR_FORMAT_T e_output_format;
201
202 /**
203 * Number of extra display buffers that will be allocated to handle display pipeline depth
204 */
205 UWORD32 u4_num_extra_disp_buf;
206
207}ihevcd_cxa_fill_mem_rec_ip_t;
208
209
210typedef struct {
211
212 /**
213 * ivd_fill_mem_rec_op_t
214 */
215
216 iv_fill_mem_rec_op_t s_ivd_fill_mem_rec_op_t;
217
218}ihevcd_cxa_fill_mem_rec_op_t;
219
220/*****************************************************************************/
221/* Retrieve Memory Records */
222/*****************************************************************************/
223
224
225typedef struct {
226
227 /**
228 * ivd_retrieve_mem_rec_ip_t
229 */
230 iv_retrieve_mem_rec_ip_t s_ivd_retrieve_mem_rec_ip_t;
231}ihevcd_cxa_retrieve_mem_rec_ip_t;
232
233
234typedef struct {
235
236 /**
237 * ivd_retrieve_mem_rec_op_t
238 */
239 iv_retrieve_mem_rec_op_t s_ivd_retrieve_mem_rec_op_t;
240}ihevcd_cxa_retrieve_mem_rec_op_t;
241
242
243/*****************************************************************************/
244/* Initialize decoder */
245/*****************************************************************************/
246
247
248typedef struct {
249
250 /**
251 * ivd_init_ip_t
252 */
253 ivd_init_ip_t s_ivd_init_ip_t;
254
255 /**
256 * level
257 */
258 WORD32 i4_level;
259
260 /**
261 * num_reorder_frames
262 */
263 UWORD32 u4_num_reorder_frames;
264
265 /**
266 * num_ref_frames
267 */
268 UWORD32 u4_num_ref_frames;
269
270 /**
271 * share_disp_buf
272 */
273 UWORD32 u4_share_disp_buf;
274
275 /**
276 * Number of extra display buffers that will be allocated to handle display pipeline depth
277 */
278 UWORD32 u4_num_extra_disp_buf;
279}ihevcd_cxa_init_ip_t;
280
281
282typedef struct {
283
284 /**
285 * ivd_init_op_t
286 */
287 ivd_init_op_t s_ivd_init_op_t;
288}ihevcd_cxa_init_op_t;
289
290
291/*****************************************************************************/
292/* Video Decode */
293/*****************************************************************************/
294
295
296typedef struct {
297
298 /**
299 * ivd_video_decode_ip_t
300 */
301 ivd_video_decode_ip_t s_ivd_video_decode_ip_t;
302}ihevcd_cxa_video_decode_ip_t;
303
304
305typedef struct {
306
307 /**
308 * ivd_video_decode_op_t
309 */
310 ivd_video_decode_op_t s_ivd_video_decode_op_t;
311}ihevcd_cxa_video_decode_op_t;
312
313
314/*****************************************************************************/
315/* Get Display Frame */
316/*****************************************************************************/
317
318
319typedef struct
320{
321 /**
322 * ivd_get_display_frame_ip_t
323 */
324 ivd_get_display_frame_ip_t s_ivd_get_display_frame_ip_t;
325}ihevcd_cxa_get_display_frame_ip_t;
326
327
328typedef struct
329{
330 /**
331 * ivd_get_display_frame_op_t
332 */
333 ivd_get_display_frame_op_t s_ivd_get_display_frame_op_t;
334}ihevcd_cxa_get_display_frame_op_t;
335
336/*****************************************************************************/
337/* Set Display Frame */
338/*****************************************************************************/
339
340
341typedef struct
342{
343 /**
344 * ivd_set_display_frame_ip_t
345 */
346 ivd_set_display_frame_ip_t s_ivd_set_display_frame_ip_t;
347}ihevcd_cxa_set_display_frame_ip_t;
348
349
350typedef struct
351{
352 /**
353 * ivd_set_display_frame_op_t
354 */
355 ivd_set_display_frame_op_t s_ivd_set_display_frame_op_t;
356}ihevcd_cxa_set_display_frame_op_t;
357
358/*****************************************************************************/
359/* Release Display Buffers */
360/*****************************************************************************/
361
362
363typedef struct
364{
365 /**
366 * ivd_rel_display_frame_ip_t
367 */
368
369 ivd_rel_display_frame_ip_t s_ivd_rel_display_frame_ip_t;
370}ihevcd_cxa_rel_display_frame_ip_t;
371
372
373typedef struct
374{
375 /**
376 * ivd_rel_display_frame_op_t
377 */
378 ivd_rel_display_frame_op_t s_ivd_rel_display_frame_op_t;
379}ihevcd_cxa_rel_display_frame_op_t;
380
381
382typedef enum
383{
384 /** Set number of cores/threads to be used */
385 IHEVCD_CXA_CMD_CTL_SET_NUM_CORES = IVD_CMD_CTL_CODEC_SUBCMD_START,
386
387 /** Set processor details */
388 IHEVCD_CXA_CMD_CTL_SET_PROCESSOR = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x001,
389
390 /** Get display buffer dimensions */
391 IHEVCD_CXA_CMD_CTL_GET_BUFFER_DIMENSIONS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x100,
392
393 /** Get VUI parameters */
394 IHEVCD_CXA_CMD_CTL_GET_VUI_PARAMS = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x101,
395
396 /** Enable/disable GPU, supported on select platforms */
397 IHEVCD_CXA_CMD_CTL_GPU_ENABLE_DISABLE = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x200,
398
399 /** Set degrade level */
400 IHEVCD_CXA_CMD_CTL_DEGRADE = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x300
401}IHEVCD_CXA_CMD_CTL_SUB_CMDS;
402/*****************************************************************************/
403/* Video control Flush */
404/*****************************************************************************/
405
406
407typedef struct {
408
409 /**
410 * ivd_ctl_flush_ip_t
411 */
412 ivd_ctl_flush_ip_t s_ivd_ctl_flush_ip_t;
413}ihevcd_cxa_ctl_flush_ip_t;
414
415
416typedef struct {
417
418 /**
419 * ivd_ctl_flush_op_t
420 */
421 ivd_ctl_flush_op_t s_ivd_ctl_flush_op_t;
422}ihevcd_cxa_ctl_flush_op_t;
423
424/*****************************************************************************/
425/* Video control reset */
426/*****************************************************************************/
427
428
429typedef struct {
430
431 /**
432 * ivd_ctl_reset_ip_t
433 */
434 ivd_ctl_reset_ip_t s_ivd_ctl_reset_ip_t;
435}ihevcd_cxa_ctl_reset_ip_t;
436
437
438typedef struct {
439
440 /**
441 * ivd_ctl_reset_op_t
442 */
443 ivd_ctl_reset_op_t s_ivd_ctl_reset_op_t;
444}ihevcd_cxa_ctl_reset_op_t;
445
446
447/*****************************************************************************/
448/* Video control Set Params */
449/*****************************************************************************/
450
451
452typedef struct {
453
454 /**
455 * ivd_ctl_set_config_ip_t
456 */
457 ivd_ctl_set_config_ip_t s_ivd_ctl_set_config_ip_t;
458}ihevcd_cxa_ctl_set_config_ip_t;
459
460
461typedef struct {
462
463 /**
464 * ivd_ctl_set_config_op_t
465 */
466 ivd_ctl_set_config_op_t s_ivd_ctl_set_config_op_t;
467}ihevcd_cxa_ctl_set_config_op_t;
468
469/*****************************************************************************/
470/* Video control:Get Buf Info */
471/*****************************************************************************/
472
473
474typedef struct {
475
476 /**
477 * ivd_ctl_getbufinfo_ip_t
478 */
479 ivd_ctl_getbufinfo_ip_t s_ivd_ctl_getbufinfo_ip_t;
480}ihevcd_cxa_ctl_getbufinfo_ip_t;
481
482
483
484typedef struct {
485
486 /**
487 * ivd_ctl_getbufinfo_op_t
488 */
489 ivd_ctl_getbufinfo_op_t s_ivd_ctl_getbufinfo_op_t;
490}ihevcd_cxa_ctl_getbufinfo_op_t;
491
492
493/*****************************************************************************/
494/* Video control:Getstatus Call */
495/*****************************************************************************/
496
497
498typedef struct {
499
500 /**
501 * ivd_ctl_getstatus_ip_t
502 */
503 ivd_ctl_getstatus_ip_t s_ivd_ctl_getstatus_ip_t;
504}ihevcd_cxa_ctl_getstatus_ip_t;
505
506
507
508typedef struct {
509
510 /**
511 * ivd_ctl_getstatus_op_t
512 */
513 ivd_ctl_getstatus_op_t s_ivd_ctl_getstatus_op_t;
Harish Mahendrakar707042f2014-06-04 10:31:48 -0700514
515 /**
516 * Height of the coding picture without cropping
517 */
518 UWORD32 u4_coded_pic_ht;
519
520 /**
521 * Width of the coding picture without cropping
522 */
523 UWORD32 u4_coded_pic_wd;
Harish Mahendrakar0d8951c2014-05-16 10:31:13 -0700524}ihevcd_cxa_ctl_getstatus_op_t;
525
526
527/*****************************************************************************/
528/* Video control:Get Version Info */
529/*****************************************************************************/
530
531
532typedef struct {
533
534 /**
535 * ivd_ctl_getversioninfo_ip_t
536 */
537 ivd_ctl_getversioninfo_ip_t s_ivd_ctl_getversioninfo_ip_t;
538}ihevcd_cxa_ctl_getversioninfo_ip_t;
539
540
541
542typedef struct {
543
544 /**
545 * ivd_ctl_getversioninfo_op_t
546 */
547 ivd_ctl_getversioninfo_op_t s_ivd_ctl_getversioninfo_op_t;
548}ihevcd_cxa_ctl_getversioninfo_op_t;
549
550
551typedef struct {
552
553 /**
554 * u4_size
555 */
556 UWORD32 u4_size;
557
558 /**
559 * cmd
560 */
561 IVD_API_COMMAND_TYPE_T e_cmd;
562
563 /**
564 * sub_cmd
565 */
566 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
567
568 /**
569 * Pictures that are are degraded
570 * 0 : No degrade
571 * 1 : Only on non-reference frames
572 * 2 : Use interval specified by u4_nondegrade_interval
573 * 3 : All non-key frames
574 * 4 : All frames
575 */
576 WORD32 i4_degrade_pics;
577
578 /**
579 * Interval for pictures which are completely decoded without any degradation
580 */
581 WORD32 i4_nondegrade_interval;
582
583 /**
584 * bit position (lsb is zero): Type of degradation
585 * 0 : Disable SAO
586 * 1 : Disable deblocking
587 * 2 : Faster inter prediction filters
588 * 3 : Fastest inter prediction filters
589 */
590 WORD32 i4_degrade_type;
591
592}ihevcd_cxa_ctl_degrade_ip_t;
593
594typedef struct
595{
596 /**
597 * u4_size
598 */
599 UWORD32 u4_size;
600
601 /**
602 * error_code
603 */
604 UWORD32 u4_error_code;
605}ihevcd_cxa_ctl_degrade_op_t;
606
607typedef struct
608{
609
610 /**
611 * size
612 */
613 UWORD32 u4_size;
614
615 /**
616 * cmd
617 */
618 IVD_API_COMMAND_TYPE_T e_cmd;
619
620 /**
621 * sub_cmd
622 */
623 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
624
625 /**
626 * num_cores
627 */
628 UWORD32 u4_num_cores;
629}ihevcd_cxa_ctl_set_num_cores_ip_t;
630
631typedef struct
632{
633
634 /**
635 * size
636 */
637 UWORD32 u4_size;
638
639 /**
640 * error_code
641 */
642 UWORD32 u4_error_code;
643}ihevcd_cxa_ctl_set_num_cores_op_t;
644
645typedef struct
646{
647 /**
648 * size
649 */
650 UWORD32 u4_size;
651 /**
652 * cmd
653 */
654 IVD_API_COMMAND_TYPE_T e_cmd;
655 /**
656 * sub cmd
657 */
658 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
659 /**
660 * Processor type
661 */
662 UWORD32 u4_arch;
663 /**
664 * SOC type
665 */
666 UWORD32 u4_soc;
667
668 /**
669 * num_cores
670 */
671 UWORD32 u4_num_cores;
672
673}ihevcd_cxa_ctl_set_processor_ip_t;
674
675typedef struct
676{
677 /**
678 * size
679 */
680 UWORD32 u4_size;
681 /**
682 * error_code
683 */
684 UWORD32 u4_error_code;
685}ihevcd_cxa_ctl_set_processor_op_t;
686
687typedef struct
688{
689
690 /**
691 * size
692 */
693 UWORD32 u4_size;
694
695 /**
696 * cmd
697 */
698 IVD_API_COMMAND_TYPE_T e_cmd;
699
700 /**
701 * sub cmd
702 */
703 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
704}ihevcd_cxa_ctl_get_frame_dimensions_ip_t;
705
706
707typedef struct {
708
709 /**
710 * size
711 */
712 UWORD32 u4_size;
713
714 /**
715 * error_code
716 */
717 UWORD32 u4_error_code;
718
719 /**
720 * x_offset[3]
721 */
722 UWORD32 u4_x_offset[3];
723
724 /**
725 * y_offset[3]
726 */
727 UWORD32 u4_y_offset[3];
728
729 /**
730 * disp_wd[3]
731 */
732 UWORD32 u4_disp_wd[3];
733
734 /**
735 * disp_ht[3]
736 */
737 UWORD32 u4_disp_ht[3];
738
739 /**
740 * buffer_wd[3]
741 */
742 UWORD32 u4_buffer_wd[3];
743
744 /**
745 * buffer_ht[3]
746 */
747 UWORD32 u4_buffer_ht[3];
748}ihevcd_cxa_ctl_get_frame_dimensions_op_t;
749
750typedef struct {
751 UWORD32 u4_size;
752 IVD_API_COMMAND_TYPE_T e_cmd;
753 IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
754}ihevcd_cxa_ctl_get_vui_params_ip_t;
755
756typedef struct {
757 UWORD32 u4_size;
758 UWORD32 u4_error_code;
759
760 /**
761 * indicates the presence of aspect_ratio
762 */
763 UWORD8 u1_aspect_ratio_info_present_flag;
764
765 /**
766 * specifies the aspect ratio of the luma samples
767 */
768 UWORD8 u1_aspect_ratio_idc;
769
770 /**
771 * width of the luma samples. user dependent
772 */
773 UWORD16 u2_sar_width;
774
775 /**
776 * hieght of the luma samples. user dependent
777 */
778 UWORD16 u2_sar_height;
779
780 /**
781 * if 1, specifies that the overscan_appropriate_flag is present
782 * if 0, the preferred display method for the video signal is unspecified
783 */
784 UWORD8 u1_overscan_info_present_flag;
785
786 /**
787 * if 1,indicates that the cropped decoded pictures output
788 * are suitable for display using overscan
789 */
790 UWORD8 u1_overscan_appropriate_flag;
791
792 /**
793 * if 1 specifies that video_format, video_full_range_flag and
794 * colour_description_present_flag are present
795 */
796 UWORD8 u1_video_signal_type_present_flag;
797
798 /**
799 *
800 */
801 UWORD8 u1_video_format;
802
803 /**
804 * indicates the black level and range of the luma and chroma signals
805 */
806 UWORD8 u1_video_full_range_flag;
807
808 /**
809 * if 1,to 1 specifies that colour_primaries, transfer_characteristics
810 * and matrix_coefficients are present
811 */
812 UWORD8 u1_colour_description_present_flag;
813
814 /**
815 * indicates the chromaticity coordinates of the source primaries
816 */
817 UWORD8 u1_colour_primaries;
818
819 /**
820 * indicates the opto-electronic transfer characteristic of the source picture
821 */
822 UWORD8 u1_transfer_characteristics;
823
824 /**
825 * the matrix coefficients used in deriving luma and chroma signals
826 * from the green, blue, and red primaries
827 */
828 UWORD8 u1_matrix_coefficients;
829
830 /**
831 * if 1, specifies that chroma_sample_loc_type_top_field and
832 * chroma_sample_loc_type_bottom_field are present
833 */
834 UWORD8 u1_chroma_loc_info_present_flag;
835
836 /**
837 * location of chroma samples
838 */
839 UWORD8 u1_chroma_sample_loc_type_top_field;
840
841 UWORD8 u1_chroma_sample_loc_type_bottom_field;
842
843 /**
844 * if 1, indicates that the value of all decoded chroma samples is
845 * equal to 1 << ( BitDepthC - 1 )
846 */
847 UWORD8 u1_neutral_chroma_indication_flag;
848
849 /**
850 * 1 indicates that the coded video sequence conveys pictures that represent fields
851 * 0 indicates the pictures that represents field
852 */
853 UWORD8 u1_field_seq_flag;
854
855 /**
856 * specifies that picture timing SEI messages are present for every picture
857 */
858 UWORD8 u1_frame_field_info_present_flag;
859
860 /**
861 * 1 indicates that the default display window parameters follow next in the VUI
862 */
863 UWORD8 u1_default_display_window_flag;
864
865 /**
866 * specify the samples of the pictures in the coded video sequence
867 * that are within the default display window,
868 * in terms of a rectangular region specified in picture coordinates for display
869 */
870 UWORD32 u4_def_disp_win_left_offset;
871
872 UWORD32 u4_def_disp_win_right_offset;
873
874 UWORD32 u4_def_disp_win_top_offset;
875
876 UWORD32 u4_def_disp_win_bottom_offset;
877
878 /**
879 * to 1 specifies that the syntax structure hrd_parameters is present in the vui_parameters syntax structue
880 */
881 UWORD8 u1_vui_hrd_parameters_present_flag;
882
883 /**
884 * Indicates the presence of the
885 * num_units_in_ticks, time_scale flag
886 */
887 UWORD8 u1_vui_timing_info_present_flag;
888
889 /**
890 * Number of units that
891 * correspond to one increment of the
892 * clock. Indicates the resolution
893 */
894 UWORD32 u4_vui_num_units_in_tick;
895
896 /**
897 * The number of time units that pass in one second
898 */
899 UWORD32 u4_vui_time_scale;
900 /**
901 * if 1, indicates that the POC for each picture in the coded video sequence (cvs) (not the first picture), in decoding order,
902 * is proportional to the output time of the picture relative to that of the first picture in the cvs
903 */
904 UWORD8 u1_poc_proportional_to_timing_flag;
905
906 /**
907 * num_ticks_poc_diff_one_minus1 plus 1 specifies the number of clock ticks
908 * corresponding to a difference of poc values equal to 1
909 */
910 UWORD8 u1_num_ticks_poc_diff_one_minus1;
911
912 /**
913 * 1, specifies that the following cvs bitstream restriction parameters are present
914 */
915 UWORD8 u1_bitstream_restriction_flag;
916
917 /**
918 * if 1, indicates that each pps that is active in the cvs has
919 * the same value of the tile syntax elements
920 */
921 UWORD8 u1_tiles_fixed_structure_flag;
922
923 /**
924 * if 0, indicates that no pel outside the pic boundaries and
925 * no sub-pels derived using pels outside the pic boundaries is used for inter prediction
926 */
927 UWORD8 u1_motion_vectors_over_pic_boundaries_flag;
928
929 /**
930 * if 1, indicates
931 * all P/B slices belonging to the same pic have an identical refpic list0,
932 * all B slices that belong to the same picture have an identical refpic list1.
933 */
934 UWORD8 u1_restricted_ref_pic_lists_flag;
935
936 /**
937 *
938 */
939 UWORD8 u4_min_spatial_segmentation_idc;
940 /**
941 * Indicates a number of bytes not exceeded by the sum of the sizes of the VCL NAL units
942 * associated with any coded picture
943 */
944 UWORD8 u1_max_bytes_per_pic_denom;
945
946 /**
947 * Indicates an upper bound for the number of bits of coding_unit() data
948 */
949 UWORD8 u1_max_bits_per_mincu_denom;
950
951 /**
952 * Indicate the maximum absolute value of a decoded horizontal MV component
953 * in quarter-pel luma units
954 */
955 UWORD8 u1_log2_max_mv_length_horizontal;
956
957 /**
958 * Indicate the maximum absolute value of a decoded vertical MV component
959 * in quarter-pel luma units
960 */
961 UWORD8 u1_log2_max_mv_length_vertical;
962
963 /**
964 * HRD parameters
965 */
966
967
968 /**
969 * Indicates the presence of the
970 * num_units_in_ticks, time_scale flag
971 */
972 UWORD8 u1_timing_info_present_flag;
973
974 /**
975 * Number of units that
976 * correspond to one increment of the
977 * clock. Indicates the resolution
978 */
979 UWORD32 u4_num_units_in_tick;
980
981 /**
982 * The number of time units that pass in one second
983 */
984 UWORD32 u4_time_scale;
985
986 /**
987 * Nal- hrd parameters flag
988 */
989 UWORD8 u1_nal_hrd_parameters_present_flag;
990
991 /**
992 * VCL- hrd parameters flag
993 */
994 UWORD8 u1_vcl_hrd_parameters_present_flag;
995
996 /**
997 * Indicates the presence of NAL-HRD params or VCL_HRD params
998 * in the bitstream
999 */
1000 UWORD8 u1_cpbdpb_delays_present_flag;
1001
1002 /**
1003 * specifies that sub-picture level CPB removal delay parameters are
1004 * present in picture timing SEI messages
1005 */
1006 UWORD8 u1_sub_pic_cpb_params_present_flag;
1007
1008 /**
1009 * specify the clock sub-tick
1010 * (the minimum interval of time that can be represented in the coded data when sub_pic_cpb_params_present_flag is equal to 1)
1011 */
1012 UWORD8 u1_tick_divisor_minus2;
1013
1014 /**
1015 * specifies the length, in bits for the du cpb delay syntax in pt_sei
1016 */
1017 UWORD8 u1_du_cpb_removal_delay_increment_length_minus1;
1018
1019 /**
1020 * Indicates presence of sub_pic_cpb_params in pic timing sei
1021 */
1022 UWORD8 u1_sub_pic_cpb_params_in_pic_timing_sei_flag;
1023
1024 /**
1025 * Indicates dpb output delay for the du
1026 */
1027 UWORD8 u1_dpb_output_delay_du_length_minus1;
1028
1029 /**
1030 * (together with bit_rate_value_minus1) specifies the
1031 * maximum input bit rate of the i-th CPB
1032 */
1033 UWORD8 u4_bit_rate_scale;
1034
1035 /**
1036 * (together with cpb_size_du_value_minus1) specfies
1037 * CPB size of the i-th CPB when the CPB operates
1038 * at the access unit level
1039 */
1040 UWORD8 u4_cpb_size_scale;
1041
1042 /**
1043 * (together with cpb_size_du_value_minus1) specfies
1044 * CPB size of the i-th CPB when the CPB operates
1045 * at the sub-picture level
1046 */
1047 UWORD8 u4_cpb_size_du_scale;
1048
1049
1050 /**
1051 * specifies the length, in bits for initial cpb delay (nal/vcl)sysntax in bp sei
1052 */
1053 UWORD8 u1_initial_cpb_removal_delay_length_minus1;
1054
1055 /**
1056 * specifies the length, in bits for the au cpb delay syntax in pt_sei
1057 */
1058 UWORD8 u1_au_cpb_removal_delay_length_minus1;
1059
1060 /**
1061 * specifies the length, in bits, of the pic_dpb_output_delay syntax element in the pt SEI message
1062 */
1063 UWORD8 u1_dpb_output_delay_length_minus1;
1064
1065 /**
1066 * if 1, , for the highest temporal sub-layers, the temporal distance between the HRD output times
1067 * of consecutive pictures in output order is constrained refer to Table E-6
1068 */
1069 UWORD8 au1_fixed_pic_rate_general_flag[6];
1070
1071 UWORD8 au1_fixed_pic_rate_within_cvs_flag[6];
1072
1073 /**
1074 * if 1, , for the highest temporal sub-layers, the temporal distance (in clock ticks) between the
1075 * element units that specify HRD output times of consecutive pictures in output order is constrained
1076 * refer to Table E-6
1077 */
1078 UWORD8 au1_elemental_duration_in_tc_minus1[6];
1079
1080 /**
1081 * specifies the HRD operational mode
1082 */
1083 UWORD8 au1_low_delay_hrd_flag[6];
1084
1085 /**
1086 * 1 specifies the number of alternative CPB specifications in the
1087 * bitstream of the cvs when HighestTid is equal to i
1088 */
1089 UWORD8 au1_cpb_cnt_minus1[6];
1090}ihevcd_cxa_ctl_get_vui_params_op_t;
1091
Harish Mahendrakar0d8951c2014-05-16 10:31:13 -07001092#ifdef __cplusplus
1093} /* closing brace for extern "C" */
1094#endif
1095#endif /* __IHEVCD_CXA_H__ */