mirror of
https://github.com/mpv-player/mpv
synced 2025-03-31 07:51:55 +00:00
core: fix attempt to get audio pts without audio
written_audio_pts() can be called even if no audio track is active (at least through get_current_time() when there's no known video PTS). This triggered a crash due to NULL dereference. Add a check to return MP_NOPTS_VALUE if no audio track exists. Also remove a questionable update_osd_msg() call from per-file initialization code. The call was at a point where an audio track might be selected but not properly initialized, possibly also causing a crash if update_osd_msg() queries current position. I don't see any reason why the call would have been needed; it should get called anyway before OSD contents are actually used for the new file.
This commit is contained in:
parent
2e8119be9a
commit
65b24e46a1
@ -1846,6 +1846,8 @@ init_error:
|
||||
static double written_audio_pts(struct MPContext *mpctx)
|
||||
{
|
||||
sh_audio_t *sh_audio = mpctx->sh_audio;
|
||||
if (!sh_audio)
|
||||
return MP_NOPTS_VALUE;
|
||||
demux_stream_t *d_audio = mpctx->d_audio;
|
||||
// first calculate the end pts of audio that has been output by decoder
|
||||
double a_pts = sh_audio->pts;
|
||||
@ -4817,10 +4819,8 @@ goto_enable_cache:
|
||||
if (verbose)
|
||||
opts->term_osd = 0;
|
||||
|
||||
// Make sure old OSD does not stay around,
|
||||
// e.g. with -fixed-vo and same-resolution files
|
||||
// Make sure old OSD does not stay around
|
||||
clear_osd_msgs();
|
||||
update_osd_msg(mpctx);
|
||||
|
||||
//================ SETUP AUDIO ==========================
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user