codecs: gstvp9statefulparser: do not carry over segmentation flags
authorDaniel Almeida <daniel.almeida@collabora.com>
Thu, 22 Apr 2021 22:21:01 +0000 (19:21 -0300)
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 30 Apr 2021 16:49:28 +0000 (16:49 +0000)
Do not carry over segmentation flags from previous frames. The spec
says in 7.2.10 that the feature data carry over from previous frames
if not updated, but the flags do not.

Consider what would happen if a flag B is to depend on a flag A, and
B carries over as set from another frame. Further consider that A is
now not set in this particular frame. This leads to the invalid state
in which flag B is set but flag A isn't.

This might cause the bitstream to be rejected by accelerators down
the line.

Fix it.

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

gst-libs/gst/codecs/gstvp9statefulparser.c

index 425e9dd..2c25419 100644 (file)
@@ -690,6 +690,8 @@ parse_segmentation_params (GstBitReader * br, GstVp9SegmentationParams * params)
 
   params->segmentation_update_map = 0;
   params->segmentation_update_data = 0;
+  params->segmentation_temporal_update = 0;
+  params->segmentation_abs_or_delta_update = 0;
 
   VP9_READ_BIT (params->segmentation_enabled);
   if (!params->segmentation_enabled)