mirror of
https://github.com/mpv-player/mpv
synced 2024-12-28 10:02:17 +00:00
287166b02e
There are 3 packet reading functions in the demux API, which all function completely differently. One of them, demux_read_packet(), has only 1 caller, which is in dec_sub.c. Change this caller to use demux_read_packet_async() instead. Since it really wants to do a blocking call, setup some proper waiting. This uses mp_dispatch_queue, because even though it's overkill, it needs the least code. In practice, waiting actually never happens. This code is only called on code paths where everything is already read into memory (libavformat's subtitle demuxers simply behave this way). It's still a bit of a "coincidence", so implement it properly anyway. If suubtitle decoder init fails, we still need to unset the demuxer wakeup callback. Add a sub_destroy() call to the failure path. This also happens to fix a missed pthread_mutex_destroy() call (in practice this was a nop, or a memory leak on BSDs). |
||
---|---|---|
.. | ||
ass_mp.c | ||
ass_mp.h | ||
dec_sub.c | ||
dec_sub.h | ||
draw_bmp.c | ||
draw_bmp.h | ||
filter_sdh.c | ||
img_convert.c | ||
img_convert.h | ||
lavc_conv.c | ||
osd_dummy.c | ||
osd_font.otf | ||
osd_libass.c | ||
osd_state.h | ||
osd.c | ||
osd.h | ||
sd_ass.c | ||
sd_lavc.c | ||
sd.h |