summaryrefslogtreecommitdiff
path: root/src/lib/audio_decoder.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-07-25 22:04:20 +0100
committerCarl Hetherington <cth@carlh.net>2013-07-25 22:04:20 +0100
commit78e5a331074a456097a162d47501daf1df1ab1a3 (patch)
tree17dbc6cd0e3e6a4878277959d7cd86129fb516b4 /src/lib/audio_decoder.cc
parent991244a0d4be149e8733a8dd70bfd745cab72583 (diff)
Hopefully much cleaner handling of PTS changes under resample.
Diffstat (limited to 'src/lib/audio_decoder.cc')
-rw-r--r--src/lib/audio_decoder.cc28
1 files changed, 4 insertions, 24 deletions
diff --git a/src/lib/audio_decoder.cc b/src/lib/audio_decoder.cc
index 846cdf595..1f5868583 100644
--- a/src/lib/audio_decoder.cc
+++ b/src/lib/audio_decoder.cc
@@ -32,36 +32,16 @@ using std::cout;
using boost::optional;
using boost::shared_ptr;
-AudioDecoder::AudioDecoder (shared_ptr<const Film> film, shared_ptr<const AudioContent> content)
+AudioDecoder::AudioDecoder (shared_ptr<const Film> film)
: Decoder (film)
, _audio_position (0)
{
- if (content->content_audio_frame_rate() != content->output_audio_frame_rate() && content->audio_channels ()) {
- _resampler.reset (
- new Resampler (
- content->content_audio_frame_rate(),
- content->output_audio_frame_rate(),
- content->audio_channels()
- )
- );
- }
-}
-
-void
-AudioDecoder::audio (shared_ptr<const AudioBuffers> data, AudioContent::Frame)
-{
- if (_resampler) {
- data = _resampler->run (data);
- }
- Audio (data, _audio_position);
- _audio_position += data->frames ();
}
void
-AudioDecoder::flush ()
+AudioDecoder::audio (shared_ptr<const AudioBuffers> data, AudioContent::Frame frame)
{
- if (_resampler) {
- _resampler->flush ();
- }
+ Audio (data, frame);
+ _audio_position = frame + data->frames ();
}