1
0
mirror of https://github.com/mpv-player/mpv synced 2024-12-26 00:42:57 +00:00

player: minor changes

This shouldn't change anything functionally.

Change the A/V desync message. --framedrop is enabled by default now, so
the text must be changed a little. I've never heard of audio outputs
messing up A/V sync recently, so remove that part.

Remove the unused ao_pts field.

Reorder 2 A/V sync related expressions so that they look the same.
This commit is contained in:
wm4 2014-08-25 21:28:56 +02:00
parent f4ccf22e16
commit f104ef1282
3 changed files with 6 additions and 16 deletions

View File

@ -276,7 +276,6 @@ static int write_to_ao(struct MPContext *mpctx, struct mp_audio *data, int flags
struct ao *ao = mpctx->ao; struct ao *ao = mpctx->ao;
struct mp_audio out_format; struct mp_audio out_format;
ao_get_format(ao, &out_format); ao_get_format(ao, &out_format);
mpctx->ao_pts = pts;
#if HAVE_ENCODING #if HAVE_ENCODING
encode_lavc_set_audio_pts(mpctx->encode_lavc_ctx, playing_audio_pts(mpctx)); encode_lavc_set_audio_pts(mpctx->encode_lavc_ctx, playing_audio_pts(mpctx));
#endif #endif
@ -288,9 +287,6 @@ static int write_to_ao(struct MPContext *mpctx, struct mp_audio *data, int flags
if (played > 0) { if (played > 0) {
mpctx->shown_aframes += played; mpctx->shown_aframes += played;
mpctx->delay += played / real_samplerate; mpctx->delay += played / real_samplerate;
// Keep correct pts for remaining data - could be used to flush
// remaining buffer when closing ao.
mpctx->ao_pts += played / real_samplerate;
return played; return played;
} }
return 0; return 0;
@ -343,7 +339,7 @@ static bool get_sync_samples(struct MPContext *mpctx, int *skip)
} }
if (sync_to_video) if (sync_to_video)
sync_pts += mpctx->delay - mpctx->audio_delay; sync_pts -= mpctx->audio_delay - mpctx->delay;
double ptsdiff = written_pts - sync_pts; double ptsdiff = written_pts - sync_pts;
// Missing timestamp, or PTS reset, or just broken. // Missing timestamp, or PTS reset, or just broken.

View File

@ -235,7 +235,6 @@ typedef struct MPContext {
struct mixer *mixer; struct mixer *mixer;
struct ao *ao; struct ao *ao;
double ao_pts;
struct mp_audio *ao_decoder_fmt; // for weak gapless audio check struct mp_audio *ao_decoder_fmt; // for weak gapless audio check
struct mp_audio_buffer *ao_buffer; // queued audio; passed to ao_play() later struct mp_audio_buffer *ao_buffer; // queued audio; passed to ao_play() later
@ -253,9 +252,9 @@ typedef struct MPContext {
double hrseek_pts; double hrseek_pts;
// AV sync: the next frame should be shown when the audio out has this // AV sync: the next frame should be shown when the audio out has this
// much (in seconds) buffered data left. Increased when more data is // much (in seconds) buffered data left. Increased when more data is
// written to the ao, decreased when moving to the next frame. // written to the ao, decreased when moving to the next video frame.
double delay; double delay;
// AV sync: time until next frame should be shown // AV sync: time in seconds until next frame should be shown
double time_frame; double time_frame;
// Optional/additional AV sync compensation if video is too slow. // Optional/additional AV sync compensation if video is too slow.
double insert_silence; double insert_silence;

View File

@ -66,13 +66,9 @@ static const char av_desync_help_text[] =
"Possible reasons, problems, workarounds:\n" "Possible reasons, problems, workarounds:\n"
"- Your system is simply too slow for this file.\n" "- Your system is simply too slow for this file.\n"
" Transcode it to a lower bitrate file with tools like HandBrake.\n" " Transcode it to a lower bitrate file with tools like HandBrake.\n"
"- Broken/buggy _audio_ driver.\n"
" Experiment with different values for --autosync, 30 is a good start.\n"
" If you have PulseAudio, try --ao=alsa .\n"
"- Slow video output.\n" "- Slow video output.\n"
" Try a different --vo driver (--vo=help for a list) or try --framedrop!\n" " Try a different --vo driver (--vo=help for a list). Make sure framedrop\n"
"- Playing a video file with --vo=opengl with higher FPS than the monitor.\n" " is not disabled, or experiment with different values for --framedrop.\n"
" This is due to vsync limiting the framerate.\n"
"- Playing from a slow network source.\n" "- Playing from a slow network source.\n"
" Download the file instead.\n" " Download the file instead.\n"
"- Try to find out whether audio/video/subs are causing this by experimenting\n" "- Try to find out whether audio/video/subs are causing this by experimenting\n"
@ -473,9 +469,8 @@ static void adjust_sync(struct MPContext *mpctx, double v_pts, double frame_time
if (mpctx->audio_status != STATUS_PLAYING) if (mpctx->audio_status != STATUS_PLAYING)
return; return;
double a_pts = written_audio_pts(mpctx) - mpctx->delay; double a_pts = written_audio_pts(mpctx) + mpctx->audio_delay - mpctx->delay;
double av_delay = a_pts - v_pts; double av_delay = a_pts - v_pts;
av_delay += mpctx->audio_delay; // This much pts difference is desired
double change = av_delay * 0.1; double change = av_delay * 0.1;
double max_change = opts->default_max_pts_correction >= 0 ? double max_change = opts->default_max_pts_correction >= 0 ?