diff mbox

[FFmpeg-devel,1/7] avformat/av1: add color config values to AV1SequenceParameters

Message ID 20190730201951.2033-1-jamrial@gmail.com
State Accepted
Commit 0c7cfd2c1919e5caaa138559d8f05e79447181aa
Headers show

Commit Message

James Almer July 30, 2019, 8:19 p.m. UTC
Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavformat/av1.c | 32 ++++++++++++++++++--------------
 1 file changed, 18 insertions(+), 14 deletions(-)

Comments

Paul B Mahol Aug. 5, 2019, 3:06 p.m. UTC | #1
lgtm

On Tue, Jul 30, 2019 at 10:22 PM James Almer <jamrial@gmail.com> wrote:

> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
>  libavformat/av1.c | 32 ++++++++++++++++++--------------
>  1 file 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;
> --
> 2.22.0
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
diff mbox

Patch

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;