codecparsers: av1: all ref idx should be gint8.
authorHe Junyan <junyan.he@intel.com>
Fri, 24 Jul 2020 04:49:10 +0000 (12:49 +0800)
committerVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Tue, 17 Nov 2020 19:31:09 +0000 (19:31 +0000)
All the ref index need to compare with 0 in reference index decision
algorithm. We also need to init them to -1.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1464>

gst-libs/gst/codecparsers/gstav1parser.c
gst-libs/gst/codecparsers/gstav1parser.h

index 6f6b741..0873612 100644 (file)
@@ -4355,9 +4355,14 @@ gst_av1_parse_frame_header (GstAV1Parser * parser, GstAV1OBU * obu,
     GstBitReader * bit_reader, GstAV1FrameHeaderOBU * frame_header)
 {
   GstAV1ParserResult ret;
+  guint i;
 
   memset (frame_header, 0, sizeof (*frame_header));
   frame_header->frame_is_intra = 1;
+  frame_header->last_frame_idx = -1;
+  frame_header->gold_frame_idx = -1;
+  for (i = 0; i < GST_AV1_REFS_PER_FRAME; i++)
+    frame_header->ref_frame_idx[i] = -1;
 
   ret = gst_av1_parse_uncompressed_frame_header (parser, obu, bit_reader,
       frame_header);
index bdbe3e1..e4bcc43 100644 (file)
@@ -1516,7 +1516,7 @@ struct _GstAV1FilmGrainParams {
  */
 struct _GstAV1FrameHeaderOBU {
   gboolean show_existing_frame;
-  guint8 frame_to_show_map_idx;
+  gint8 frame_to_show_map_idx;
   guint32 frame_presentation_time;
   guint32 tu_presentation_delay;
   guint32 display_frame_id;
@@ -1538,8 +1538,8 @@ struct _GstAV1FrameHeaderOBU {
   gboolean allow_intrabc;
   gboolean frame_refs_short_signaling;
   guint8 last_frame_idx;
-  guint8 gold_frame_idx;
-  guint8 ref_frame_idx[GST_AV1_REFS_PER_FRAME];
+  gint8 gold_frame_idx;
+  gint8 ref_frame_idx[GST_AV1_REFS_PER_FRAME];
   gboolean allow_high_precision_mv;
   gboolean is_motion_mode_switchable;
   gboolean use_ref_frame_mvs;
@@ -1636,7 +1636,7 @@ struct _GstAV1TileListOBU {
   guint8 output_frame_height_in_tiles_minus_1;
   guint16 tile_count_minus_1;
   struct {
-    guint8 anchor_frame_idx;
+    gint8 anchor_frame_idx;
     guint8 anchor_tile_row;
     guint8 anchor_tile_col;
     guint16 tile_data_size_minus_1;