FFmpeg
cbs_apv.h
Go to the documentation of this file.
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 #ifndef AVCODEC_CBS_APV_H
20 #define AVCODEC_CBS_APV_H
21 
22 #include <stddef.h>
23 #include <stdint.h>
24 
25 #include "libavutil/buffer.h"
26 #include "apv.h"
27 
28 // Arbitrary limits to avoid large structures.
29 #define CBS_APV_MAX_AU_FRAMES 8
30 #define CBS_APV_MAX_METADATA_PAYLOADS 8
31 
32 
33 typedef struct APVRawPBUHeader {
34  uint8_t pbu_type;
35  uint16_t group_id;
38 
39 typedef struct APVRawFiller {
40  size_t filler_size;
41 } APVRawFiller;
42 
43 typedef struct APVRawFrameInfo {
44  uint8_t profile_idc;
45  uint8_t level_idc;
46  uint8_t band_idc;
48  uint32_t frame_width;
49  uint32_t frame_height;
55 
56 typedef struct APVRawQuantizationMatrix {
59 
60 typedef struct APVRawTileInfo {
66 
67 typedef struct APVRawFrameHeader {
70 
72  uint8_t color_primaries;
75  uint8_t full_range_flag;
76 
77  uint8_t use_q_matrix;
79 
81 
84 
85 typedef struct APVRawTileHeader {
86  uint16_t tile_header_size;
87  uint16_t tile_index;
92 
93 typedef struct APVRawTile {
95 
97  uint8_t *tile_dummy_byte;
99 } APVRawTile;
100 
101 typedef struct APVRawFrame {
107 
109 } APVRawFrame;
110 
111 typedef struct APVRawAUInfo {
112  uint16_t num_frames;
113 
118 
120 
122 } APVRawAUInfo;
123 
124 typedef struct APVRawMetadataITUTT35 {
127 
128  uint8_t *data;
130  size_t data_size;
132 
133 typedef struct APVRawMetadataMDCV {
141 
142 typedef struct APVRawMetadataCLL {
143  uint16_t max_cll;
144  uint16_t max_fall;
146 
147 typedef struct APVRawMetadataFiller {
148  uint32_t payload_size;
150 
152  uint8_t uuid[16];
153 
154  uint8_t *data;
156  size_t data_size;
158 
159 typedef struct APVRawMetadataUndefined {
160  uint8_t *data;
162  size_t data_size;
164 
165 typedef struct APVRawMetadataPayload {
166  uint32_t payload_type;
167  uint32_t payload_size;
168  union {
175  };
177 
178 typedef struct APVRawMetadata {
180 
181  uint32_t metadata_size;
182  uint32_t metadata_count;
183 
185 
188 
189 
190 typedef struct APVDerivedTileInfo {
191  uint8_t tile_cols;
192  uint8_t tile_rows;
193  uint16_t num_tiles;
194  // The spec uses an extra element on the end of these arrays
195  // not corresponding to any tile.
199 
200 typedef struct CodedBitstreamAPVContext {
202  int num_comp;
203 
206 
207 #endif /* AVCODEC_CBS_APV_H */
APVRawFrameInfo::capture_time_distance
uint8_t capture_time_distance
Definition: cbs_apv.h:52
APVRawMetadata::payloads
APVRawMetadataPayload payloads[CBS_APV_MAX_METADATA_PAYLOADS]
Definition: cbs_apv.h:184
APVRawMetadataCLL
Definition: cbs_apv.h:142
APVDerivedTileInfo::tile_cols
uint8_t tile_cols
Definition: cbs_apv.h:191
APVRawMetadataUserDefined
Definition: cbs_apv.h:151
APVRawMetadataUndefined::data_size
size_t data_size
Definition: cbs_apv.h:162
APVRawMetadataUserDefined::data_size
size_t data_size
Definition: cbs_apv.h:156
APVRawAUInfo::frame_info
APVRawFrameInfo frame_info[CBS_APV_MAX_AU_FRAMES]
Definition: cbs_apv.h:117
APVRawFrameHeader::reserved_zero_8bits_2
uint8_t reserved_zero_8bits_2
Definition: cbs_apv.h:82
APVRawFrameInfo::level_idc
uint8_t level_idc
Definition: cbs_apv.h:45
APVRawTile::tile_data
uint8_t * tile_data[APV_MAX_NUM_COMP]
Definition: cbs_apv.h:96
APVRawQuantizationMatrix
Definition: cbs_apv.h:56
APVRawFrame::tile_data_ref
AVBufferRef * tile_data_ref
Definition: cbs_apv.h:108
APVRawFrameHeader::color_primaries
uint8_t color_primaries
Definition: cbs_apv.h:72
APVRawAUInfo
Definition: cbs_apv.h:111
APVRawFrameInfo::profile_idc
uint8_t profile_idc
Definition: cbs_apv.h:44
APVRawFrame::tile
APVRawTile tile[APV_MAX_TILE_COUNT]
Definition: cbs_apv.h:105
APVRawFrameInfo::frame_width
uint32_t frame_width
Definition: cbs_apv.h:48
APVRawMetadataUndefined
Definition: cbs_apv.h:159
APVRawMetadata::metadata_size
uint32_t metadata_size
Definition: cbs_apv.h:181
APVRawAUInfo::num_frames
uint16_t num_frames
Definition: cbs_apv.h:112
APVRawTileInfo::tile_width_in_mbs
uint32_t tile_width_in_mbs
Definition: cbs_apv.h:61
APVRawTileInfo::tile_size_present_in_fh_flag
uint8_t tile_size_present_in_fh_flag
Definition: cbs_apv.h:63
APVRawMetadataMDCV::max_mastering_luminance
uint32_t max_mastering_luminance
Definition: cbs_apv.h:138
CodedBitstreamAPVContext::num_comp
int num_comp
Definition: cbs_apv.h:202
APVRawMetadataUndefined::data
uint8_t * data
Definition: cbs_apv.h:160
APVRawMetadataUndefined::data_ref
AVBufferRef * data_ref
Definition: cbs_apv.h:161
APVRawFrame::pbu_header
APVRawPBUHeader pbu_header
Definition: cbs_apv.h:102
APVRawMetadataMDCV::primary_chromaticity_y
uint16_t primary_chromaticity_y[3]
Definition: cbs_apv.h:135
APVRawFrameHeader::frame_info
APVRawFrameInfo frame_info
Definition: cbs_apv.h:68
APVRawFrameHeader::transfer_characteristics
uint8_t transfer_characteristics
Definition: cbs_apv.h:73
APVRawFrameInfo::band_idc
uint8_t band_idc
Definition: cbs_apv.h:46
APVRawPBUHeader::group_id
uint16_t group_id
Definition: cbs_apv.h:35
APVRawMetadataPayload::cll
APVRawMetadataCLL cll
Definition: cbs_apv.h:171
APVRawMetadataFiller::payload_size
uint32_t payload_size
Definition: cbs_apv.h:148
APVRawFrame::frame_header
APVRawFrameHeader frame_header
Definition: cbs_apv.h:103
APVRawFrameHeader::full_range_flag
uint8_t full_range_flag
Definition: cbs_apv.h:75
APVRawMetadataITUTT35::itu_t_t35_country_code_extension
uint8_t itu_t_t35_country_code_extension
Definition: cbs_apv.h:126
APVRawFrameInfo
Definition: cbs_apv.h:43
APVRawFrameHeader::use_q_matrix
uint8_t use_q_matrix
Definition: cbs_apv.h:77
APVRawTileInfo::tile_height_in_mbs
uint32_t tile_height_in_mbs
Definition: cbs_apv.h:62
APVRawPBUHeader
Definition: cbs_apv.h:33
APVRawTileHeader
Definition: cbs_apv.h:85
APVRawMetadataMDCV::white_point_chromaticity_y
uint16_t white_point_chromaticity_y
Definition: cbs_apv.h:137
APVRawFrameHeader::matrix_coefficients
uint8_t matrix_coefficients
Definition: cbs_apv.h:74
APVRawFrameHeader::reserved_zero_8bits
uint8_t reserved_zero_8bits
Definition: cbs_apv.h:69
APVRawMetadataMDCV::white_point_chromaticity_x
uint16_t white_point_chromaticity_x
Definition: cbs_apv.h:136
APVRawPBUHeader::reserved_zero_8bits
uint8_t reserved_zero_8bits
Definition: cbs_apv.h:36
APVRawMetadataCLL::max_cll
uint16_t max_cll
Definition: cbs_apv.h:143
APVRawTile::tile_dummy_byte
uint8_t * tile_dummy_byte
Definition: cbs_apv.h:97
APVRawMetadata
Definition: cbs_apv.h:178
APVRawMetadataITUTT35::data
uint8_t * data
Definition: cbs_apv.h:128
APV_MAX_TILE_COLS
@ APV_MAX_TILE_COLS
Definition: apv.h:75
APVRawFrameInfo::reserved_zero_8bits
uint8_t reserved_zero_8bits
Definition: cbs_apv.h:53
APVRawMetadataCLL::max_fall
uint16_t max_fall
Definition: cbs_apv.h:144
CodedBitstreamAPVContext::bit_depth
int bit_depth
Definition: cbs_apv.h:201
APVRawFrame::filler
APVRawFiller filler
Definition: cbs_apv.h:106
APVRawQuantizationMatrix::q_matrix
uint8_t q_matrix[APV_MAX_NUM_COMP][APV_TR_SIZE][APV_TR_SIZE]
Definition: cbs_apv.h:57
APVRawAUInfo::group_id
uint8_t group_id[CBS_APV_MAX_AU_FRAMES]
Definition: cbs_apv.h:115
APVRawTileHeader::tile_data_size
uint32_t tile_data_size[APV_MAX_NUM_COMP]
Definition: cbs_apv.h:88
APVRawTileInfo
Definition: cbs_apv.h:60
APVRawFrame
Definition: cbs_apv.h:101
APVRawTile::tile_header
APVRawTileHeader tile_header
Definition: cbs_apv.h:94
APVRawMetadataPayload
Definition: cbs_apv.h:165
APVRawFrameInfo::frame_height
uint32_t frame_height
Definition: cbs_apv.h:49
APVRawAUInfo::filler
APVRawFiller filler
Definition: cbs_apv.h:121
APVRawAUInfo::reserved_zero_8bits
uint8_t reserved_zero_8bits[CBS_APV_MAX_AU_FRAMES]
Definition: cbs_apv.h:116
APVRawTileHeader::reserved_zero_8bits
uint8_t reserved_zero_8bits
Definition: cbs_apv.h:90
APVRawFrameHeader
Definition: cbs_apv.h:67
APVRawMetadata::filler
APVRawFiller filler
Definition: cbs_apv.h:186
APVRawTileHeader::tile_index
uint16_t tile_index
Definition: cbs_apv.h:87
APVRawMetadataPayload::filler
APVRawMetadataFiller filler
Definition: cbs_apv.h:172
apv.h
APVRawMetadataPayload::user_defined
APVRawMetadataUserDefined user_defined
Definition: cbs_apv.h:173
APVRawMetadataPayload::payload_type
uint32_t payload_type
Definition: cbs_apv.h:166
APVRawFrameInfo::chroma_format_idc
uint8_t chroma_format_idc
Definition: cbs_apv.h:50
APVRawFrameHeader::quantization_matrix
APVRawQuantizationMatrix quantization_matrix
Definition: cbs_apv.h:78
buffer.h
CodedBitstreamAPVContext
Definition: cbs_apv.h:200
APVRawFrameInfo::reserved_zero_5bits
uint8_t reserved_zero_5bits
Definition: cbs_apv.h:47
APVRawMetadataUserDefined::data_ref
AVBufferRef * data_ref
Definition: cbs_apv.h:155
APVRawMetadataPayload::itu_t_t35
APVRawMetadataITUTT35 itu_t_t35
Definition: cbs_apv.h:169
APVRawAUInfo::reserved_zero_8bits_2
uint8_t reserved_zero_8bits_2
Definition: cbs_apv.h:119
APVRawFrameHeader::tile_info
APVRawTileInfo tile_info
Definition: cbs_apv.h:80
APVRawMetadataPayload::payload_size
uint32_t payload_size
Definition: cbs_apv.h:167
APVRawTileHeader::tile_header_size
uint16_t tile_header_size
Definition: cbs_apv.h:86
APV_MAX_TILE_COUNT
@ APV_MAX_TILE_COUNT
Definition: apv.h:77
APVDerivedTileInfo::row_starts
uint16_t row_starts[APV_MAX_TILE_ROWS+1]
Definition: cbs_apv.h:197
CBS_APV_MAX_AU_FRAMES
#define CBS_APV_MAX_AU_FRAMES
Definition: cbs_apv.h:29
APVRawMetadataUserDefined::uuid
uint8_t uuid[16]
Definition: cbs_apv.h:152
APVRawPBUHeader::pbu_type
uint8_t pbu_type
Definition: cbs_apv.h:34
APVRawMetadata::pbu_header
APVRawPBUHeader pbu_header
Definition: cbs_apv.h:179
APVRawMetadataFiller
Definition: cbs_apv.h:147
APVRawMetadataPayload::mdcv
APVRawMetadataMDCV mdcv
Definition: cbs_apv.h:170
APVRawMetadataMDCV::primary_chromaticity_x
uint16_t primary_chromaticity_x[3]
Definition: cbs_apv.h:134
APVDerivedTileInfo
Definition: cbs_apv.h:190
CBS_APV_MAX_METADATA_PAYLOADS
#define CBS_APV_MAX_METADATA_PAYLOADS
Definition: cbs_apv.h:30
CodedBitstreamAPVContext::tile_info
APVDerivedTileInfo tile_info
Definition: cbs_apv.h:204
APVRawTileHeader::tile_qp
uint8_t tile_qp[APV_MAX_NUM_COMP]
Definition: cbs_apv.h:89
APVDerivedTileInfo::tile_rows
uint8_t tile_rows
Definition: cbs_apv.h:192
APVRawFrameHeader::color_description_present_flag
uint8_t color_description_present_flag
Definition: cbs_apv.h:71
APVRawAUInfo::pbu_type
uint8_t pbu_type[CBS_APV_MAX_AU_FRAMES]
Definition: cbs_apv.h:114
APVRawMetadataUserDefined::data
uint8_t * data
Definition: cbs_apv.h:154
APV_MAX_NUM_COMP
@ APV_MAX_NUM_COMP
Definition: apv.h:39
APVDerivedTileInfo::col_starts
uint16_t col_starts[APV_MAX_TILE_COLS+1]
Definition: cbs_apv.h:196
APVRawMetadataMDCV
Definition: cbs_apv.h:133
APVRawMetadataITUTT35
Definition: cbs_apv.h:124
APV_MAX_TILE_ROWS
@ APV_MAX_TILE_ROWS
Definition: apv.h:76
APV_TR_SIZE
@ APV_TR_SIZE
Definition: apv.h:42
AVBufferRef
A reference to a data buffer.
Definition: buffer.h:82
APVRawFrame::tile_size
uint32_t tile_size[APV_MAX_TILE_COUNT]
Definition: cbs_apv.h:104
APVRawTile::tile_dummy_byte_size
uint32_t tile_dummy_byte_size
Definition: cbs_apv.h:98
APVRawMetadataITUTT35::data_ref
AVBufferRef * data_ref
Definition: cbs_apv.h:129
APVRawMetadata::metadata_count
uint32_t metadata_count
Definition: cbs_apv.h:182
APVRawFiller::filler_size
size_t filler_size
Definition: cbs_apv.h:40
APVRawFrameInfo::bit_depth_minus8
uint8_t bit_depth_minus8
Definition: cbs_apv.h:51
APVRawMetadataMDCV::min_mastering_luminance
uint32_t min_mastering_luminance
Definition: cbs_apv.h:139
APVDerivedTileInfo::num_tiles
uint16_t num_tiles
Definition: cbs_apv.h:193
APVRawMetadataITUTT35::itu_t_t35_country_code
uint8_t itu_t_t35_country_code
Definition: cbs_apv.h:125
APVRawTile
Definition: cbs_apv.h:93
APVRawFiller
Definition: cbs_apv.h:39
APVRawMetadataPayload::undefined
APVRawMetadataUndefined undefined
Definition: cbs_apv.h:174
APVRawMetadataITUTT35::data_size
size_t data_size
Definition: cbs_apv.h:130
APVRawTileInfo::tile_size_in_fh
uint32_t tile_size_in_fh[APV_MAX_TILE_COUNT]
Definition: cbs_apv.h:64