diff options
author | James Almer <jamrial@gmail.com> | 2019-07-30 11:43:02 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2019-08-05 15:02:18 -0300 |
commit | f4b254e299213b3f96d5926a30292bc0d4fab500 (patch) | |
tree | 31c5dd6f3e425fd5fd6fd94809848e8cbb0a17e6 | |
parent | 34a40aeb73fef1f08eaf603d9770969795e85de8 (diff) | |
download | ffmpeg-f4b254e299213b3f96d5926a30292bc0d4fab500.tar.gz |
avformat/av1: add color config values to AV1SequenceParameters
Signed-off-by: James Almer <jamrial@gmail.com>
(cherry picked from commit 0c7cfd2c1919e5caaa138559d8f05e79447181aa)
-rw-r--r-- | libavformat/av1.c | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/libavformat/av1.c b/libavformat/av1.c index 5fde8df97e..bd23891d26 100644 --- a/libavformat/av1.c +++ b/libavformat/av1.c @@ -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; |