summaryrefslogtreecommitdiff
path: root/gst-libs/gst/codecparsers
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.com>2020-05-13 15:32:44 -0400
committerNicolas Dufresne <nicolas@ndufresne.ca>2020-05-19 16:57:09 +0000
commitd062677b3fb0a3acbb1feebb1f55c41227547fc7 (patch)
tree472291dd66092ff422ddccb3c7fdcb8a3f9888eb /gst-libs/gst/codecparsers
parent28e30c8493407ffbf822eebe4c55f1db524e535c (diff)
downloadgstreamer-plugins-bad-d062677b3fb0a3acbb1feebb1f55c41227547fc7.tar.gz
codecparsers: h264: Fix default ref list size
The default in PPS was not applied properly. The default does not apply for I-Slice and l1 default only applies for B-Slice. This fixes the slice values for num_ref_idx_l0_active_minus1 and num_ref_idx_l1_active_minus1. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1238>
Diffstat (limited to 'gst-libs/gst/codecparsers')
-rw-r--r--gst-libs/gst/codecparsers/gsth264parser.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/gst-libs/gst/codecparsers/gsth264parser.c b/gst-libs/gst/codecparsers/gsth264parser.c
index 44dcc7e02..a7ddad4b6 100644
--- a/gst-libs/gst/codecparsers/gsth264parser.c
+++ b/gst-libs/gst/codecparsers/gsth264parser.c
@@ -2253,8 +2253,17 @@ gst_h264_parser_parse_slice_hdr (GstH264NalParser * nalparser,
/* set default values for fields that might not be present in the bitstream
and have valid defaults */
- slice->num_ref_idx_l0_active_minus1 = pps->num_ref_idx_l0_active_minus1;
- slice->num_ref_idx_l1_active_minus1 = pps->num_ref_idx_l1_active_minus1;
+ if (GST_H264_IS_I_SLICE (slice)) {
+ slice->num_ref_idx_l0_active_minus1 = 0;
+ slice->num_ref_idx_l1_active_minus1 = 0;
+ } else {
+ slice->num_ref_idx_l0_active_minus1 = pps->num_ref_idx_l0_active_minus1;
+
+ if (GST_H264_IS_B_SLICE (slice))
+ slice->num_ref_idx_l1_active_minus1 = pps->num_ref_idx_l1_active_minus1;
+ else
+ slice->num_ref_idx_l1_active_minus1 = 0;
+ }
if (sps->separate_colour_plane_flag)
READ_UINT8 (&nr, slice->colour_plane_id, 2);