Handle multiple audio streams in a single piece of content
[dcpomatic.git] / src / lib / audio_mapping.h
index 8be8eeb6fa030cfbb27099abdf4c18a4d9b3e519..e37beaeb26eb77dce33fd0a75a7ab8dee51d1086 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2013-2014 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2013-2015 Carl Hetherington <cth@carlh.net>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 
 */
 
+/** @file  src/lib/audio_mapping.h
+ *  @brief AudioMapping class.
+ */
+
 #ifndef DCPOMATIC_AUDIO_MAPPING_H
 #define DCPOMATIC_AUDIO_MAPPING_H
 
-#include <vector>
-#include <boost/shared_ptr.hpp>
-#include <dcp/types.h>
 #include <libcxml/cxml.h>
+#include <dcp/types.h>
+#include <boost/shared_ptr.hpp>
+#include <vector>
 
 namespace xmlpp {
        class Node;
@@ -33,7 +37,9 @@ namespace cxml {
        class Node;
 }
 
-/** A many-to-many mapping from some content channels to DCP channels.
+/** @class AudioMapping.
+ *  @brief A many-to-many mapping from some content channels to DCP channels.
+ *
  *  The number of content channels is set on construction and fixed,
  *  and then each of those content channels are mapped to each DCP channel
  *  by a linear gain.
@@ -58,13 +64,23 @@ public:
                return _content_channels;
        }
 
+       void set_name (int channel, std::string name);
+       std::string name (int channel) const {
+               return _name[channel];
+       }
+
        std::string digest () const;
+
+       std::list<dcp::Channel> mapped_dcp_channels () const;
+       void unmap_all ();
        
 private:
        void setup (int);
+       void make_zero ();
        
        int _content_channels;
        std::vector<std::vector<float> > _gain;
+       std::vector<std::string> _name;
 };
 
 #endif