#include <sndfile.h>
#include "decoder.h"
#include "audio_decoder.h"
+#include "audio_examiner.h"
class SndfileContent;
-class SndfileDecoder : public AudioDecoder
+class SndfileDecoder : public AudioDecoder, public AudioExaminer
{
public:
- SndfileDecoder (boost::shared_ptr<const Film>, boost::shared_ptr<const SndfileContent>);
+ SndfileDecoder (boost::shared_ptr<const SndfileContent> c);
~SndfileDecoder ();
- bool pass ();
+ void seek (ContentTime, bool);
int audio_channels () const;
- ContentAudioFrame audio_length () const;
+ ContentTime audio_length () const;
int audio_frame_rate () const;
private:
- SNDFILE* open_file (sf_count_t &);
- void close_file (SNDFILE*);
-
+ bool pass ();
+
boost::shared_ptr<const SndfileContent> _sndfile_content;
SNDFILE* _sndfile;
SF_INFO _info;
- ContentAudioFrame _remaining;
+ int64_t _done;
+ int64_t _remaining;
+ float* _deinterleave_buffer;
};