From 994d2567f13c11422aeb6506b6afca42a900d620 Mon Sep 17 00:00:00 2001 From: James Almer Date: Sun, 23 Aug 2020 14:30:23 -0300 Subject: 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 --- 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; } -- cgit v1.2.3