diff options
author | Seungha Yang <seungha@centricular.com> | 2021-06-17 01:00:33 +0900 |
---|---|---|
committer | GStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2021-06-16 18:00:39 +0000 |
commit | 058957fc225f351d3c8402e3230285e46c46ac12 (patch) | |
tree | cf0d5ebc4497b6ff1b12af3551613d3ea24582a9 /gst | |
parent | 2696bcd9e2be767f490d2ea79e22d6fddb49deb9 (diff) | |
download | gstreamer-plugins-bad-058957fc225f351d3c8402e3230285e46c46ac12.tar.gz |
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: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2334>
Diffstat (limited to 'gst')
-rw-r--r-- | gst/videoparsers/gsth264parse.c | 1 | ||||
-rw-r--r-- | gst/videoparsers/gsth265parse.c | 1 |
2 files changed, 2 insertions, 0 deletions
diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c index ef265d3d0..6dbda1b37 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 22fd241f3..efaf916b2 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; |