1
0
mirror of https://github.com/mpv-player/mpv synced 2025-02-17 21:27:08 +00:00

audio: fix timestamps

Accidentally broken in b6af44d3. For ad_lavc (and in general), the PTS
was not updated correctly when filtering only parts of audio frames,
and for ad_mpg123 and ad_spdif the PTS was additionally offset by the
frame size.

This could lead to incorrect time display, and possibly broken A/V sync.
This commit is contained in:
wm4 2014-07-24 15:27:31 +02:00
parent fc28e4af4d
commit 69eb056333
3 changed files with 1 additions and 2 deletions

View File

@ -257,7 +257,6 @@ static int decode_packet(struct dec_audio *da)
int got_samples = bytes / con->sample_size; int got_samples = bytes / con->sample_size;
da->decoded.planes[0] = audio; da->decoded.planes[0] = audio;
da->decoded.samples = got_samples; da->decoded.samples = got_samples;
da->pts_offset += got_samples;
update_info(da); update_info(da);
return 0; return 0;

View File

@ -211,7 +211,6 @@ static int decode_packet(struct dec_audio *da)
da->decoded.planes[0] = spdif_ctx->out_buffer; da->decoded.planes[0] = spdif_ctx->out_buffer;
da->decoded.samples = spdif_ctx->out_buffer_len / da->decoded.sstride; da->decoded.samples = spdif_ctx->out_buffer_len / da->decoded.sstride;
da->pts_offset += da->decoded.samples;
return 0; return 0;
} }

View File

@ -262,6 +262,7 @@ static int filter_n_bytes(struct dec_audio *da, struct mp_audio_buffer *outbuf,
append.samples = copy; append.samples = copy;
mp_audio_buffer_append(da->decode_buffer, &append); mp_audio_buffer_append(da->decode_buffer, &append);
mp_audio_skip_samples(&da->decoded, copy); mp_audio_skip_samples(&da->decoded, copy);
da->pts_offset += copy;
continue; continue;
} }
error = da->ad_driver->decode_packet(da); error = da->ad_driver->decode_packet(da);