Basic support for separate 3D left/right sources.
[dcpomatic.git] / src / lib / audio_decoder.cc
index cf9e3ac51a7e12a516c9946e4551a6546d45db52..c0ef02f65d5ab5518dcb7e53aa145b1ff3f9a598 100644 (file)
@@ -34,34 +34,25 @@ using boost::shared_ptr;
 
 AudioDecoder::AudioDecoder (shared_ptr<const Film> film, shared_ptr<const AudioContent> content)
        : Decoder (film)
+       , _audio_content (content)
        , _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 frame)
 {
-       if (_resampler) {
-               data = _resampler->run (data);
-       } 
-
-       Audio (data, _audio_position);
+       Audio (data, frame);
        _audio_position = frame + data->frames ();
 }
 
-void
-AudioDecoder::flush ()
+/** This is a bit odd, but necessary when we have (e.g.) FFmpegDecoders with no audio.
+ *  The player needs to know that there is no audio otherwise it will keep trying to
+ *  pass() the decoder to get it to emit audio.
+ */
+bool
+AudioDecoder::has_audio () const
 {
-       if (_resampler) {
-               _resampler->flush ();
-       }
+       return _audio_content->audio_channels () > 0;
 }