Various bits and pieces.
[dcpomatic.git] / src / lib / ffmpeg_content.h
index 6c141b6c13173ae111cfc01b2ef690a73956e425..d5b9869967074de0347244ebaec3c6ebbab17f3e 100644 (file)
@@ -34,6 +34,7 @@ public:
                 , id (i)
                 , frame_rate (f)
                , channels (c)
+               , mapping (c)
         {}
 
        FFmpegAudioStream (boost::shared_ptr<const cxml::Node>);
@@ -44,6 +45,7 @@ public:
         int id;
         int frame_rate;
        int channels;
+       AudioMapping mapping;
 };
 
 extern bool operator== (FFmpegAudioStream const & a, FFmpegAudioStream const & b);
@@ -78,55 +80,56 @@ public:
 class FFmpegContent : public VideoContent, public AudioContent
 {
 public:
-       FFmpegContent (boost::filesystem::path);
-       FFmpegContent (boost::shared_ptr<const cxml::Node>);
+       FFmpegContent (boost::shared_ptr<const Film>, boost::filesystem::path);
+       FFmpegContent (boost::shared_ptr<const Film>, boost::shared_ptr<const cxml::Node>);
        FFmpegContent (FFmpegContent const &);
 
        boost::shared_ptr<FFmpegContent> shared_from_this () {
                return boost::dynamic_pointer_cast<FFmpegContent> (Content::shared_from_this ());
        }
        
-       void examine (boost::shared_ptr<Film>, boost::shared_ptr<Job>, bool);
+       void examine (boost::shared_ptr<Job>);
        std::string summary () const;
        std::string information () const;
        void as_xml (xmlpp::Node *) const;
        boost::shared_ptr<Content> clone () const;
-       Time length (boost::shared_ptr<const Film>) const;
+       Time length () const;
 
         /* AudioContent */
         int audio_channels () const;
         ContentAudioFrame audio_length () const;
         int content_audio_frame_rate () const;
-        int output_audio_frame_rate (boost::shared_ptr<const Film>) const;
+        int output_audio_frame_rate () const;
+       AudioMapping audio_mapping () const;
        
-        std::vector<FFmpegSubtitleStream> subtitle_streams () const {
+        std::vector<boost::shared_ptr<FFmpegSubtitleStream> > subtitle_streams () const {
                 boost::mutex::scoped_lock lm (_mutex);
                 return _subtitle_streams;
         }
 
-        boost::optional<FFmpegSubtitleStream> subtitle_stream () const {
+        boost::shared_ptr<FFmpegSubtitleStream> subtitle_stream () const {
                 boost::mutex::scoped_lock lm (_mutex);
                 return _subtitle_stream;
         }
 
-        std::vector<FFmpegAudioStream> audio_streams () const {
+        std::vector<boost::shared_ptr<FFmpegAudioStream> > audio_streams () const {
                 boost::mutex::scoped_lock lm (_mutex);
                 return _audio_streams;
         }
         
-        boost::optional<FFmpegAudioStream> audio_stream () const {
+        boost::shared_ptr<FFmpegAudioStream> audio_stream () const {
                 boost::mutex::scoped_lock lm (_mutex);
                 return _audio_stream;
         }
 
-        void set_subtitle_stream (FFmpegSubtitleStream);
-        void set_audio_stream (FFmpegAudioStream);
+        void set_subtitle_stream (boost::shared_ptr<FFmpegSubtitleStream>);
+        void set_audio_stream (boost::shared_ptr<FFmpegAudioStream>);
        
 private:
-       std::vector<FFmpegSubtitleStream> _subtitle_streams;
-       boost::optional<FFmpegSubtitleStream> _subtitle_stream;
-       std::vector<FFmpegAudioStream> _audio_streams;
-       boost::optional<FFmpegAudioStream> _audio_stream;
+       std::vector<boost::shared_ptr<FFmpegSubtitleStream> > _subtitle_streams;
+       boost::shared_ptr<FFmpegSubtitleStream> _subtitle_stream;
+       std::vector<boost::shared_ptr<FFmpegAudioStream> > _audio_streams;
+       boost::shared_ptr<FFmpegAudioStream> _audio_stream;
 };
 
 #endif