Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FFmpeg/FFmpeg.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2019-11-18 03:08:56 +0300
committerJames Almer <jamrial@gmail.com>2019-11-19 03:30:05 +0300
commit4e2bef6a82b356772a5919c51c9be1530268bd79 (patch)
tree9e5c4243000a4b83f1a968a55631685b56f3b8d7 /libavcodec/cbs_av1.c
parent6c2f8663090cde1a0085e2ffdf444ce50a27a1a4 (diff)
avcodec/cbs_av1: keep separate reference frame state for reading and writing
In scearios where a Temporal Unit is written right after reading it using the same CBS context (av1_metadata, av1_frame_merge, etc), the reference frame state used by the writer must not be the state that's the result of the reader having already parsed the current frame in question. This fixes writing Switch frames, and frames using short ref signaling. Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/cbs_av1.c')
-rw-r--r--libavcodec/cbs_av1.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/libavcodec/cbs_av1.c b/libavcodec/cbs_av1.c
index d132f36f93..bbe4461130 100644
--- a/libavcodec/cbs_av1.c
+++ b/libavcodec/cbs_av1.c
@@ -939,6 +939,8 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx,
priv->spatial_id = 0;
}
+ priv->ref = (AV1ReferenceFrameState *)&priv->read_ref;
+
switch (obu->header.obu_type) {
case AV1_OBU_SEQUENCE_HEADER:
{
@@ -1081,6 +1083,8 @@ static int cbs_av1_write_obu(CodedBitstreamContext *ctx,
td = NULL;
start_pos = put_bits_count(pbc);
+ priv->ref = (AV1ReferenceFrameState *)&priv->write_ref;
+
switch (obu->header.obu_type) {
case AV1_OBU_SEQUENCE_HEADER:
{