#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}
+#include <boost/noncopyable.hpp>
-class FFmpegFileEncoder
+class FFmpegFileEncoder : public boost::noncopyable
{
public:
FFmpegFileEncoder (
int video_frame_rate,
int audio_frame_rate,
int channels,
- boost::shared_ptr<Log> log,
ExportFormat,
int x264_crf,
boost::filesystem::path output
);
+ ~FFmpegFileEncoder ();
+
void video (boost::shared_ptr<PlayerVideo>, DCPTime);
void audio (boost::shared_ptr<AudioBuffers>);
void subtitle (PlayerText, DCPTimePeriod);
void flush ();
+ static AVPixelFormat pixel_format (ExportFormat format);
+
private:
void setup_video ();
void setup_audio ();
dcp::Size _video_frame_size;
int _video_frame_rate;
int _audio_frame_rate;
- boost::shared_ptr<Log> _log;
boost::shared_ptr<AudioBuffers> _pending_audio;
their data have been passed to FFmpeg.
*/
std::map<uint8_t*, boost::shared_ptr<const Image> > _pending_images;
+ boost::mutex _pending_images_mutex;
static int _video_stream_index;
static int _audio_stream_index;