#include <boost/thread/condition.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/thread.hpp>
+#ifdef HAVE_SWRESAMPLE
+extern "C" {
+#include <libswresample/swresample.h>
+}
+#endif
#include <sndfile.h>
#include "encoder.h"
-class Server;
+class ServerDescription;
class DCPVideoFrame;
class Image;
class Log;
+class Subtitle;
+class AudioBuffers;
/** @class J2KWAVEncoder
* @brief An encoder which writes JPEG2000 and WAV files.
J2KWAVEncoder (boost::shared_ptr<const FilmState>, boost::shared_ptr<const Options>, Log *);
~J2KWAVEncoder ();
- void process_begin ();
- void process_video (boost::shared_ptr<Image>, int);
- void process_audio (uint8_t *, int);
+ void process_begin (int64_t audio_channel_layout, AVSampleFormat audio_sample_format);
+ void process_video (boost::shared_ptr<Image>, int, boost::shared_ptr<Subtitle>);
+ void process_audio (boost::shared_ptr<const AudioBuffers>);
void process_end ();
-private:
+private:
- void encoder_thread (Server *);
+ void write_audio (boost::shared_ptr<const AudioBuffers> audio) const;
+ void encoder_thread (ServerDescription *);
void close_sound_files ();
void terminate_worker_threads ();
+#if HAVE_SWRESAMPLE
+ SwrContext* _swr_context;
+#endif
+
std::vector<SNDFILE*> _sound_files;
- int _deinterleave_buffer_size;
- uint8_t* _deinterleave_buffer;
bool _process_end;
std::list<boost::shared_ptr<DCPVideoFrame> > _queue;