Thibault Saunier
0f577533e6
examples: Add an option to disable tests
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3930 >
2023-02-10 12:59:55 +00:00
Sebastian Dröge
fc5bad5f75
examples: webrtc: rust: Fix a couple of minor clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3928 >
2023-02-10 11:43:00 +00:00
Sebastian Dröge
28ab612a88
examples: webrtc: rust: Update to gstreamer-rs 0.20
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3928 >
2023-02-10 11:43:00 +00:00
Edward Hervey
f072b25940
adaptivedemux2: Use track ID for debugging
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3890 >
2023-02-10 10:56:52 +00:00
Edward Hervey
5e193730db
adaptivedemux2: Split track id from event stream-id
...
The id is used for naming of the various objects and debugging. We don't
want/need it to be obfuscated with the massive upstream id.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3890 >
2023-02-10 10:56:52 +00:00
Tim-Philipp Müller
edaf3252c5
tests: mark elements_srtp.test_play test as flaky
...
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1777
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3927 >
2023-02-10 10:04:39 +00:00
Edward Hervey
edc66ce003
mxfdemux: Add support for FFV1 demuxing
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3899 >
2023-02-10 10:02:25 +01:00
Edward Hervey
3768ef89b9
mxf: simplify essence track matching
...
By directly providing a valid descriptor to match against
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3899 >
2023-02-10 10:02:25 +01:00
Edward Hervey
2d5b71d6e3
mxfdemux: Handle empty tracks
...
This can happen when tracks aren't fully/properly detected due to new descriptors
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3899 >
2023-02-10 10:02:25 +01:00
Edward Hervey
206ed12368
mxfdemux: Handle sub-descriptor in generic descriptors
...
Specificied in S377-1 (2019) B.2 Generic Descriptor
This is one of the ways to store more "sub descriptors" for a single track
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3899 >
2023-02-10 10:02:25 +01:00
Edward Hervey
56a50c3008
mxf: Add convenience function for looking up primer tags
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3899 >
2023-02-10 06:25:29 +01:00
Jan Alexander Steffens (heftig)
aeb262a7e1
pad: Don't leak user_data in gst_pad_start_task
...
When the task already exists, we forgot to free the passed `user_data`.
This wasn't an issue for most C code, which doesn't pass a
`GDestroyNotify`, but bindings such as gstreamer-rs do!
That said, allocating a trampoline in gstreamer-rs just for it to get
thrown away again is awkward. Maybe we need a `gst_pad_resume_task`?
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3920 >
2023-02-09 15:40:56 +00:00
Sebastian Dröge
5119ca25e4
av1parser: Don't consider unknown metadata OBUs a bitstream error
...
Just don't parse them.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1774
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3898 >
2023-02-09 14:52:58 +00:00
Sebastian Dröge
5486ed24a5
qtmux: Implement writing of av1C
version 1 box
...
Version 0 is ancient and not specified in any documents. Take it
directly from the `codec_data` if presents or otherwise try to construct
a reasonably looking `av1C` box.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3882 >
2023-02-09 14:04:06 +00:00
Sebastian Dröge
8593a58916
qtdemux: Drop av1C version 0 parsing and implement version 1 parsing
...
The av1C box is optional so dropping parsing does not break anything
fundamentally, and there seems to be no historical record how version 0
even looks like while the comments and the parsing disagreed with each
other.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3882 >
2023-02-09 14:04:06 +00:00
Edward Hervey
3d506a0978
subparse: Properly forward segment seqnum
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3913 >
2023-02-08 14:12:07 +00:00
Thibault Saunier
1bab0ef2aa
bin: Do not deactivate pad in NULL_TO_READY
...
Since b76d336549
pads are deactivated when going to READY but in `uridecodebin(3)`, the
sources source pads are activated while in NULL state (when PULL mode is
supported), meaning that we are ending up deactivating those pads in
NULL_TO_READY, breaking the pipeline.
The intent of the commit mentioned above is to ensure that the pads are
deactivated either in PAUSED_TO_READY or READY_TO_READY, so it should
be safe to avoid deactivating in NULL_TO_READY.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3849 >
2023-02-08 13:23:46 +00:00
Patricia Muscalu
c3e52d5c4f
rtph264pay: Don't insert SPS/PPS before the second image slice
...
Only the first slice, for which fist_mb_in_slice is set to 0,
should trigger insertion of SPS and PPS buffers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3402 >
2023-02-08 12:10:11 +00:00
Thibault Saunier
4067bbdd91
uridecodebin: Set source element to READY before querying it
...
Generating the source element is done when uridecodebin is doing the
READY to PAUSED state change, so it is reasonable to set the new source
element to that state.
This also allows detecting early failures with backing libraries or
hardware (checks done in NULL->READY).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3857 >
2023-02-08 11:07:21 +00:00
Philipp Zabel
485c8ef4b5
gleglimage: cache EGL images per DmabufUpload
...
Do not store cached EGL images in GstMemory QData. Instead, use a
per-DmabufUpload GHashTable to store cache entries with a weak
reference to the GstMemory.
This allows two glupload elements on separate tee branches to have
their own EGL image cache. For this pipeline:
gst-launch-1.0 v4l2src ! tee name=t \
t. ! queue ! glupload ! fakesink
t. ! queue ! glupload ! fakesink
this gets rid of the occasional critical error message:
GStreamer-CRITICAL **: 08:26:33.194: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3880 >
2023-02-07 19:32:14 +00:00
medithe
3943503fc1
gstreamer: bin: Don't unlock unlocked mutex in gst_bin_remove_func()
...
Calling `g_mutex_unlock(mutex)` leads to an undefined behavior if the
mutex is not locked by the current thread.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3903 >
2023-02-07 19:03:43 +02:00
Edward Hervey
d10f9a00e2
closedcaption: Don't leak caps event
...
All events that we handle should be unreffed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3902 >
2023-02-07 08:51:18 +01:00
Jan Schmidt
621604aa3e
webrtc: Calculate the jitter for remote-inbound-rtp stats
...
Populate the clock-rate in the internal stats structure, so
it can be used by the _get_stats_from_remote_rtp_source_stats()
method to calculate remote receivers' jitter.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3900 >
2023-02-07 04:58:04 +11:00
Jan Schmidt
615a019457
webrtcbin: Report full codec-stats for source pads
...
Use the current caps for webrtcbin srcpads, as received_caps
are only stored for sink pads based on incoming caps events.
Makes it so that webrtcbin stats reports contain fuller
codec information.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3900 >
2023-02-07 04:49:34 +11:00
Anders Hellerup Madsen
acb8f2ee5d
glstereosplit: use gst_display_ensure_context
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3843 >
2023-02-06 16:16:14 +01:00
Anders Hellerup Madsen
f0040149a0
glbasefilter: use gst_display_ensure_context
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3843 >
2023-02-06 16:15:46 +01:00
Anders Hellerup Madsen
ecd9a4e37c
glbasemixer: use gst_display_ensure_context
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3843 >
2023-02-06 16:15:06 +01:00
Anders Hellerup Madsen
7bee4619dd
glbasesrc: use gst_display_ensure_context
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3843 >
2023-02-06 16:14:34 +01:00
Anders Hellerup Madsen
0da0da69aa
gldisplay: Add gst_gl_display_ensure_context
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/439
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3843 >
2023-02-06 16:14:07 +01:00
Adrian Fiergolski
06b778e0a1
avtp: specify the required version of libavtp
...
Support of RVF requires libavtp in version 0.2.0 at least.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3897 >
2023-02-06 13:31:51 +00:00
Enrique Ocaña González
92a4cfe20f
qtdemux: Don't emit GstSegment correcting start time when in MSE mode
...
When using qtdemux in a pipeline that should only work as a pure demuxer (not
for actual playback), qtdemux shouldn't emit new GstSegments to correct
the start time (jump to the future) to ensure that the user experiences no
playback delay. By doing so, it's generating the wrong segments when an append
of data from the past happens. When that happens, downstream elements such as
parsers (eg: aacparse) may clip those buffers laying before the GstSegment and
create problems on the GStreamer client app (eg: WebKit).
Getting buffers clipped out because of the wrong GstSegments started becoming
a problen when this commit was introduced:
ab6e49e9cc
audioparsers: add back segment clipping to parsers that have lost it
This clipping makes test DASH shaka 35 from MVT tests[1] to fail in
WebKitGTK/WPE (at least) and can potentially cause a number of other problems
in the WebKit Media Source Extensions (MSE) code.
Note that this new behaviour of not emitting new GstSegments only makes sense
when qtdemux is being used as a pure demuxer and not as part of a regular
pipeline. This is why the variant field has been added. When equal to
VARIANT_MSE_BYTESTREAM, it will make qtdemux behave differently in push mode,
taking decisions that meet the expectations for an MSE-like processing mode.
This kind of tweaks have been done in the past for MSS streams, for instance.
That code has been refactored to use VARIANT_MSS_FRAGMENTED now, instead of
its own dedicated boolean flag.
Co-authored by: Alicia Boya García <ntrrgc@gmail.com>
...who suggested to use "variant: mse-bytestream" in the caps to identify that
mode, as proposed in her unmerged patch:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/467
[1] https://github.com/rdkcentral/mvt
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3867 >
2023-02-06 12:42:49 +00:00
Nirbheek Chauhan
77b8547586
meson: Allow sysdeps to be forced as fallback subprojects
...
The original code was too complicated; likely created before the
provide section existed for wraps:
https://mesonbuild.com/Wrap-dependency-system-manual.html#provide-section
Now you can do --force-fallback-for=pygobject and it'll actually work.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3804 >
2023-02-06 09:26:02 +00:00
Ma, Mingyang
99cdc3a965
msdkenc: Let runtime decide parameters
...
Some parameters can be determined by runtime instead of default values. So unset the default and let runtime choose the best parameters
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3660 >
2023-02-06 02:24:54 +00:00
Nirbheek Chauhan
033a71e405
webrtc examples: Use webrtc.gstreamer.net
...
Actually just a CNAME to webrtc.nirbheek.in for now, but it allows
replacement / hosting without my involvement, so reduces the bus
factor.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3802 >
2023-02-04 13:37:02 +00:00
Sebastian Dröge
a0ccb6b558
svtav1enc: Use G_DECLARE_FINAL_TYPE and GST_ELEMENT_REGISTER_DEFINE
2023-02-03 22:14:18 +02:00
Sebastian Dröge
aca2bad25c
svtav1enc: Fix compilation with SVT-AV1 1.1 and drop GStreamer 1.16 compatibility
2023-02-03 22:14:18 +02:00
Sebastian Dröge
5bc92375c9
svtav1enc: Fix indentation
2023-02-03 22:14:18 +02:00
Sebastian Dröge
7890a1f8c7
svtav1: Integrate into the build system properly
2023-02-03 22:14:18 +02:00
Sebastian Dröge
b15efacf84
svtav1: Merge SVT-AV1 encoder into gst-plugins-bad
...
This is based on d5e1e2a586020854733f6b0806064d0c900c88d2 from
https://gitlab.com/AOMediaCodec/SVT-AV1 .
2023-02-03 22:13:30 +02:00
Sebastian Dröge
716aaa562b
net: ptp: Use GSubprocess instead of lower-level GLib APIs that don't work on Windows
...
libgstnet depends on GIO already anyway so we can as well make use of it
instead of a half-baked Windows implementation that doesn't actually
work.
As a next step, the helper process also needs to be made usable on
Windows.
See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1259
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3887 >
2023-02-03 18:51:17 +00:00
Tim-Philipp Müller
85476eab08
kms: drop use of GSlice allocator and remove unnecessary check
...
g_new0() will never return NULL but just abort if it can't
allocate memory (same for g_slice_new).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3784 >
2023-02-03 17:48:10 +00:00
Tim-Philipp Müller
35405de344
shm: drop use of GSlice allocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3784 >
2023-02-03 17:48:10 +00:00
Tim-Philipp Müller
3f94d7ec37
midiparse: drop use of GSlice allocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3784 >
2023-02-03 17:48:10 +00:00
Tim-Philipp Müller
d95d3e39af
cc708overlay: bump pango requirement and drop no longer required locking
...
Gets rid of GSlice allocation that's never freed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3784 >
2023-02-03 17:48:10 +00:00
Tim-Philipp Müller
7679011d1d
validate: drop use of GSlice allocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3784 >
2023-02-03 17:48:10 +00:00
Tim-Philipp Müller
cae6c6c73a
gst-omx: drop use of GSlice allocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3784 >
2023-02-03 17:48:10 +00:00
Tim-Philipp Müller
0d9bdf238c
gst-docs: drop use of GSlice in example code
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3784 >
2023-02-03 17:48:09 +00:00
Tim-Philipp Müller
18a3c32323
ges: drop use of GSlice allocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3784 >
2023-02-03 17:48:09 +00:00
Tim-Philipp Müller
f8817a8e8d
ges: nle: drop use of GSlice allocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3784 >
2023-02-03 17:48:09 +00:00
Tim-Philipp Müller
06e9d78ade
gst-examples: drop use of GSlice allocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3784 >
2023-02-03 17:48:09 +00:00
Tim-Philipp Müller
8a047a619e
gst-libav: drop use of GSlice allocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3784 >
2023-02-03 17:48:09 +00:00
Tim-Philipp Müller
f5977dae15
rtsp-server: drop use of GSlice allocator
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3784 >
2023-02-03 17:48:09 +00:00
Edward Hervey
0639f117cb
hlsdemux2: Remove enable-llhls property
...
This was only used for testing purposes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:24 +00:00
Edward Hervey
854683c871
hlsdemux2: Don't leak PDT datetime
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:24 +00:00
Edward Hervey
96613c45fb
adaptivedemux2: Don't leak taglist
...
Clarify the ownership in the documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:24 +00:00
Edward Hervey
123030feac
adaptivedemux2: Don't leak track tags
...
The tags are fully transfered to this function
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
6f6c0cbbaf
adaptivedemux2: Log request duration in debug output
...
When completing, log how long a HTTP request took into the debug output.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Edward Hervey
714628f1ec
hlsdemux2: Improve live playlist update intervals
...
The live playlists should be updated at a defined interval. The problem is that
this interval was used *after* the playlist was finally received and processed,
which resulted in a gradual shift happening in playlist updates.
Instead store and use the time at which playlists were requested to determine
when the next one should be downloaded.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Edward Hervey
6684aee14c
hlsdemux2: Fix playlist reload interval when unchanged
...
When falling back to using the regular last segment, use that duration as the
identical-playlist reload interval (and not the playlist target duration which
could be much larger)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Edward Hervey
5935c8049a
hlsdemux2: Fix position searching
...
The scanning is done in a reverse order, the proper full checks to do are
therefore:
* If the position is beyond half a "segment duration", it's in the following
segment
* If the position is within the first half of a segment, it's in that one
* If the segment is the first one and the position is within half a duration
backwards, we consider the position as being within that first segment
Also handle the case where a "partial only" segment doesn't have a reliable
duration, and therefore use the playlist target duration instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Edward Hervey
1c6364673d
hlsdemux2: Handle all cases for starting segment calculation
...
The implementation wouldn't work with regular HLS streams (i.e. the final
fallback).
Now that the implementation uses time to search for the starting
segment (instead of just the n-th from the end), we can specify the correct
hold_back fallback value from the RFC
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Edward Hervey
3129970c8a
hlsdemux2: Fix buffering threshold calculation and handling
...
* The checks for smaller values were wrong
* Properly initialize the stream default recommended buffering threshold so that
a default (10s) value is used until the subclass can provide a proper value
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Edward Hervey
eb1eb64506
hlsdemux2: Make sure simple media playlist is properly primed
...
By setting/propagating stream time initially
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
3d0e8aa07e
adaptivedemux2: Fix manifest access during seeking query
...
Avoid a deadlock if a downstream seeking query happens while the scheduler
thread is holding the manifest lock (for example during a seek back to live).
Instead, do a more elaborate fix where the external calls that need access to a
'manifest' access a copy that's updated during a manually triggered manifest
update callback.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
5334007a0b
adaptivedemux2: Symbol hygiene cleanup
...
Rename track_dequeue_data_locked() to
gst_adaptive_demux_track_dequeue_data_locked(), since it's non-static.
Make find_stream_for_track_locked() static since it's only used in the main
gstadaptivedemux.c file.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
6bb74ed2a0
adaptivedemux2: Fix download error handling more
...
gst_adaptive_demux2_stream_finish_download() will already schedule another
fragment download if it can so don't fall through to the retry code that will
also try and schedule a download (triggering an assert).
Fix the logic in general to retry advancing into the live seek range once.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
b1354058e1
hlsdemux2: Immediately request playlist after URI changes
...
When the stream switches to a new playlist / variant while the loader is waiting
on a timer to refresh the old playlist, cancel the timer and submit the request
for the new URI.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
6d7d3d93e6
hlsdemux2: Re-add support for fallback variant URLs
...
fallback variant URLs get accumulated into a list in the variant now. If there's
one available, switch to it after a variant update failure (failure to load the
variant 3 times)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
d5b8929315
hlsdemux2: Demote log message
...
Don't complain loudly about replacing the current pending playlist, just log it
at debug level
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
91c8f3f990
hlsdemux2: Wait for playlist load after a switch
...
Check in update_fragment_info() if the playlist we want has actually been loaded
yet, and return BUSY if not.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
2b93dae59a
hlsdemux2: Handle async playlist loading failures
...
Add failed variant playlists to a list and failover to other variants until
there is none left
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
454779f094
hlsdemux2: Wait for playlist switch during seek.
...
When switching to/from an iframe variant to do seeking, wait for the target
playlist to load before handling the seek.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
fe41db92db
hlsdemux2/playlist-loader: Implement more features
...
Implement limited retries on download errors before reporting it, and remember
permanent redirects, with LL-HLS directives removed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
9ae3978c72
hlsdemuxdemux2: Consider the hold-back when calculating seek range
...
When calculating the seek range for a live stream, use the same hold-back logic
as when choosing a starting segment, including low-latency segments if
enabled. Permits seeking closer to the live edge when re-synching or catching
up.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
083538df9e
hlsdemux2: Continue reworking code for async playlist updates
...
Everything is working again now except for corner cases:
- Failing over to another playlist after a load failure
- Remembering playlist redirects and using that URI
directly next time.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
93d92d5ddf
adaptivedemux2: Handle more async stream cases
...
Handle BUSY flow returns when making calls from external threads, and inhibit
fragment downloads during stream prepare
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
7b3a1bac0a
hlsdemux2: Add llhls-enabled property to streams
...
Tidying: Make the llhls-enabled setting configurable through a stream property
instead of set manually after construction.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
d5edd48f13
hlsdemux2: Add gst_hls_demux_stream_set_playlist_uri
...
Add a method that configures the new playlist URI for a stream.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Edward Hervey
2c822735ba
hlsdemux2: Add HLS playlist loader
...
Add a helper that asynchronously loads and refreshes the playlist for HLS
streams.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
52d577eee1
adaptivedemux2: Fix for failed download handling
...
When playing at the live edge of a live playlist, and a download fails, we don't
expect there to be a next fragment. That case is handled lower down anyway, so
don't retry infinitely on spurious http errors at the live edge.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
ceda805abb
adaptivedemux2: Drop segment lock on stream_seek error.
...
If stream_seek() fails, make sure to drop the segment lock before bailing out.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
44d3751d68
adaptivedemux2: Add gst_adaptive_demux2_stream_wait_prepared()
...
Add a method that waits for a stream to signal the prepare_cond after it returns
a BUSY flow return.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
d3acafbb5a
adaptivedemux2: Remove gst_adaptive_demux2_stream_has_selected_tracks
...
Use gst_adaptive_demux2_stream_is_selected_locked() instead, which is identical
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
8d0c7d9d93
adaptivedemux2: Move GST_ADAPTIVE_DEMUX_FLOW_BUSY to adaptivedemux.h
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
0962908e62
adaptivedemux2: Add start/stop vfuncs
...
Remove the can_start() vfunc, in favour of vfuncs when the stream starts/stops,
allowing the sub-class to do custom logic before (or preventing) the stream from
starting and stopping.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
fa0e9e2ec5
hlsdemux2: Remove unused function argument
...
Remove the demux argument from the
gst_hls_demux_stream_update_rendition_playlist() method
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
67bc8d7cc0
adaptivedemux2: Add gst_adaptive_demux_get_loop()
...
Add an accessor function for retrieving the demuxer's scheduler thread loop.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
2082c8912d
adaptivedemux2: Add gst_adaptive_demux_period_add_stream()
...
Make a function for adding a stream to a period, for better encapsulation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
82839fb82f
adaptivedemux2: Add new flow return value for BUSY and PREPARE stream state
...
Neither are used yet, they're just placeholders.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Edward Hervey
b03e68ea8c
hlsdemux2: support old compilers
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:23 +00:00
Jan Schmidt
1cede1d0cf
hlsdemux2: Place HLS delivery directives in UTF-8 order.
...
Use new GstURI gst_uri_to_string_with_keys() API to produce the playlist URI
with query arguments in UTF-8 order.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:22 +00:00
Jan Schmidt
21cb739830
hlsdemux2: Avoid assert in _has_next_fragment()
...
gst_hls_demux_stream_has_next_fragment() can be called with a NULL
current_segment if we're past the end of the current playlist. In that case,
just return FALSE instead of hitting a critical in the playlist code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:22 +00:00
Jan Schmidt
018a6192bd
hlsdemux2: Include skipped segments in MSN calculation
...
When a playlist has skipped segments, increment the MSN to account for them so
the remaining segments end up with the right sequence numbers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:22 +00:00
Jan Schmidt
268a25b979
hlsdemux2: Use partial segment for playlist update interval
...
When playing LL-HLS playlists in LL-HLS mode, update the playlist more often (on
the partial segment interval) or else we end up downloading them in bursts and
playing further from the live edge than intended.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:22 +00:00
Jan Schmidt
55f6cd9243
hlsdemux2: Do a full playlist reload if delta fails
...
If we do a delta playlist request but then can't merge the result with the
existing playlist, retry with a full playlist request.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:22 +00:00
Jan Schmidt
874b665710
hlsdemux2: Fill in skipped segments if possible
...
After reloading a playlist using a delta request, use the previous playlist to
fill in skipped segments if possible.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:22 +00:00
Jan Schmidt
703d29549a
hlsdemux2: Add gst_hls_media_playlist_sync_skipped_segments()
...
Add a method that transfers over skipped segments from a reference playlist,
used to repopulate a delta playlist
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:22 +00:00
Jan Schmidt
7496d2750e
hlsdemux2: Parse EXT-X-SKIP tag
...
Parse the attributes from the EXT-X-SKIP tag
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:22 +00:00
Jan Schmidt
8a0190b521
hlsdemux2: Use skip and blocking playlist delivery directives
...
Detect when we can use a blocking request and delta playlist update requests and
add the required delivery directives to the request URI.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:22 +00:00
Jan Schmidt
c16366e5f3
hlsdemux2: Add gst_hls_media_playlist_get_next_msn_and_part()
...
Add a function that computes the media sequence number and/or part index that
are immediately after the end of the playlist, for use in blocking playlist
requests
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3883 >
2023-02-03 16:52:22 +00:00