mirror of
https://github.com/mpv-player/mpv
synced 2025-04-11 04:01:31 +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)
|
static double written_audio_pts(struct MPContext *mpctx)
|
||||||
{
|
{
|
||||||
sh_audio_t *sh_audio = mpctx->sh_audio;
|
sh_audio_t *sh_audio = mpctx->sh_audio;
|
||||||
|
if (!sh_audio)
|
||||||
|
return MP_NOPTS_VALUE;
|
||||||
demux_stream_t *d_audio = mpctx->d_audio;
|
demux_stream_t *d_audio = mpctx->d_audio;
|
||||||
// first calculate the end pts of audio that has been output by decoder
|
// first calculate the end pts of audio that has been output by decoder
|
||||||
double a_pts = sh_audio->pts;
|
double a_pts = sh_audio->pts;
|
||||||
@ -4817,10 +4819,8 @@ goto_enable_cache:
|
|||||||
if (verbose)
|
if (verbose)
|
||||||
opts->term_osd = 0;
|
opts->term_osd = 0;
|
||||||
|
|
||||||
// Make sure old OSD does not stay around,
|
// Make sure old OSD does not stay around
|
||||||
// e.g. with -fixed-vo and same-resolution files
|
|
||||||
clear_osd_msgs();
|
clear_osd_msgs();
|
||||||
update_osd_msg(mpctx);
|
|
||||||
|
|
||||||
//================ SETUP AUDIO ==========================
|
//================ SETUP AUDIO ==========================
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user