diff mbox series

[FFmpeg-devel] cbs_av1: Fix test for presence of buffer_removal_time element

Message ID 0f2441f8-e2d7-1a1b-0e56-4b5f0cd53556@jkqxz.net
State Accepted
Headers show
Series [FFmpeg-devel] cbs_av1: Fix test for presence of buffer_removal_time element | expand

Checks

Context Check Description
andriy/default pending
andriy/configure warning Failed to apply patch

Commit Message

Mark Thompson Aug. 23, 2020, 4:06 p.m. UTC
The OBU must be in both the spatial and temporal layers for the
operating point, not just one of them.
---
  libavcodec/cbs_av1_syntax_template.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

Comments

James Almer Aug. 23, 2020, 5:31 p.m. UTC | #1
On 8/23/2020 1:06 PM, Mark Thompson wrote:
> The OBU must be in both the spatial and temporal layers for the
> operating point, not just one of them.
> ---
>  libavcodec/cbs_av1_syntax_template.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/libavcodec/cbs_av1_syntax_template.c
> b/libavcodec/cbs_av1_syntax_template.c
> index 2c976a9574..a281aba8ac 100644
> --- a/libavcodec/cbs_av1_syntax_template.c
> +++ b/libavcodec/cbs_av1_syntax_template.c
> @@ -1390,7 +1390,7 @@ static int
> FUNC(uncompressed_header)(CodedBitstreamContext *ctx, RWContext *rw,
>                      int in_temporal_layer = (op_pt_idc >> 
> priv->temporal_id    ) & 1;
>                      int in_spatial_layer  = (op_pt_idc >>
> (priv->spatial_id + 8)) & 1;
>                      if (seq->operating_point_idc[i] == 0 ||
> -                        in_temporal_layer || in_spatial_layer) {
> +                        (in_temporal_layer && in_spatial_layer)) {
>                         
> fbs(seq->decoder_model_info.buffer_removal_time_length_minus_1 + 1,
>                              buffer_removal_time[i], 1, i);
>                      }

LGTM, can confirm this fixes parsing https://0x0.st/zF2s.ivf
Mark Thompson Aug. 23, 2020, 5:45 p.m. UTC | #2
On 23/08/2020 18:31, James Almer wrote:
> On 8/23/2020 1:06 PM, Mark Thompson wrote:
>> The OBU must be in both the spatial and temporal layers for the
>> operating point, not just one of them.
>> ---
>>   libavcodec/cbs_av1_syntax_template.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/libavcodec/cbs_av1_syntax_template.c
>> b/libavcodec/cbs_av1_syntax_template.c
>> index 2c976a9574..a281aba8ac 100644
>> --- a/libavcodec/cbs_av1_syntax_template.c
>> +++ b/libavcodec/cbs_av1_syntax_template.c
>> @@ -1390,7 +1390,7 @@ static int
>> FUNC(uncompressed_header)(CodedBitstreamContext *ctx, RWContext *rw,
>>                       int in_temporal_layer = (op_pt_idc >>
>> priv->temporal_id    ) & 1;
>>                       int in_spatial_layer  = (op_pt_idc >>
>> (priv->spatial_id + 8)) & 1;
>>                       if (seq->operating_point_idc[i] == 0 ||
>> -                        in_temporal_layer || in_spatial_layer) {
>> +                        (in_temporal_layer && in_spatial_layer)) {
>>                          
>> fbs(seq->decoder_model_info.buffer_removal_time_length_minus_1 + 1,
>>                               buffer_removal_time[i], 1, i);
>>                       }
> 
> LGTM, can confirm this fixes parsing https://0x0.st/zF2s.ivf

Thank you for the sample!  Applied.

- Mark
diff mbox series

Patch

diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c
index 2c976a9574..a281aba8ac 100644
--- a/libavcodec/cbs_av1_syntax_template.c
+++ b/libavcodec/cbs_av1_syntax_template.c
@@ -1390,7 +1390,7 @@  static int FUNC(uncompressed_header)(CodedBitstreamContext *ctx, RWContext *rw,
                      int in_temporal_layer = (op_pt_idc >>  priv->temporal_id    ) & 1;
                      int in_spatial_layer  = (op_pt_idc >> (priv->spatial_id + 8)) & 1;
                      if (seq->operating_point_idc[i] == 0 ||
-                        in_temporal_layer || in_spatial_layer) {
+                        (in_temporal_layer && in_spatial_layer)) {
                          fbs(seq->decoder_model_info.buffer_removal_time_length_minus_1 + 1,
                              buffer_removal_time[i], 1, i);
                      }