mirror of https://github.com/mpv-player/mpv
player/audio: invert audio_started boolean
Waiting for audio_started to be set to true takes too long which causes us to miss it for the first frame, instead invert the condition so it's set on the first frame. Fixes #14615
This commit is contained in:
parent
24f42acd1d
commit
11ed012c34
|
@ -213,6 +213,7 @@ static void ao_chain_reset_state(struct ao_chain *ao_c)
|
|||
ao_c->start_pts = MP_NOPTS_VALUE;
|
||||
ao_c->untimed_throttle = false;
|
||||
ao_c->underrun = false;
|
||||
ao_c->delaying_audio_start = false;
|
||||
}
|
||||
|
||||
void reset_audio_state(struct MPContext *mpctx)
|
||||
|
@ -841,12 +842,13 @@ void audio_start_ao(struct MPContext *mpctx)
|
|||
MP_VERBOSE(mpctx, "delaying audio start %f vs. %f, diff=%f\n",
|
||||
apts, pts, diff);
|
||||
mpctx->logged_async_diff = diff;
|
||||
ao_c->delaying_audio_start = true;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
MP_VERBOSE(mpctx, "starting audio playback\n");
|
||||
ao_c->audio_started = true;
|
||||
ao_c->delaying_audio_start = false;
|
||||
ao_start(ao_c->ao);
|
||||
mpctx->audio_status = STATUS_PLAYING;
|
||||
if (ao_c->out_eof) {
|
||||
|
|
|
@ -194,7 +194,7 @@ struct ao_chain {
|
|||
double start_pts;
|
||||
bool start_pts_known;
|
||||
|
||||
bool audio_started;
|
||||
bool delaying_audio_start;
|
||||
|
||||
struct track *track;
|
||||
struct mp_pin *filter_src;
|
||||
|
|
|
@ -388,7 +388,7 @@ static void handle_new_frame(struct MPContext *mpctx)
|
|||
}
|
||||
}
|
||||
mpctx->time_frame += frame_time / mpctx->video_speed;
|
||||
if (mpctx->ao_chain && mpctx->ao_chain->audio_started)
|
||||
if (mpctx->ao_chain && !mpctx->ao_chain->delaying_audio_start)
|
||||
mpctx->delay -= frame_time;
|
||||
if (mpctx->video_status >= STATUS_PLAYING)
|
||||
adjust_sync(mpctx, pts, frame_time);
|
||||
|
|
Loading…
Reference in New Issue