summaryrefslogtreecommitdiff
path: root/src/lib/ffmpeg_decoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2014-01-03 23:18:47 +0000
committerCarl Hetherington <cth@carlh.net>2014-01-03 23:18:47 +0000
commitd7b23d44dec9d6357619e8e009e564e475215470 (patch)
tree0ac5251fbbe5c55da24499eb5c7b4194f90365bf /src/lib/ffmpeg_decoder.cc
parentf0e95aa5b7ada81a1c40f06facab2e94e45ab26c (diff)
Various attempted fixes to audio sync.
Diffstat (limited to 'src/lib/ffmpeg_decoder.cc')
-rw-r--r--src/lib/ffmpeg_decoder.cc20
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;
-}