summaryrefslogtreecommitdiff
path: root/gst-libs
diff options
context:
space:
mode:
authorDaniel Almeida <daniel.almeida@collabora.com>2021-07-29 12:20:30 -0300
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2021-09-09 18:32:42 +0000
commitb8c826afe33d38188210ee77b85530e364b85fdb (patch)
tree46f1d5c623b0534417a11bb3fe2225ac14f5e83a /gst-libs
parent8239ff343fa2865fbfd79c1d3d74b5f75b3e1627 (diff)
downloadgstreamer-plugins-bad-b8c826afe33d38188210ee77b85530e364b85fdb.tar.gz
codecs: gstvp9statefulparser: feature_data should be 0 if feature_enable is 0
The spec says in 6.2.11 that feature_data[i][j] should be zero if feature_enabled[i][j] is zero. Instead we retained the old value in the parser. Fix it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2449>
Diffstat (limited to 'gst-libs')
-rw-r--r--gst-libs/gst/codecs/gstvp9statefulparser.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/gst-libs/gst/codecs/gstvp9statefulparser.c b/gst-libs/gst/codecs/gstvp9statefulparser.c
index 099699b76..6289c3f41 100644
--- a/gst-libs/gst/codecs/gstvp9statefulparser.c
+++ b/gst-libs/gst/codecs/gstvp9statefulparser.c
@@ -727,12 +727,18 @@ parse_segmentation_params (GstBitReader * br, GstVp9SegmentationParams * params)
for (i = 0; i < GST_VP9_MAX_SEGMENTS; i++) {
VP9_READ_BIT (params->feature_enabled[i][GST_VP9_SEG_LVL_ALT_Q]);
- if (params->feature_enabled[i][GST_VP9_SEG_LVL_ALT_Q])
+ if (params->feature_enabled[i][GST_VP9_SEG_LVL_ALT_Q]) {
VP9_READ_SIGNED_16 (params->feature_data[i][GST_VP9_SEG_LVL_ALT_Q], 8);
+ } else {
+ params->feature_data[i][GST_VP9_SEG_LVL_ALT_Q] = 0;
+ }
VP9_READ_BIT (params->feature_enabled[i][GST_VP9_SEG_LVL_ALT_L]);
- if (params->feature_enabled[i][GST_VP9_SEG_LVL_ALT_L])
+ if (params->feature_enabled[i][GST_VP9_SEG_LVL_ALT_L]) {
VP9_READ_SIGNED_8 (params->feature_data[i][GST_VP9_SEG_LVL_ALT_L], 6);
+ } else {
+ params->feature_data[i][GST_VP9_SEG_LVL_ALT_L] = 0;
+ }
VP9_READ_BIT (params->feature_enabled[i][GST_VP9_SEG_LVL_REF_FRAME]);
if (params->feature_enabled[i][GST_VP9_SEG_LVL_REF_FRAME]) {
@@ -740,6 +746,8 @@ parse_segmentation_params (GstBitReader * br, GstVp9SegmentationParams * params)
VP9_READ_UINT8 (val, 2);
params->feature_data[i][GST_VP9_SEG_LVL_REF_FRAME] = val;
+ } else {
+ params->feature_data[i][GST_VP9_SEG_LVL_REF_FRAME] = 0;
}
VP9_READ_BIT (params->feature_enabled[i][GST_VP9_SEG_SEG_LVL_SKIP]);