encoder: vp9: Fix refresh frame flag setting
authorSreerenj Balachandran <sreerenj.balachandran@intel.com>
Wed, 21 Sep 2016 06:52:21 +0000 (09:52 +0300)
committerSreerenj Balachandran <sreerenj.balachandran@intel.com>
Wed, 21 Sep 2016 06:52:21 +0000 (09:52 +0300)
While doing the mode-1 referece picture selection,
the circular buffer logic was not correctly setting the
refresh frame flags as per VP9 spec.
Make sure refresh_flag[0] get updated correclty after
each cycle of GST_VP9_REF_FRAMES.

https://bugzilla.gnome.org/show_bug.cgi?id=771507

gst-libs/gst/vaapi/gstvaapiencoder_vp9.c

index 6006f68..0069648 100644 (file)
@@ -228,7 +228,7 @@ get_ref_indices (guint ref_pic_mode, guint ref_list_idx, guint * last_idx,
     *gf_idx = (last_filled_idx - 1) & (GST_VP9_REF_FRAMES - 1);
     *arf_idx = (last_filled_idx - 2) & (GST_VP9_REF_FRAMES - 1);
 
-    *refresh_frame_flags = 1 << (*last_idx + 1);
+    *refresh_frame_flags = 1 << ((*last_idx + 1) % GST_VP9_REF_FRAMES);
   }
 
   GST_LOG