]> git.sesse.net Git - ffmpeg/commitdiff
avcodec/cbs_av1: infer ref_order_hint when not coded in the bitstream
authorJames Almer <jamrial@gmail.com>
Thu, 29 Oct 2020 12:54:59 +0000 (09:54 -0300)
committerJames Almer <jamrial@gmail.com>
Wed, 11 Nov 2020 13:17:24 +0000 (10:17 -0300)
Signed-off-by: James Almer <jamrial@gmail.com>
libavcodec/cbs_av1_syntax_template.c

index f351b1de244b1b42e901601dc366d8ba7f8cfeee..884dbec76046a3cf78338b6511e869bc3d41fbe8 100644 (file)
@@ -1490,13 +1490,19 @@ static int FUNC(uncompressed_header)(CodedBitstreamContext *ctx, RWContext *rw,
         fb(8, refresh_frame_flags);
 
     if (!frame_is_intra || current->refresh_frame_flags != all_frames) {
-        if (current->error_resilient_mode && seq->enable_order_hint) {
+        if (seq->enable_order_hint) {
             for (i = 0; i < AV1_NUM_REF_FRAMES; i++) {
-                fbs(order_hint_bits, ref_order_hint[i], 1, i);
+                if (current->error_resilient_mode)
+                    fbs(order_hint_bits, ref_order_hint[i], 1, i);
+                else
+                    infer(ref_order_hint[i], priv->ref[i].order_hint);
                 if (current->ref_order_hint[i] != priv->ref[i].order_hint)
                     priv->ref[i].valid = 0;
             }
         }
+    } else if (!frame_is_intra && seq->enable_order_hint) {
+        for (i = 0; i < AV1_NUM_REF_FRAMES; i++)
+            infer(ref_order_hint[i], priv->ref[i].order_hint);
     }
 
     if (current->frame_type == AV1_FRAME_KEY ||