From f8d9412e4b15f218c62d296cc6dbe169efec3d74 Mon Sep 17 00:00:00 2001 From: Thibault Saunier Date: Thu, 1 Feb 2024 14:53:57 -0300 Subject: [PATCH] hlsdemux2: Handle needing more data when draining segment Some streams in the wild have empty segments at the beginning and hlsdemux2 use to stall forever while we can handle it by processing the following ones. The gap handling mechanism in adaptivedemux2 works properly and pushes the required gaps. Update validate medias so the hls stream is present. Part-of: --- subprojects/gst-integration-testsuites/medias | 2 +- .../testsuites/validate.testslist | 1 + .../hls/with_empty_segments.validatetest | 13 ++ .../log-hlsdemux2-0-video_00-expected | 191 ++++++++++++++++++ .../adaptivedemux2/hls/gsthlsdemux-stream.c | 9 +- 5 files changed, 212 insertions(+), 4 deletions(-) create mode 100644 subprojects/gst-integration-testsuites/testsuites/validate/hls/with_empty_segments.validatetest create mode 100644 subprojects/gst-integration-testsuites/testsuites/validate/hls/with_empty_segments/flow-expectations/log-hlsdemux2-0-video_00-expected diff --git a/subprojects/gst-integration-testsuites/medias b/subprojects/gst-integration-testsuites/medias index 2df2532dc7..efa670df0c 160000 --- a/subprojects/gst-integration-testsuites/medias +++ b/subprojects/gst-integration-testsuites/medias @@ -1 +1 @@ -Subproject commit 2df2532dc766b95df8b8ee42fb4cb2dcf2e5ae59 +Subproject commit efa670df0ce1dc5c05c8dcd6370e152916cfd5ac diff --git a/subprojects/gst-integration-testsuites/testsuites/validate.testslist b/subprojects/gst-integration-testsuites/testsuites/validate.testslist index 7f826b76ca..c9218660fa 100644 --- a/subprojects/gst-integration-testsuites/testsuites/validate.testslist +++ b/subprojects/gst-integration-testsuites/testsuites/validate.testslist @@ -937,6 +937,7 @@ validate.test.h264.parse.trickmode_predicted.seek_trickmode_predicted validate.test.h264.x264enc_youtube_bitrate.fullhd_lowframerate validate.test.h265parse.alternate validate.test.h265parse.trickmode_predicted.seek_trickmode_predicted +validate.test.hls.with_empty_segments validate.test.inter.audio-planar validate.test.interlace.interlace_deinterlace validate.test.interlace.interlace_deinterlace_alternate diff --git a/subprojects/gst-integration-testsuites/testsuites/validate/hls/with_empty_segments.validatetest b/subprojects/gst-integration-testsuites/testsuites/validate/hls/with_empty_segments.validatetest new file mode 100644 index 0000000000..5ed85c3086 --- /dev/null +++ b/subprojects/gst-integration-testsuites/testsuites/validate/hls/with_empty_segments.validatetest @@ -0,0 +1,13 @@ +include, location="http_server_port.var" +meta, + needs_http_server=true, + args = { + "playbin3 uri=http://127.0.0.1:$(http_server_port)/defaults/hls/with_empty_segments/output.m3u8 video-sink=\"fakesink\"", + }, + configs = { + "$(validateflow), + pad=hlsdemux2-0:video_00, + buffers-checksum=as-id, + ignored-event-types={\"tag\"}, + ignored-fields=\"stream-start={urisourcebin-parsed-data,stream-id,stream}, caps={lcevc}\"", + } diff --git a/subprojects/gst-integration-testsuites/testsuites/validate/hls/with_empty_segments/flow-expectations/log-hlsdemux2-0-video_00-expected b/subprojects/gst-integration-testsuites/testsuites/validate/hls/with_empty_segments/flow-expectations/log-hlsdemux2-0-video_00-expected new file mode 100644 index 0000000000..9bbf042353 --- /dev/null +++ b/subprojects/gst-integration-testsuites/testsuites/validate/hls/with_empty_segments/flow-expectations/log-hlsdemux2-0-video_00-expected @@ -0,0 +1,191 @@ +event stream-start: GstEventStreamStart, flags=(GstStreamFlags)GST_STREAM_FLAG_SELECT, group-id=(uint)1; +event stream-collection: stream-collection, collection=(GstStreamCollection)"\(GstStreamCollection\)\ adaptivedemux"; +event caps: video/x-h264, alignment=(string)au, bit-depth-chroma=(uint)8, bit-depth-luma=(uint)8, chroma-format=(string)4:2:0, codec_data=(buffer)01640033ffe1001027640033ac56700d8010fa6a0202020401000428ee3cb0, coded-picture-structure=(string)frame, colorimetry=(string)bt709, framerate=(fraction)0/1, height=(int)2160, interlace-mode=(string)progressive, level=(string)5.1, parsed=(boolean)true, pixel-aspect-ratio=(fraction)1/1, profile=(string)high, stream-format=(string)avc, width=(int)3456; +event segment: format=TIME, start=0:00:00.000000000, offset=0:00:00.000000000, stop=none, time=0:00:00.000000000, base=0:00:00.000000000, position=0:00:00.000000000 +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)0; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)100000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)200000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)300000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)400000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)500000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)600000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)700000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)800000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)900000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)1000000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)1100000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)1200000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)1300000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)1400000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)1500000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)1600000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)1700000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)1800000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)1900000000; +event gap: GstEventGap, duration=(guint64)21666666, timestamp=(guint64)2000000000; +buffer: content-id=0, dts=0:00:02.021666666, pts=0:00:02.051666666, flags=discont marker header tag-memory +buffer: content-id=1, dts=0:00:02.078333333, pts=0:00:02.216666666, flags=marker delta-unit +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)2078333333; +event gap: GstEventGap, duration=(guint64)8333333, timestamp=(guint64)2178333333; +buffer: content-id=2, dts=0:00:02.186666666, pts=0:00:02.186666666, flags=marker delta-unit +buffer: content-id=3, dts=0:00:02.205000000, pts=0:00:02.258333333, flags=marker delta-unit +buffer: content-id=4, dts=0:00:02.228333333, pts=0:00:02.235000000, flags=marker delta-unit +buffer: content-id=5, dts=0:00:02.290000000, pts=0:00:02.346666666, flags=marker delta-unit +buffer: content-id=6, dts=0:00:02.316666666, pts=0:00:02.320000000, flags=marker delta-unit +buffer: content-id=7, dts=0:00:02.390000000, pts=0:00:02.530000000, flags=marker delta-unit +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)2390000000; +event gap: GstEventGap, duration=(guint64)10000000, timestamp=(guint64)2490000000; +buffer: content-id=8, dts=0:00:02.500000000, pts=0:00:02.500000000, flags=marker delta-unit +buffer: content-id=9, dts=0:00:02.516666666, pts=0:00:02.636666666, flags=marker delta-unit +buffer: content-id=10, dts=0:00:02.606666666, pts=0:00:02.606666666, flags=marker delta-unit +buffer: content-id=11, dts=0:00:02.706666666, pts=0:00:02.845000000, flags=marker delta-unit +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)2706666666; +event gap: GstEventGap, duration=(guint64)8333334, timestamp=(guint64)2806666666; +buffer: content-id=12, dts=0:00:02.815000000, pts=0:00:02.815000000, flags=marker delta-unit +buffer: content-id=13, dts=0:00:02.915000000, pts=0:00:03.051666666, flags=marker delta-unit +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)2915000000; +event gap: GstEventGap, duration=(guint64)6666666, timestamp=(guint64)3015000000; +buffer: content-id=14, dts=0:00:03.021666666, pts=0:00:03.021666666, flags=marker delta-unit +buffer: content-id=15, dts=0:00:03.040000000, pts=0:00:03.086666666, flags=marker delta-unit +buffer: content-id=16, dts=0:00:03.056666666, pts=0:00:03.070000000, flags=marker delta-unit +buffer: content-id=17, dts=0:00:03.073333333, pts=0:00:03.121666666, flags=marker delta-unit +buffer: content-id=18, dts=0:00:03.091666666, pts=0:00:03.103333333, flags=marker delta-unit +buffer: content-id=19, dts=0:00:03.108333333, pts=0:00:03.155000000, flags=marker delta-unit +buffer: content-id=20, dts=0:00:03.125000000, pts=0:00:03.138333333, flags=marker delta-unit +buffer: content-id=21, dts=0:00:03.141666666, pts=0:00:03.188333333, flags=marker delta-unit +buffer: content-id=22, dts=0:00:03.158333333, pts=0:00:03.171666666, flags=marker delta-unit +buffer: content-id=23, dts=0:00:03.175000000, pts=0:00:03.221666666, flags=marker delta-unit +buffer: content-id=24, dts=0:00:03.191666666, pts=0:00:03.205000000, flags=marker delta-unit +buffer: content-id=25, dts=0:00:03.211666666, pts=0:00:03.265000000, flags=marker delta-unit +buffer: content-id=26, dts=0:00:03.235000000, pts=0:00:03.241666666, flags=marker delta-unit +buffer: content-id=27, dts=0:00:03.253333333, pts=0:00:03.315000000, flags=marker delta-unit +buffer: content-id=28, dts=0:00:03.285000000, pts=0:00:03.285000000, flags=marker delta-unit +buffer: content-id=29, dts=0:00:03.301666666, pts=0:00:03.331666666, flags=marker delta-unit +buffer: content-id=30, dts=0:00:03.343333333, pts=0:00:03.373333333, flags=marker +buffer: content-id=31, dts=0:00:03.360000000, pts=0:00:03.423333333, flags=marker delta-unit +buffer: content-id=32, dts=0:00:03.393333333, pts=0:00:03.393333333, flags=marker delta-unit +buffer: content-id=33, dts=0:00:03.411666666, pts=0:00:03.473333333, flags=marker delta-unit +buffer: content-id=34, dts=0:00:03.443333333, pts=0:00:03.443333333, flags=marker delta-unit +buffer: content-id=35, dts=0:00:03.460000000, pts=0:00:03.508333333, flags=marker delta-unit +buffer: content-id=36, dts=0:00:03.478333333, pts=0:00:03.490000000, flags=marker delta-unit +buffer: content-id=37, dts=0:00:03.493333333, pts=0:00:03.541666666, flags=marker delta-unit +buffer: content-id=38, dts=0:00:03.511666666, pts=0:00:03.523333333, flags=marker delta-unit +buffer: content-id=39, dts=0:00:03.528333333, pts=0:00:03.575000000, flags=marker delta-unit +buffer: content-id=40, dts=0:00:03.545000000, pts=0:00:03.558333333, flags=marker delta-unit +buffer: content-id=41, dts=0:00:03.563333333, pts=0:00:03.610000000, flags=marker delta-unit +buffer: content-id=42, dts=0:00:03.580000000, pts=0:00:03.593333333, flags=marker delta-unit +buffer: content-id=43, dts=0:00:03.598333333, pts=0:00:03.646666666, flags=marker delta-unit +buffer: content-id=44, dts=0:00:03.616666666, pts=0:00:03.628333333, flags=marker delta-unit +buffer: content-id=45, dts=0:00:03.633333333, pts=0:00:03.683333333, flags=marker delta-unit +buffer: content-id=46, dts=0:00:03.653333333, pts=0:00:03.663333333, flags=marker delta-unit +buffer: content-id=47, dts=0:00:03.670000000, pts=0:00:03.716666666, flags=marker delta-unit +buffer: content-id=48, dts=0:00:03.686666666, pts=0:00:03.700000000, flags=marker delta-unit +buffer: content-id=49, dts=0:00:03.705000000, pts=0:00:03.751666666, flags=marker delta-unit +buffer: content-id=50, dts=0:00:03.721666666, pts=0:00:03.735000000, flags=marker delta-unit +buffer: content-id=51, dts=0:00:03.738333333, pts=0:00:03.785000000, flags=marker delta-unit +buffer: content-id=52, dts=0:00:03.755000000, pts=0:00:03.768333333, flags=marker delta-unit +buffer: content-id=53, dts=0:00:03.771666666, pts=0:00:03.818333333, flags=marker delta-unit +buffer: content-id=54, dts=0:00:03.788333333, pts=0:00:03.801666666, flags=marker delta-unit +buffer: content-id=55, dts=0:00:03.806666666, pts=0:00:03.853333333, flags=marker delta-unit +buffer: content-id=56, dts=0:00:03.823333333, pts=0:00:03.836666666, flags=marker delta-unit +buffer: content-id=57, dts=0:00:03.840000000, pts=0:00:03.888333333, flags=marker delta-unit +buffer: content-id=58, dts=0:00:03.858333333, pts=0:00:03.870000000, flags=marker delta-unit +buffer: content-id=59, dts=0:00:03.875000000, pts=0:00:03.905000000, flags=marker delta-unit +buffer: content-id=60, dts=0:00:03.891666666, pts=0:00:03.921666666, flags=marker +buffer: content-id=61, dts=0:00:03.908333333, pts=0:00:03.955000000, flags=marker delta-unit +buffer: content-id=62, dts=0:00:03.925000000, pts=0:00:03.938333333, flags=marker delta-unit +buffer: content-id=63, dts=0:00:03.943333333, pts=0:00:04.003333333, flags=marker delta-unit +buffer: content-id=64, dts=0:00:03.973333333, pts=0:00:03.973333333, flags=marker delta-unit +buffer: content-id=65, dts=0:00:03.990000000, pts=0:00:04.020000000, flags=marker delta-unit +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)3990000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)4090000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)4190000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)4290000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)4390000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)4490000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)4590000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)4690000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)4790000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)4890000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)4990000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)5090000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)5190000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)5290000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)5390000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)5490000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)5590000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)5690000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)5790000000; +event gap: GstEventGap, duration=(guint64)100000000, timestamp=(guint64)5890000000; +event gap: GstEventGap, duration=(guint64)36666666, timestamp=(guint64)5990000000; +buffer: content-id=66, dts=0:00:06.026666666, pts=0:00:06.073333333, flags=marker +buffer: content-id=67, dts=0:00:06.043333333, pts=0:00:06.121666666, flags=marker delta-unit +buffer: content-id=68, dts=0:00:06.075000000, pts=0:00:06.090000000, flags=marker delta-unit +buffer: content-id=69, dts=0:00:06.093333333, pts=0:00:06.173333333, flags=marker delta-unit +buffer: content-id=70, dts=0:00:06.126666666, pts=0:00:06.140000000, flags=marker delta-unit +buffer: content-id=71, dts=0:00:06.143333333, pts=0:00:06.221666666, flags=marker delta-unit +buffer: content-id=72, dts=0:00:06.175000000, pts=0:00:06.190000000, flags=marker delta-unit +buffer: content-id=73, dts=0:00:06.193333333, pts=0:00:06.280000000, flags=marker delta-unit +buffer: content-id=74, dts=0:00:06.233333333, pts=0:00:06.240000000, flags=marker delta-unit +buffer: content-id=75, dts=0:00:06.293333333, pts=0:00:06.398333333, flags=marker delta-unit +buffer: content-id=76, dts=0:00:06.351666666, pts=0:00:06.351666666, flags=marker delta-unit +buffer: content-id=77, dts=0:00:06.385000000, pts=0:00:06.441666666, flags=marker delta-unit +buffer: content-id=78, dts=0:00:06.395000000, pts=0:00:06.431666666, flags=marker delta-unit +buffer: content-id=79, dts=0:00:06.411666666, pts=0:00:06.491666666, flags=marker delta-unit +buffer: content-id=80, dts=0:00:06.445000000, pts=0:00:06.458333333, flags=marker delta-unit +buffer: content-id=81, dts=0:00:06.461666666, pts=0:00:06.548333333, flags=marker delta-unit +buffer: content-id=82, dts=0:00:06.501666666, pts=0:00:06.508333333, flags=marker delta-unit +buffer: content-id=83, dts=0:00:06.518333333, pts=0:00:06.598333333, flags=marker delta-unit +buffer: content-id=84, dts=0:00:06.551666666, pts=0:00:06.565000000, flags=marker delta-unit +buffer: content-id=85, dts=0:00:06.568333333, pts=0:00:06.646666666, flags=marker delta-unit +buffer: content-id=86, dts=0:00:06.600000000, pts=0:00:06.615000000, flags=marker delta-unit +buffer: content-id=87, dts=0:00:06.618333333, pts=0:00:06.698333333, flags=marker delta-unit +buffer: content-id=88, dts=0:00:06.651666666, pts=0:00:06.665000000, flags=marker delta-unit +buffer: content-id=89, dts=0:00:06.668333333, pts=0:00:06.755000000, flags=marker delta-unit +buffer: content-id=90, dts=0:00:06.708333333, pts=0:00:06.715000000, flags=marker delta-unit +buffer: content-id=91, dts=0:00:06.725000000, pts=0:00:06.805000000, flags=marker delta-unit +buffer: content-id=92, dts=0:00:06.758333333, pts=0:00:06.771666666, flags=marker delta-unit +buffer: content-id=93, dts=0:00:06.776666666, pts=0:00:06.858333333, flags=marker delta-unit +buffer: content-id=94, dts=0:00:06.811666666, pts=0:00:06.823333333, flags=marker delta-unit +buffer: content-id=95, dts=0:00:06.828333333, pts=0:00:06.875000000, flags=marker delta-unit +buffer: content-id=96, dts=0:00:06.868333333, pts=0:00:06.915000000, flags=marker +buffer: content-id=97, dts=0:00:06.885000000, pts=0:00:06.961666666, flags=marker delta-unit +buffer: content-id=98, dts=0:00:06.915000000, pts=0:00:06.931666666, flags=marker delta-unit +buffer: content-id=99, dts=0:00:06.933333333, pts=0:00:07.015000000, flags=marker delta-unit +buffer: content-id=100, dts=0:00:06.968333333, pts=0:00:06.980000000, flags=marker delta-unit +buffer: content-id=101, dts=0:00:06.985000000, pts=0:00:07.073333333, flags=marker delta-unit +buffer: content-id=102, dts=0:00:07.026666666, pts=0:00:07.031666666, flags=marker delta-unit +buffer: content-id=103, dts=0:00:07.043333333, pts=0:00:07.123333333, flags=marker delta-unit +buffer: content-id=104, dts=0:00:07.076666666, pts=0:00:07.090000000, flags=marker delta-unit +buffer: content-id=105, dts=0:00:07.126666666, pts=0:00:07.221666666, flags=marker delta-unit +buffer: content-id=106, dts=0:00:07.175000000, pts=0:00:07.175000000, flags=marker delta-unit +buffer: content-id=107, dts=0:00:07.193333333, pts=0:00:07.296666666, flags=marker delta-unit +buffer: content-id=108, dts=0:00:07.250000000, pts=0:00:07.250000000, flags=marker delta-unit +buffer: content-id=109, dts=0:00:07.268333333, pts=0:00:07.333333333, flags=marker delta-unit +buffer: content-id=110, dts=0:00:07.286666666, pts=0:00:07.315000000, flags=marker delta-unit +buffer: content-id=111, dts=0:00:07.303333333, pts=0:00:07.393333333, flags=marker delta-unit +buffer: content-id=112, dts=0:00:07.346666666, pts=0:00:07.350000000, flags=marker delta-unit +buffer: content-id=113, dts=0:00:07.365000000, pts=0:00:07.428333333, flags=marker delta-unit +buffer: content-id=114, dts=0:00:07.381666666, pts=0:00:07.411666666, flags=marker delta-unit +buffer: content-id=115, dts=0:00:07.398333333, pts=0:00:07.498333333, flags=marker delta-unit +buffer: content-id=116, dts=0:00:07.451666666, pts=0:00:07.451666666, flags=marker delta-unit +buffer: content-id=117, dts=0:00:07.468333333, pts=0:00:07.548333333, flags=marker delta-unit +buffer: content-id=118, dts=0:00:07.501666666, pts=0:00:07.515000000, flags=marker delta-unit +buffer: content-id=119, dts=0:00:07.520000000, pts=0:00:07.590000000, flags=marker delta-unit +buffer: content-id=120, dts=0:00:07.543333333, pts=0:00:07.566666666, flags=marker delta-unit +buffer: content-id=121, dts=0:00:07.561666666, pts=0:00:07.638333333, flags=marker delta-unit +buffer: content-id=122, dts=0:00:07.591666666, pts=0:00:07.608333333, flags=marker delta-unit +buffer: content-id=123, dts=0:00:07.608333333, pts=0:00:07.696666666, flags=marker delta-unit +buffer: content-id=124, dts=0:00:07.650000000, pts=0:00:07.655000000, flags=marker delta-unit +buffer: content-id=125, dts=0:00:07.666666666, pts=0:00:07.713333333, flags=marker delta-unit +buffer: content-id=126, dts=0:00:07.701666666, pts=0:00:07.748333333, flags=marker +buffer: content-id=127, dts=0:00:07.718333333, pts=0:00:07.796666666, flags=marker delta-unit +buffer: content-id=128, dts=0:00:07.750000000, pts=0:00:07.765000000, flags=marker delta-unit +buffer: content-id=129, dts=0:00:07.766666666, pts=0:00:07.860000000, flags=marker delta-unit +buffer: content-id=130, dts=0:00:07.813333333, pts=0:00:07.813333333, flags=marker delta-unit +buffer: content-id=131, dts=0:00:07.833333333, pts=0:00:07.901666666, flags=marker delta-unit +buffer: content-id=132, dts=0:00:07.855000000, pts=0:00:07.880000000, flags=marker delta-unit +buffer: content-id=133, dts=0:00:07.871666666, pts=0:00:07.956666666, flags=marker delta-unit +buffer: content-id=134, dts=0:00:07.910000000, pts=0:00:07.918333333, flags=marker delta-unit +buffer: content-id=135, dts=0:00:07.958333333, pts=0:00:08.005000000, flags=marker delta-unit +event eos: (no structure) diff --git a/subprojects/gst-plugins-good/ext/adaptivedemux2/hls/gsthlsdemux-stream.c b/subprojects/gst-plugins-good/ext/adaptivedemux2/hls/gsthlsdemux-stream.c index c42a71ed4b..56ccd72796 100644 --- a/subprojects/gst-plugins-good/ext/adaptivedemux2/hls/gsthlsdemux-stream.c +++ b/subprojects/gst-plugins-good/ext/adaptivedemux2/hls/gsthlsdemux-stream.c @@ -721,9 +721,12 @@ gst_hls_demux_handle_buffer_content (GstHLSDemux * demux, if (parser_ret == GST_HLS_PARSER_RESULT_NEED_MORE_DATA) { if (stream->downloading_index || stream->downloading_header) goto out_need_more; - /* Else if we're draining, it's an error */ - if (draining) - goto out_error; + if (draining) { + /* Else if we're draining, move to next fragment */ + return gst_hlsdemux_stream_handle_internal_time (hls_stream, + hls_stream->current_segment->stream_time); + } + /* Else we just need more data */ goto out_need_more; }