/*
- Copyright (C) 2012-2013 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
*/
-#include <sndfile.h>
#include "decoder.h"
#include "audio_decoder.h"
+#include "audio_examiner.h"
+#include <sndfile.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 ();
- void seek (ContentTime, bool);
-
int audio_channels () const;
- AudioContent::Frame audio_length () const;
+ Frame audio_length () const;
int audio_frame_rate () const;
private:
- bool has_audio () const {
- return true;
- }
- bool pass ();
+ bool pass (PassReason);
+ void seek (ContentTime, bool);
boost::shared_ptr<const SndfileContent> _sndfile_content;
SNDFILE* _sndfile;
SF_INFO _info;
- AudioContent::Frame _done;
- AudioContent::Frame _remaining;
+ int64_t _done;
+ int64_t _remaining;
float* _deinterleave_buffer;
};