aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Almer2020-08-23 14:30:23 -0300
committerJames Almer2020-08-23 14:34:32 -0300
commit994d2567f13c11422aeb6506b6afca42a900d620 (patch)
treeda01cb9f4d4dd429cb03073a2995051c84181897
parente2589ac65010f86fc2e6c3b4419cb1dc62f82d1a (diff)
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@gmail.com>
-rw-r--r--libavcodec/cbs_av1.c6
-rw-r--r--libavcodec/cbs_av1_syntax_template.c7
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;
}