Various more hacks; basically trying to remove Regions as an unnecessary complexity.
[dcpomatic.git] / src / lib / ffmpeg_content.h
index 8bf4d42a539aa07c2cd93793c9b27a4b5b9621cf..d79e4ec3556d6d9fae89eb8b5ade0e24d1bba143 100644 (file)
@@ -1,3 +1,5 @@
+/* -*- c-basic-offset: 8; default-tab-width: 8; -*- */
+
 /*
     Copyright (C) 2013 Carl Hetherington <cth@carlh.net>
 
@@ -32,6 +34,7 @@ public:
                 , id (i)
                 , frame_rate (f)
                , channels (c)
+               , mapping (c)
         {}
 
        FFmpegAudioStream (boost::shared_ptr<const cxml::Node>);
@@ -42,6 +45,7 @@ public:
         int id;
         int frame_rate;
        int channels;
+       AudioMapping mapping;
 };
 
 extern bool operator== (FFmpegAudioStream const & a, FFmpegAudioStream const & b);
@@ -89,40 +93,43 @@ public:
        std::string information () const;
        void as_xml (xmlpp::Node *) const;
        boost::shared_ptr<Content> clone () const;
+       Time length (boost::shared_ptr<const Film>) const;
 
         /* AudioContent */
         int audio_channels () const;
         ContentAudioFrame audio_length () const;
-        int audio_frame_rate () const;
+        int content_audio_frame_rate () const;
+        int output_audio_frame_rate (boost::shared_ptr<const Film>) 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