summaryrefslogtreecommitdiff
path: root/src/lib/playlist.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-03-31 15:09:49 +0100
committerCarl Hetherington <cth@carlh.net>2013-03-31 15:09:49 +0100
commit127672223cca569986e35c91265e269ed5a6561c (patch)
tree853793c1b929d4c38ebdf5456808e466083989b7 /src/lib/playlist.h
parented78fd3d138114185e43edf81ffe91db17377da0 (diff)
Runs.
Diffstat (limited to 'src/lib/playlist.h')
-rw-r--r--src/lib/playlist.h56
1 files changed, 54 insertions, 2 deletions
diff --git a/src/lib/playlist.h b/src/lib/playlist.h
index 4add76344..b42d46036 100644
--- a/src/lib/playlist.h
+++ b/src/lib/playlist.h
@@ -17,14 +17,66 @@
*/
+#include <list>
#include <boost/shared_ptr.hpp>
+#include <boost/enable_shared_from_this.hpp>
#include "video_source.h"
+#include "audio_source.h"
#include "video_sink.h"
+#include "audio_sink.h"
class Content;
+class FFmpegContent;
+class FFmpegDecoder;
+class ImageMagickContent;
+class ImageMagickDecoder;
+class SndfileContent;
+class SndfileDecoder;
+class Job;
+class Film;
-class Playlist : public VideoSource, public AudioSource
+class Playlist : public VideoSource, public AudioSource, public VideoSink, public AudioSink, public boost::enable_shared_from_this<Playlist>
{
public:
- Playlist (std::list<boost::shared_ptr<Content> >);
+ Playlist (boost::shared_ptr<const Film>, std::list<boost::shared_ptr<Content> >);
+
+ ContentAudioFrame audio_length () const;
+ int audio_channels () const;
+ int audio_frame_rate () const;
+ int64_t audio_channel_layout () const;
+ bool has_audio () const;
+
+ float video_frame_rate () const;
+ libdcp::Size video_size () const;
+
+ void disable_video ();
+
+ bool pass ();
+ void set_progress (boost::shared_ptr<Job>);
+
+private:
+ void process_video (boost::shared_ptr<Image> i, bool same, boost::shared_ptr<Subtitle> s);
+ void process_audio (boost::shared_ptr<AudioBuffers>);
+
+ enum {
+ VIDEO_NONE,
+ VIDEO_FFMPEG,
+ VIDEO_IMAGEMAGICK
+ } _video_from;
+
+ enum {
+ AUDIO_NONE,
+ AUDIO_FFMPEG,
+ AUDIO_SNDFILE
+ } _audio_from;
+
+ boost::shared_ptr<FFmpegContent> _ffmpeg;
+ std::list<boost::shared_ptr<ImageMagickContent> > _imagemagick;
+ std::list<boost::shared_ptr<SndfileContent> > _sndfile;
+
+ boost::shared_ptr<FFmpegDecoder> _ffmpeg_decoder;
+ bool _ffmpeg_decoder_done;
+ std::list<boost::shared_ptr<ImageMagickDecoder> > _imagemagick_decoders;
+ std::list<boost::shared_ptr<ImageMagickDecoder> >::iterator _imagemagick_decoder;
+ std::list<boost::shared_ptr<SndfileDecoder> > _sndfile_decoders;
};