[FFmpeg-cvslog] avcodec/cbs_av1: always store temporal_id and spatial_id in CodedBitstreamAV1Context

James Almer git at videolan.org
Sun Aug 23 20:34:40 EEST 2020


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Sun Aug 23 14:30:23 2020 -0300| [994d2567f13c11422aeb6506b6afca42a900d620] | committer: James Almer

avcodec/cbs_av1: always store temporal_id and spatial_id in CodedBitstreamAV1Context

Also infer them when not coded in the bitstream.

Reviewed-by: jkqxz
Signed-off-by: James Almer <jamrial at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=994d2567f13c11422aeb6506b6afca42a900d620
---

 libavcodec/cbs_av1.c                 | 6 ------
 libavcodec/cbs_av1_syntax_template.c | 7 +++++++
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/libavcodec/cbs_av1.c b/libavcodec/cbs_av1.c
index 75e9cb78df..72ad18151e 100644
--- a/libavcodec/cbs_av1.c
+++ b/libavcodec/cbs_av1.c
@@ -920,9 +920,6 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx,
     start_pos = get_bits_count(&gbc);
 
     if (obu->header.obu_extension_flag) {
-        priv->temporal_id = obu->header.temporal_id;
-        priv->spatial_id  = obu->header.spatial_id;
-
         if (obu->header.obu_type != AV1_OBU_SEQUENCE_HEADER &&
             obu->header.obu_type != AV1_OBU_TEMPORAL_DELIMITER &&
             priv->operating_point_idc) {
@@ -934,9 +931,6 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx,
                 // Decoding will drop this OBU at this operating point.
             }
         }
-    } else {
-        priv->temporal_id = 0;
-        priv->spatial_id  = 0;
     }
 
     switch (obu->header.obu_type) {
diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c
index a315e8868a..240fa188e4 100644
--- a/libavcodec/cbs_av1_syntax_template.c
+++ b/libavcodec/cbs_av1_syntax_template.c
@@ -19,6 +19,7 @@
 static int FUNC(obu_header)(CodedBitstreamContext *ctx, RWContext *rw,
                             AV1RawOBUHeader *current)
 {
+    CodedBitstreamAV1Context *priv = ctx->priv_data;
     int err;
 
     HEADER("OBU header");
@@ -35,8 +36,14 @@ static int FUNC(obu_header)(CodedBitstreamContext *ctx, RWContext *rw,
         fb(3, temporal_id);
         fb(2, spatial_id);
         fc(3, extension_header_reserved_3bits, 0, 0);
+    } else {
+        infer(temporal_id, 0);
+        infer(spatial_id, 0);
     }
 
+    priv->temporal_id = current->temporal_id;
+    priv->spatial_id  = current->spatial_id;
+
     return 0;
 }
 



More information about the ffmpeg-cvslog mailing list