From 058957fc225f351d3c8402e3230285e46c46ac12 Mon Sep 17 00:00:00 2001 From: Seungha Yang Date: Thu, 17 Jun 2021 01:00:33 +0900 Subject: [PATCH] h264parse,h265parse: Push parameter set NAL units again per segment-done Some decoder implementations might drain out internal buffers and reset its status on segment-done event. So, in case that upstream stream-format is packetized but downstream supports only byte-format, required codec-data might not be forwarded toward downstream if such parameter set NAL units don't exist in inband bitstream. Therefore, parse elements should re-send parameter set NAL units like the case of flush event. Part-of: --- gst/videoparsers/gsth264parse.c | 1 + gst/videoparsers/gsth265parse.c | 1 + 2 files changed, 2 insertions(+) diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c index ef265d3..6dbda1b 100644 --- a/gst/videoparsers/gsth264parse.c +++ b/gst/videoparsers/gsth264parse.c @@ -3678,6 +3678,7 @@ gst_h264_parse_event (GstBaseParse * parse, GstEvent * event) break; } case GST_EVENT_FLUSH_STOP: + case GST_EVENT_SEGMENT_DONE: h264parse->dts = GST_CLOCK_TIME_NONE; h264parse->ts_trn_nb = GST_CLOCK_TIME_NONE; h264parse->push_codec = TRUE; diff --git a/gst/videoparsers/gsth265parse.c b/gst/videoparsers/gsth265parse.c index 22fd241..efaf916 100644 --- a/gst/videoparsers/gsth265parse.c +++ b/gst/videoparsers/gsth265parse.c @@ -3183,6 +3183,7 @@ gst_h265_parse_event (GstBaseParse * parse, GstEvent * event) break; } case GST_EVENT_FLUSH_STOP: + case GST_EVENT_SEGMENT_DONE: h265parse->push_codec = TRUE; res = GST_BASE_PARSE_CLASS (parent_class)->sink_event (parse, event); break; -- 2.7.4