xref: /aosp_15_r20/external/libavc/decoder/svc/isvcd.h (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
1 /******************************************************************************
2  *
3  * Copyright (C) 2022 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  *  isvcd.h
24  *
25  * @brief
26  *  This file contains all the necessary structure and enumeration definitions
27  *    needed for the Application.
28  *  Program Interface(API) of the Ittiam SVC ASP
29  *  Decoder on Cortex A8 - Neon platform
30  *
31  * @author
32  *  Kishore
33  *
34  * @remarks
35  *  None
36  *
37  *******************************************************************************
38  */
39 
40 #ifndef _ISVCD_H_
41 #define _ISVCD_H_
42 #ifdef __cplusplus
43 extern "C"
44 {
45 #endif
46 
47 #include "iv.h"
48 #include "ivd.h"
49 
50 /*****************************************************************************/
51 /* Constant Macros                                                           */
52 /*****************************************************************************/
53 #define IVD_ERROR_MASK 0xFF
54 
55 /*****************************************************************************/
56 /* Function Macros                                                           */
57 /*****************************************************************************/
58 #define IS_IVD_CONCEALMENT_APPLIED(x) (x & (1 << IVD_APPLIEDCONCEALMENT))
59 #define IS_IVD_INSUFFICIENTDATA_ERROR(x) (x & (1 << IVD_INSUFFICIENTDATA))
60 #define IS_IVD_CORRUPTEDDATA_ERROR(x) (x & (1 << IVD_CORRUPTEDDATA))
61 #define IS_IVD_CORRUPTEDHEADER_ERROR(x) (x & (1 << IVD_CORRUPTEDHEADER))
62 #define IS_IVD_UNSUPPORTEDINPUT_ERROR(x) (x & (1 << IVD_UNSUPPORTEDINPUT))
63 #define IS_IVD_UNSUPPORTEDPARAM_ERROR(x) (x & (1 << IVD_UNSUPPORTEDPARAM))
64 #define IS_IVD_FATAL_ERROR(x) (x & (1 << IVD_FATALERROR))
65 #define IS_IVD_INVALID_BITSTREAM_ERROR(x) (x & (1 << IVD_INVALID_BITSTREAM))
66 #define IS_IVD_INCOMPLETE_BITSTREAM_ERROR(x) (x & (1 << IVD_INCOMPLETE_BITSTREAM))
67 
68     /*****************************************************************************/
69     /* API Function Prototype                                                    */
70     /*****************************************************************************/
71     IV_API_CALL_STATUS_T isvcd_api_function(iv_obj_t *ps_handle, void *pv_api_ip, void *pv_api_op);
72 
73     /*****************************************************************************/
74     /* Enums                                                                     */
75     /*****************************************************************************/
76     /* Codec Error codes for SVC ASP Decoder                                   */
77 
78     typedef enum
79     {
80 
81         ISVCD_VID_HDR_DEC_NUM_FRM_BUF_NOT_SUFFICIENT = IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS + 1,
82         ISVCD_FRAME_INFO_OP_BUF_NULL,
83         ISVCD_INSUFFICIENT_METADATA_BUFFER,
84 
85     } ISVCD_ERROR_CODES_T;
86 
87     /*****************************************************************************/
88     /* Extended Structures                                                       */
89     /*****************************************************************************/
90 
91     /*****************************************************************************/
92     /*  Delete Codec                                                             */
93     /*****************************************************************************/
94 
95     typedef struct
96     {
97         ivd_delete_ip_t s_ivd_delete_ip_t;
98     } isvcd_delete_ip_t;
99 
100     typedef struct
101     {
102         ivd_delete_op_t s_ivd_delete_op_t;
103     } isvcd_delete_op_t;
104 
105     /*****************************************************************************/
106     /*   Initialize decoder                                                      */
107     /*****************************************************************************/
108 
109     typedef struct
110     {
111         ivd_create_ip_t s_ivd_create_ip_t;
112         /**
113          * enable_frm_info
114          */
115         UWORD32 u4_enable_frame_info;
116     } isvcd_create_ip_t;
117 
118     typedef struct
119     {
120         ivd_create_op_t s_ivd_create_op_t;
121     } isvcd_create_op_t;
122 
123     /*****************************************************************************/
124     /*   Video Decode                                                            */
125     /*****************************************************************************/
126 
127     typedef struct
128     {
129         ivd_video_decode_ip_t s_ivd_video_decode_ip_t;
130         /**
131          * 8x8 block QP map size
132          */
133         UWORD32 u4_8x8_blk_qp_map_size;
134 
135         /**
136          * 8x8 block QP map
137          */
138         UWORD8 *pu1_8x8_blk_qp_map;
139 
140         /**
141          * 8x8 block type map size
142          */
143         UWORD32 u4_8x8_blk_type_map_size;
144 
145         /**
146          * 8x8 block type map
147          */
148         UWORD8 *pu1_8x8_blk_type_map;
149     } isvcd_video_decode_ip_t;
150 
151     /*****************************************************************************/
152     /* QP and block type maps are defined for each 8x8 MB sub-block.             */
153     /* QP can range from <0, 51> and block type can be INTER/INTRA/SKIP.         */
154     /*                                                                           */
155     /* Let’s say, a frame has a total of ‘m’ MBs (each 16x16). Since the QP      */
156     /* and block type are defined for each 8x8 block, hence each MB has          */
157     /* 4 entries giving m x 4 total entires for QP and block type map each.      */
158     /*                                                                           */
159     /* For example, for a frame of size 60x60 shown in the figure down, both     */
160     /* maps (QP and MB type) have the same layout.                               */
161     /* Each block represents an 8x8 sub-block. Both width and height are aligned */
162     /* to next largest multiple of 8, 64 in this case.                           */
163     /*                                                                           */
164     /*     0     8     16    24    32    40    48    56   64                     */
165     /*  0   ------------------------------------------------                     */
166     /*     | 0th | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th |                     */
167     /*  8   ------------------------------------------------                     */
168     /*     | 8th | 9th | 10th | -  |  -  | -   | -   |  -  |                     */
169     /* 16   ------------------------------------------------                     */
170     /*     |  -  |  -  |  -   | -  |  -  |  -  |  -  |  -  |                     */
171     /* 24   ------------------------------------------------                     */
172     /*     |  -  |  -  |  -   | -  |  -  |  -  |  -  |  -  |                     */
173     /* 32   ------------------------------------------------                     */
174     /*     |  -  |  -  |  -   | -  |  -  |  -  |  -  |  -  |                     */
175     /* 40   ------------------------------------------------                     */
176     /*     |  -  |  -  |  -   | -  |  -  |  -  |  -  |  -  |                     */
177     /* 48   ------------------------------------------------                     */
178     /*     |  -  |  -  |  -   | -  |  -  |  -  |  -  |  -  |                     */
179     /* 56   ------------------------------------------------                     */
180     /*     |  -  |  -  |  -   | -  |  -  |  -  |  -  |  -  |                     */
181     /* 64   ------------------------------------------------                     */
182     /*                                                                           */
183     /*****************************************************************************/
184 
185     typedef struct
186     {
187         ivd_video_decode_op_t s_ivd_video_decode_op_t;
188 
189         /**
190          * 8x8 block QP map size
191          */
192         UWORD32 u4_8x8_blk_qp_map_size;
193 
194         /**
195          * 8x8 block QP map
196          */
197         UWORD8 *pu1_8x8_blk_qp_map;
198 
199         /**
200          * 8x8 block type map size
201          */
202         UWORD32 u4_8x8_blk_type_map_size;
203 
204         /**
205          * 8x8 block type map
206          */
207         UWORD8 *pu1_8x8_blk_type_map;
208 
209     } isvcd_video_decode_op_t;
210 
211     /*****************************************************************************/
212     /*   Get Display Frame                                                       */
213     /*****************************************************************************/
214 
215     typedef struct
216     {
217         ivd_get_display_frame_ip_t s_ivd_get_display_frame_ip_t;
218     } isvcd_get_display_frame_ip_t;
219 
220     typedef struct
221     {
222         ivd_get_display_frame_op_t s_ivd_get_display_frame_op_t;
223     } isvcd_get_display_frame_op_t;
224 
225     /*****************************************************************************/
226     /*   Set Display Frame                                                       */
227     /*****************************************************************************/
228 
229     typedef struct
230     {
231         ivd_set_display_frame_ip_t s_ivd_set_display_frame_ip_t;
232     } isvcd_set_display_frame_ip_t;
233 
234     typedef struct
235     {
236         ivd_set_display_frame_op_t s_ivd_set_display_frame_op_t;
237     } isvcd_set_display_frame_op_t;
238 
239     /*****************************************************************************/
240     /*   Release Display Buffers                                                 */
241     /*****************************************************************************/
242 
243     typedef struct
244     {
245         ivd_rel_display_frame_ip_t s_ivd_rel_display_frame_ip_t;
246     } isvcd_rel_display_frame_ip_t;
247 
248     typedef struct
249     {
250         ivd_rel_display_frame_op_t s_ivd_rel_display_frame_op_t;
251     } isvcd_rel_display_frame_op_t;
252 
253     /*****************************************************************************/
254     /*   Set Target Layer for SVC                                                */
255     /*****************************************************************************/
256 
257     /* IVD_API_COMMAND_TYPE_T::e_cmd = ISVCD_CMD_CTL_SET_TGT_LAYER */
258 
259     typedef struct
260     {
261         /**
262          * u4_size of the structure
263          */
264         UWORD32 u4_size;
265 
266         /**
267          * e_cmd
268          */
269         IVD_API_COMMAND_TYPE_T e_cmd;
270 
271         IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
272 
273         /**
274          * set the tgt dependency id
275          */
276         UWORD8 u1_tgt_dep_id;
277 
278         /**
279          * set the tgt quality id
280          */
281         UWORD8 u1_tgt_quality_id;
282 
283         /**
284          * set the tgt temporal id
285          */
286         UWORD8 u1_tgt_temp_id;
287 
288         /**
289          * set the tgt priority id
290          */
291         UWORD8 u1_tgt_priority_id;
292 
293     } isvcd_set_target_layer_ip_t;
294 
295     typedef struct
296     {
297         /**
298          * u4_size of the structure
299          */
300         UWORD32 u4_size;
301 
302         /**
303          * error code
304          */
305         UWORD32 u4_error_code;
306 
307     } isvcd_set_target_layer_op_t;
308 
309     typedef enum
310     {
311 
312         /* Set TGT Layer for SVC */
313         ISVCD_CMD_CTL_SET_TGT_LAYER = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x305
314 
315     } ISVCD_CMD_CTL_SUB_CMDS;
316     /*****************************************************************************/
317     /*   Video control  Flush                                                    */
318     /*****************************************************************************/
319 
320     typedef struct
321     {
322         ivd_ctl_flush_ip_t s_ivd_ctl_flush_ip_t;
323     } isvcd_ctl_flush_ip_t;
324 
325     typedef struct
326     {
327         ivd_ctl_flush_op_t s_ivd_ctl_flush_op_t;
328     } isvcd_ctl_flush_op_t;
329 
330     /*****************************************************************************/
331     /*   Video control reset                                                     */
332     /*****************************************************************************/
333 
334     typedef struct
335     {
336         ivd_ctl_reset_ip_t s_ivd_ctl_reset_ip_t;
337     } isvcd_ctl_reset_ip_t;
338 
339     typedef struct
340     {
341         ivd_ctl_reset_op_t s_ivd_ctl_reset_op_t;
342     } isvcd_ctl_reset_op_t;
343 
344     /*****************************************************************************/
345     /*   Video control  Set Params                                               */
346     /*****************************************************************************/
347 
348     typedef struct
349     {
350         ivd_ctl_set_config_ip_t s_ivd_ctl_set_config_ip_t;
351     } isvcd_ctl_set_config_ip_t;
352 
353     typedef struct
354     {
355         ivd_ctl_set_config_op_t s_ivd_ctl_set_config_op_t;
356     } isvcd_ctl_set_config_op_t;
357 
358     /*****************************************************************************/
359     /*   Video control:Get Buf Info                                              */
360     /*****************************************************************************/
361 
362     typedef struct
363     {
364         ivd_ctl_getbufinfo_ip_t s_ivd_ctl_getbufinfo_ip_t;
365     } isvcd_ctl_getbufinfo_ip_t;
366 
367     typedef struct
368     {
369         ivd_ctl_getbufinfo_op_t s_ivd_ctl_getbufinfo_op_t;
370     } isvcd_ctl_getbufinfo_op_t;
371 
372     /*****************************************************************************/
373     /*   Video control:Getstatus Call                                            */
374     /*****************************************************************************/
375 
376     typedef struct
377     {
378         ivd_ctl_getstatus_ip_t s_ivd_ctl_getstatus_ip_t;
379     } isvcd_ctl_getstatus_ip_t;
380 
381     typedef struct
382     {
383         ivd_ctl_getstatus_op_t s_ivd_ctl_getstatus_op_t;
384     } isvcd_ctl_getstatus_op_t;
385 
386     /*****************************************************************************/
387     /*   Video control:Get Version Info                                          */
388     /*****************************************************************************/
389 
390     typedef struct
391     {
392         ivd_ctl_getversioninfo_ip_t s_ivd_ctl_getversioninfo_ip_t;
393     } isvcd_ctl_getversioninfo_ip_t;
394 
395     typedef struct
396     {
397         ivd_ctl_getversioninfo_op_t s_ivd_ctl_getversioninfo_op_t;
398     } isvcd_ctl_getversioninfo_op_t;
399 
400     typedef struct
401     {
402         /**
403          * u4_size
404          */
405         UWORD32 u4_size;
406 
407         /**
408          * cmd
409          */
410         IVD_API_COMMAND_TYPE_T e_cmd;
411 
412         /**
413          * sub_cmd
414          */
415         IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
416 
417         /**
418          * Pictures that are are degraded
419          * 0 : No degrade
420          * 1 : Only on non-reference frames
421          * 2 : Use interval specified by u4_nondegrade_interval
422          * 3 : All non-key frames
423          * 4 : All frames
424          */
425         WORD32 i4_degrade_pics;
426 
427         /**
428          * Interval for pictures which are completely decoded without any degradation
429          */
430         WORD32 i4_nondegrade_interval;
431 
432         /**
433          * bit position (lsb is zero): Type of degradation
434          * 1 : Disable deblocking
435          * 2 : Faster inter prediction filters
436          * 3 : Fastest inter prediction filters
437          */
438         WORD32 i4_degrade_type;
439 
440     } isvcd_ctl_degrade_ip_t;
441 
442     typedef struct
443     {
444         /**
445          * u4_size
446          */
447         UWORD32 u4_size;
448 
449         /**
450          * error_code
451          */
452         UWORD32 u4_error_code;
453     } isvcd_ctl_degrade_op_t;
454 
455     typedef struct
456     {
457         UWORD32 u4_size;
458         IVD_API_COMMAND_TYPE_T e_cmd;
459         IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
460         UWORD32 u4_disable_deblk_level;
461     } isvcd_ctl_disable_deblock_ip_t;
462 
463     typedef struct
464     {
465         UWORD32 u4_size;
466         UWORD32 u4_error_code;
467     } isvcd_ctl_disable_deblock_op_t;
468 
469     typedef struct
470     {
471         UWORD32 u4_size;
472         IVD_API_COMMAND_TYPE_T e_cmd;
473         IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
474         UWORD32 u4_num_cores;
475     } isvcd_ctl_set_num_cores_ip_t;
476 
477     typedef struct
478     {
479         UWORD32 u4_size;
480         UWORD32 u4_error_code;
481     } isvcd_ctl_set_num_cores_op_t;
482 
483     typedef struct
484     {
485         /**
486          * i4_size
487          */
488         UWORD32 u4_size;
489         /**
490          * cmd
491          */
492         IVD_API_COMMAND_TYPE_T e_cmd;
493         /**
494          * sub cmd
495          */
496         IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
497         /**
498          * Processor type
499          */
500         UWORD32 u4_arch;
501         /**
502          * SOC type
503          */
504         UWORD32 u4_soc;
505 
506         /**
507          * num_cores
508          */
509         UWORD32 u4_num_cores;
510 
511     } isvcd_ctl_set_processor_ip_t;
512 
513     typedef struct
514     {
515         /**
516          * i4_size
517          */
518         UWORD32 u4_size;
519         /**
520          * error_code
521          */
522         UWORD32 u4_error_code;
523     } isvcd_ctl_set_processor_op_t;
524 
525     typedef struct
526     {
527         UWORD32 u4_size;
528         IVD_API_COMMAND_TYPE_T e_cmd;
529         IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
530     } isvcd_ctl_get_frame_dimensions_ip_t;
531 
532     typedef struct
533     {
534         UWORD32 u4_size;
535         UWORD32 u4_error_code;
536         UWORD32 u4_x_offset[3];
537         UWORD32 u4_y_offset[3];
538         UWORD32 u4_disp_wd[3];
539         UWORD32 u4_disp_ht[3];
540         UWORD32 u4_buffer_wd[3];
541         UWORD32 u4_buffer_ht[3];
542     } isvcd_ctl_get_frame_dimensions_op_t;
543 
544     typedef struct
545     {
546         UWORD32 u4_size;
547         IVD_API_COMMAND_TYPE_T e_cmd;
548         IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
549     } isvcd_ctl_get_vui_params_ip_t;
550 
551     typedef struct
552     {
553         UWORD32 u4_size;
554         UWORD32 u4_error_code;
555         UWORD8 u1_aspect_ratio_idc;
556         UWORD16 u2_sar_width;
557         UWORD16 u2_sar_height;
558         UWORD8 u1_overscan_appropriate_flag;
559         UWORD8 u1_video_format;
560         UWORD8 u1_video_full_range_flag;
561         UWORD8 u1_colour_primaries;
562         UWORD8 u1_tfr_chars;
563         UWORD8 u1_matrix_coeffs;
564         UWORD8 u1_cr_top_field;
565         UWORD8 u1_cr_bottom_field;
566         UWORD32 u4_num_units_in_tick;
567         UWORD32 u4_time_scale;
568         UWORD8 u1_fixed_frame_rate_flag;
569         UWORD8 u1_nal_hrd_params_present;
570         UWORD8 u1_vcl_hrd_params_present;
571         UWORD8 u1_low_delay_hrd_flag;
572         UWORD8 u1_pic_struct_present_flag;
573         UWORD8 u1_bitstream_restriction_flag;
574         UWORD8 u1_mv_over_pic_boundaries_flag;
575         UWORD32 u4_max_bytes_per_pic_denom;
576         UWORD32 u4_max_bits_per_mb_denom;
577         UWORD32 u4_log2_max_mv_length_horz;
578         UWORD32 u4_log2_max_mv_length_vert;
579         UWORD32 u4_num_reorder_frames;
580         UWORD32 u4_max_dec_frame_buffering;
581     } isvcd_ctl_get_vui_params_op_t;
582 
583     typedef struct
584     {
585         /**
586          * u4_size
587          */
588         UWORD32 u4_size;
589 
590         /**
591          * cmd
592          */
593         IVD_API_COMMAND_TYPE_T e_cmd;
594 
595         /**
596          * sub_cmd
597          */
598         IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
599     } isvcd_ctl_get_sei_mdcv_params_ip_t;
600 
601     typedef struct
602     {
603         /**
604          * u4_size
605          */
606         UWORD32 u4_size;
607 
608         /**
609          * error_code
610          */
611         UWORD32 u4_error_code;
612 
613         /**
614          * Array to store the display_primaries_x values
615          */
616         UWORD16 au2_display_primaries_x[NUM_SEI_MDCV_PRIMARIES];
617 
618         /**
619          * Array to store the display_primaries_y values
620          */
621         UWORD16 au2_display_primaries_y[NUM_SEI_MDCV_PRIMARIES];
622 
623         /**
624          * Variable to store the white point x value
625          */
626         UWORD16 u2_white_point_x;
627 
628         /**
629          * Variable to store the white point y value
630          */
631         UWORD16 u2_white_point_y;
632 
633         /**
634          * Variable to store the max display mastering luminance value
635          */
636         UWORD32 u4_max_display_mastering_luminance;
637 
638         /**
639          * Variable to store the min display mastering luminance value
640          */
641         UWORD32 u4_min_display_mastering_luminance;
642     } isvcd_ctl_get_sei_mdcv_params_op_t;
643 
644     typedef struct
645     {
646         /**
647          * u4_size
648          */
649         UWORD32 u4_size;
650 
651         /**
652          * cmd
653          */
654         IVD_API_COMMAND_TYPE_T e_cmd;
655 
656         /**
657          * sub_cmd
658          */
659         IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
660     } isvcd_ctl_get_sei_cll_params_ip_t;
661 
662     typedef struct
663     {
664         /**
665          * u4_size
666          */
667         UWORD32 u4_size;
668 
669         /**
670          * error_code
671          */
672         UWORD32 u4_error_code;
673 
674         /**
675          * The maximum pixel intensity of all samples
676          */
677         UWORD16 u2_max_content_light_level;
678 
679         /**
680          * The average pixel intensity of all samples
681          */
682         UWORD16 u2_max_pic_average_light_level;
683     } isvcd_ctl_get_sei_cll_params_op_t;
684 
685     typedef struct
686     {
687         /**
688          * u4_size
689          */
690         UWORD32 u4_size;
691 
692         /**
693          * cmd
694          */
695         IVD_API_COMMAND_TYPE_T e_cmd;
696 
697         /**
698          * sub_cmd
699          */
700         IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
701     } isvcd_ctl_get_sei_ave_params_ip_t;
702 
703     typedef struct
704     {
705         /**
706          * u4_size
707          */
708         UWORD32 u4_size;
709 
710         /**
711          * error_code
712          */
713         UWORD32 u4_error_code;
714 
715         /**
716          * specifies the environmental illluminance of the ambient viewing environment
717          */
718         UWORD32 u4_ambient_illuminance;
719 
720         /*
721          * specify the normalized x chromaticity coordinates of the
722          * environmental ambient light in the nominal viewing environment
723          */
724         UWORD16 u2_ambient_light_x;
725 
726         /*
727          * specify the normalized y chromaticity coordinates of the
728          * environmental ambient light in the nominal viewing environment
729          */
730         UWORD16 u2_ambient_light_y;
731     } isvcd_ctl_get_sei_ave_params_op_t;
732 
733     typedef struct
734     {
735         /**
736          * u4_size
737          */
738         UWORD32 u4_size;
739 
740         /**
741          * cmd
742          */
743         IVD_API_COMMAND_TYPE_T e_cmd;
744 
745         /**
746          * sub_cmd
747          */
748         IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
749     } isvcd_ctl_get_sei_ccv_params_ip_t;
750 
751     typedef struct
752     {
753         /**
754          * u4_size
755          */
756         UWORD32 u4_size;
757 
758         /**
759          * error_code
760          */
761         UWORD32 u4_error_code;
762 
763         /*
764          * Flag used to control persistence of CCV SEI messages
765          */
766         UWORD8 u1_ccv_cancel_flag;
767 
768         /*
769          * specifies the persistence of the CCV SEI message for the current layer
770          */
771         UWORD8 u1_ccv_persistence_flag;
772 
773         /*
774          * specifies the presence of syntax elements ccv_primaries_x and
775          * ccv_primaries_y
776          */
777         UWORD8 u1_ccv_primaries_present_flag;
778 
779         /*
780          * specifies that the syntax element ccv_min_luminance_value is present
781          */
782         UWORD8 u1_ccv_min_luminance_value_present_flag;
783 
784         /*
785          * specifies that the syntax element ccv_max_luminance_value is present
786          */
787         UWORD8 u1_ccv_max_luminance_value_present_flag;
788 
789         /*
790          * specifies that the syntax element ccv_avg_luminance_value is present
791          */
792         UWORD8 u1_ccv_avg_luminance_value_present_flag;
793 
794         /*
795          * shall be equal to 0 in bitstreams conforming to this version. Other values
796          * for reserved_zero_2bits are reserved for future use
797          */
798         UWORD8 u1_ccv_reserved_zero_2bits;
799 
800         /*
801          * specify the normalized x chromaticity coordinates of the colour
802          * primary component c of the nominal content colour volume
803          */
804         WORD32 ai4_ccv_primaries_x[NUM_SEI_CCV_PRIMARIES];
805 
806         /*
807          * specify the normalized y chromaticity coordinates of the colour
808          * primary component c of the nominal content colour volume
809          */
810         WORD32 ai4_ccv_primaries_y[NUM_SEI_CCV_PRIMARIES];
811 
812         /*
813          * specifies the normalized minimum luminance value
814          */
815         UWORD32 u4_ccv_min_luminance_value;
816 
817         /*
818          * specifies the normalized maximum luminance value
819          */
820         UWORD32 u4_ccv_max_luminance_value;
821 
822         /*
823          * specifies the normalized average luminance value
824          */
825         UWORD32 u4_ccv_avg_luminance_value;
826     } isvcd_ctl_get_sei_ccv_params_op_t;
827 
828 #ifdef __cplusplus
829 } /* closing brace for extern "C" */
830 #endif
831 #endif /* _ISVCD_H_ */
832