diff options
author | wm4 <wm4@nowhere> | 2018-05-18 21:38:17 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2018-05-24 19:56:35 +0200 |
commit | 12d1404b04e90f5357882e5c1048d92305248cb9 (patch) | |
tree | 240ab8d9dfa37c63889a5608b7733fa8d5c31780 /demux | |
parent | f9713921a372aa14ea631b0c546d3fbeade32b71 (diff) | |
download | mpv-12d1404b04e90f5357882e5c1048d92305248cb9.tar.bz2 mpv-12d1404b04e90f5357882e5c1048d92305248cb9.tar.xz |
player: make various commands for managing external tracks abortable
Until now, they could be aborted only by ending playback, and calling
mpv_abort_async_command didn't do anything.
This requires furthering the mess how playback abort is done. The main
reason why mp_cancel exists at all is to avoid that a "frozen" demuxer
(blocked on network I/O or whatever) cannot freeze the core. The core
should always get its way. Previously, there was a single mp_cancel
handle, that could be signaled, and all demuxers would unfreeze. With
external files, we might want to abort loading of a certain external
file, which automatically means they need a separate mp_cancel. So give
every demuxer its own mp_cancel, and "slave" it to whatever parent
mp_cancel handles aborting.
Since the mpv demuxer API conflates creating the demuxer and reading the
file headers, mp_cancel strictly need to be created before the demuxer
is created (or we couldn't abort loading). Although we give every
demuxer its own mp_cancel (as "enforced" by cancel_and_free_demuxer),
it's still rather messy to create/destroy it along with the demuxer.
Diffstat (limited to 'demux')
0 files changed, 0 insertions, 0 deletions