avformat/av1: add color config values to AV1SequenceParameters
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
parent
db6ed2b828
commit
0c7cfd2c19
@ -86,6 +86,11 @@ typedef struct AV1SequenceParameters {
|
||||
uint8_t chroma_subsampling_x;
|
||||
uint8_t chroma_subsampling_y;
|
||||
uint8_t chroma_sample_position;
|
||||
uint8_t color_description_present_flag;
|
||||
uint8_t color_primaries;
|
||||
uint8_t transfer_characteristics;
|
||||
uint8_t matrix_coefficients;
|
||||
uint8_t color_range;
|
||||
} AV1SequenceParameters;
|
||||
|
||||
static inline void uvlc(GetBitContext *gb)
|
||||
@ -106,8 +111,6 @@ static inline void uvlc(GetBitContext *gb)
|
||||
|
||||
static int parse_color_config(AV1SequenceParameters *seq_params, GetBitContext *gb)
|
||||
{
|
||||
int color_primaries, transfer_characteristics, matrix_coefficients;
|
||||
|
||||
seq_params->high_bitdepth = get_bits1(gb);
|
||||
if (seq_params->seq_profile == FF_PROFILE_AV1_PROFESSIONAL && seq_params->high_bitdepth)
|
||||
seq_params->twelve_bit = get_bits1(gb);
|
||||
@ -117,29 +120,30 @@ static int parse_color_config(AV1SequenceParameters *seq_params, GetBitContext *
|
||||
else
|
||||
seq_params->monochrome = get_bits1(gb);
|
||||
|
||||
if (get_bits1(gb)) { // color_description_present_flag
|
||||
color_primaries = get_bits(gb, 8);
|
||||
transfer_characteristics = get_bits(gb, 8);
|
||||
matrix_coefficients = get_bits(gb, 8);
|
||||
seq_params->color_description_present_flag = get_bits1(gb);
|
||||
if (seq_params->color_description_present_flag) {
|
||||
seq_params->color_primaries = get_bits(gb, 8);
|
||||
seq_params->transfer_characteristics = get_bits(gb, 8);
|
||||
seq_params->matrix_coefficients = get_bits(gb, 8);
|
||||
} else {
|
||||
color_primaries = AVCOL_PRI_UNSPECIFIED;
|
||||
transfer_characteristics = AVCOL_TRC_UNSPECIFIED;
|
||||
matrix_coefficients = AVCOL_SPC_UNSPECIFIED;
|
||||
seq_params->color_primaries = AVCOL_PRI_UNSPECIFIED;
|
||||
seq_params->transfer_characteristics = AVCOL_TRC_UNSPECIFIED;
|
||||
seq_params->matrix_coefficients = AVCOL_SPC_UNSPECIFIED;
|
||||
}
|
||||
|
||||
if (seq_params->monochrome) {
|
||||
skip_bits1(gb); // color_range
|
||||
seq_params->color_range = get_bits1(gb);
|
||||
seq_params->chroma_subsampling_x = 1;
|
||||
seq_params->chroma_subsampling_y = 1;
|
||||
seq_params->chroma_sample_position = 0;
|
||||
return 0;
|
||||
} else if (color_primaries == AVCOL_PRI_BT709 &&
|
||||
transfer_characteristics == AVCOL_TRC_IEC61966_2_1 &&
|
||||
matrix_coefficients == AVCOL_SPC_RGB) {
|
||||
} else if (seq_params->color_primaries == AVCOL_PRI_BT709 &&
|
||||
seq_params->transfer_characteristics == AVCOL_TRC_IEC61966_2_1 &&
|
||||
seq_params->matrix_coefficients == AVCOL_SPC_RGB) {
|
||||
seq_params->chroma_subsampling_x = 0;
|
||||
seq_params->chroma_subsampling_y = 0;
|
||||
} else {
|
||||
skip_bits1(gb); // color_range
|
||||
seq_params->color_range = get_bits1(gb);
|
||||
|
||||
if (seq_params->seq_profile == FF_PROFILE_AV1_MAIN) {
|
||||
seq_params->chroma_subsampling_x = 1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user