diff options
author | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2020-05-13 15:32:44 -0400 |
---|---|---|
committer | Nicolas Dufresne <nicolas@ndufresne.ca> | 2020-05-19 16:57:09 +0000 |
commit | d062677b3fb0a3acbb1feebb1f55c41227547fc7 (patch) | |
tree | 472291dd66092ff422ddccb3c7fdcb8a3f9888eb /gst-libs/gst/codecparsers | |
parent | 28e30c8493407ffbf822eebe4c55f1db524e535c (diff) | |
download | gstreamer-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.c | 13 |
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); |