diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-01-03 23:18:47 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-01-03 23:18:47 +0000 |
| commit | d7b23d44dec9d6357619e8e009e564e475215470 (patch) | |
| tree | 0ac5251fbbe5c55da24499eb5c7b4194f90365bf /src/lib/ffmpeg_decoder.cc | |
| parent | f0e95aa5b7ada81a1c40f06facab2e94e45ab26c (diff) | |
Various attempted fixes to audio sync.
Diffstat (limited to 'src/lib/ffmpeg_decoder.cc')
| -rw-r--r-- | src/lib/ffmpeg_decoder.cc | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index 25fe655be..dae0ddbe8 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -445,11 +445,17 @@ FFmpegDecoder::decode_audio_packet () } if (frame_finished) { + ContentTime const ct = ( + av_frame_get_best_effort_timestamp (_frame) * + av_q2d (_ffmpeg_content->audio_stream()->stream (_format_context)->time_base) + + _pts_offset + ) * TIME_HZ; + int const data_size = av_samples_get_buffer_size ( 0, audio_codec_context()->channels, _frame->nb_samples, audio_sample_format (), 1 ); - - audio (deinterleave_audio (_frame->data, data_size)); + + audio (deinterleave_audio (_frame->data, data_size), ct); } copy_packet.data += decode_result; @@ -603,13 +609,3 @@ FFmpegDecoder::decode_subtitle_packet () avsubtitle_free (&sub); } - -ContentTime -FFmpegDecoder::first_audio () const -{ - if (!_ffmpeg_content->audio_stream ()) { - return 0; - } - - return _ffmpeg_content->audio_stream()->first_audio.get_value_or(0) + _pts_offset; -} |
