gstreamer/ext/hls
Charlie Turner 659d76a633 adaptivedemux: remove some deadlocks using webkitwebsrc.
WebKit's websrc depends on the main-thread for download completion
rendezvous. This exposed a number of deadlocks in adaptivedemux due to
it holding the MANIFEST_LOCK during network requests, and also needing
to hold it to change_state and resolve queries, which frequently occur
during these download windows.

Make demux->running MT-safe so that it can be accessed without using the
MANIFEST_LOCK. In case a source is downloading and requires a MT-thread
notification for completion of the fragment download, a state change
during this download window will deadlock unless we cancel the downloads
and ensure they are not restarted before we finish the state-change.

Also make demux->priv->have_manifest MT-safe. A duration query happening
in the window described above can deadlock for the same reason. Other
src queries (like SEEKING) that happen in this window also could
deadlock, but I haven't hit this scenario.

Increase granularity of API_LOCK'ing in change_state as well. We need to
cancel downloads before trying to take this lock, since sink events
(EOS) will hold it before starting a fragment download.
2019-07-29 13:19:41 +01:00
..
gsthls.h hls: rename plugin from fragmented to hls 2015-12-01 17:51:34 +00:00
gsthlsdemux-util.c hls: Remove stray '\n' from debug statement 2018-10-22 09:59:24 +02:00
gsthlsdemux.c adaptivedemux: remove some deadlocks using webkitwebsrc. 2019-07-29 13:19:41 +01:00
gsthlsdemux.h hlsdemux: fix compilation with OpenSSL 1.1.0 2017-09-05 15:54:48 +03:00
gsthlsplugin.c hlssink2: New HLS sink element based on splitmuxsink 2017-05-12 12:03:10 +02:00
gsthlssink.c hlssink: Remove some unused struct fields 2017-04-19 12:36:46 +01:00
gsthlssink.h hlssink: Remove some unused struct fields 2017-04-19 12:36:46 +01:00
gsthlssink2.c hlssink2: Add property for disabling sending of force-keyunit events 2019-02-27 21:01:34 +00:00
gsthlssink2.h hlssink2: Add property for disabling sending of force-keyunit events 2019-02-27 21:01:34 +00:00
gstm3u8playlist.c hls: rename plugin from fragmented to hls 2015-12-01 17:51:34 +00:00
gstm3u8playlist.h hls: m3u8playlist: more clean-ups 2015-09-30 00:43:26 +01:00
m3u8.c hls: m3u8: Parsing EXT-X-MAP tag to store initialization data 2019-06-18 07:14:28 +00:00
m3u8.h hls: m3u8: Parsing EXT-X-MAP tag to store initialization data 2019-06-18 07:14:28 +00:00
Makefile.am Remove plugin specific static build option 2017-05-16 14:05:52 -04:00
meson.build tests: Enable hls m3u8 unit test with meson build 2019-06-18 07:14:28 +00:00