Another missing <iostream> include from Markus Kalb.
[dcpomatic.git] / src / lib / audio_decoder.cc
index e827a77b9198f44addfabd827e030fc260121bf5..30bd2540a01ac361523fabc792dafe9ac1e27caa 100644 (file)
@@ -17,6 +17,7 @@
 
 */
 
+#include <iostream>
 #include "audio_decoder.h"
 #include "audio_buffers.h"
 #include "exceptions.h"
@@ -25,7 +26,6 @@
 
 #include "i18n.h"
 
-using std::stringstream;
 using std::list;
 using std::pair;
 using std::cout;
@@ -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()) {
-               _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;
 }