summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorSeungha Yang <seungha@centricular.com>2021-06-17 01:00:33 +0900
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2021-06-16 18:00:39 +0000
commit058957fc225f351d3c8402e3230285e46c46ac12 (patch)
treecf0d5ebc4497b6ff1b12af3551613d3ea24582a9 /gst
parent2696bcd9e2be767f490d2ea79e22d6fddb49deb9 (diff)
downloadgstreamer-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.c1
-rw-r--r--gst/videoparsers/gsth265parse.c1
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;