From 093caa843125fab0e796c1d503f7af6c3e825873 Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Tue, 27 Aug 2019 20:34:48 +0900 Subject: [PATCH] h264parser: Expose all parsed flags of slice header Add num_ref_idx_active_override_flag and sp_for_switch_flag to member of GstH264SliceHdr. No reason to hiding them and some decoder implementations (e.g., DXVA) rely on externally parsed header data which can be provided by h264parser. --- gst-libs/gst/codecparsers/gsth264parser.c | 10 +++------- gst-libs/gst/codecparsers/gsth264parser.h | 4 ++++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/gst-libs/gst/codecparsers/gsth264parser.c b/gst-libs/gst/codecparsers/gsth264parser.c index cbd5e866c1..3b2a3258f5 100644 --- a/gst-libs/gst/codecparsers/gsth264parser.c +++ b/gst-libs/gst/codecparsers/gsth264parser.c @@ -2226,10 +2226,8 @@ gst_h264_parser_parse_slice_hdr (GstH264NalParser * nalparser, if (GST_H264_IS_P_SLICE (slice) || GST_H264_IS_SP_SLICE (slice) || GST_H264_IS_B_SLICE (slice)) { - guint8 num_ref_idx_active_override_flag; - - READ_UINT8 (&nr, num_ref_idx_active_override_flag, 1); - if (num_ref_idx_active_override_flag) { + READ_UINT8 (&nr, slice->num_ref_idx_active_override_flag, 1); + if (slice->num_ref_idx_active_override_flag) { READ_UE_MAX (&nr, slice->num_ref_idx_l0_active_minus1, 31); if (GST_H264_IS_B_SLICE (slice)) @@ -2261,10 +2259,8 @@ gst_h264_parser_parse_slice_hdr (GstH264NalParser * nalparser, READ_SE_ALLOWED (&nr, slice->slice_qp_delta, -87, 77); if (GST_H264_IS_SP_SLICE (slice) || GST_H264_IS_SI_SLICE (slice)) { - guint8 sp_for_switch_flag; - if (GST_H264_IS_SP_SLICE (slice)) - READ_UINT8 (&nr, sp_for_switch_flag, 1); + READ_UINT8 (&nr, slice->sp_for_switch_flag, 1); READ_SE_ALLOWED (&nr, slice->slice_qs_delta, -51, 51); } diff --git a/gst-libs/gst/codecparsers/gsth264parser.h b/gst-libs/gst/codecparsers/gsth264parser.h index b032f92999..478f755638 100644 --- a/gst-libs/gst/codecparsers/gsth264parser.h +++ b/gst-libs/gst/codecparsers/gsth264parser.h @@ -928,6 +928,10 @@ struct _GstH264SliceHdr /* Number of emulation prevention bytes (EPB) in this slice_header() */ guint n_emulation_prevention_bytes; + + /* Since: 1.18 */ + guint8 num_ref_idx_active_override_flag; + guint8 sp_for_switch_flag; };