Start of changing frame numbers to time.
[dcpomatic.git] / src / lib / audio_decoder.cc
index 0ed3505cf2aa959c93c06e9c4d16528a5e36bb16..a73ad4d7c4c2e510b129937fa47b7eba9bdf7595 100644 (file)
@@ -34,28 +34,23 @@ using boost::shared_ptr;
 
 AudioDecoder::AudioDecoder (shared_ptr<const Film> film, shared_ptr<const AudioContent> content)
        : Decoder (film)
-       , _audio_position (0)
+       , _audio_content (content)
 {
-       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)
+AudioDecoder::audio (shared_ptr<const AudioBuffers> data, ContentTime time)
+{
+       Audio (data, time);
+}
+
+/** 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
 {
-       /* XXX: no-one's calling _resampler->flush() again */
-       
-       if (_resampler) {
-               data = _resampler->run (data);
-       } 
-
-       Audio (data, _audio_position);
-       _audio_position = frame + data->frames ();
+       return _audio_content->audio_channels () > 0;
 }