+ int c = 0;
+ BOOST_FOREACH (AudioStreamPtr i, audio_streams ()) {
+ AudioMapping stream_mapping (i->channels ());
+ for (int j = 0; j < i->channels(); ++j) {
+ for (int k = 0; k < MAX_DCP_AUDIO_CHANNELS; ++k) {
+ stream_mapping.set (j, static_cast<dcp::Channel> (k), mapping.get (c, static_cast<dcp::Channel> (k)));
+ }
+ ++c;
+ }
+ i->set_mapping (stream_mapping);
+ }
+
+ signal_changed (AudioContentProperty::AUDIO_STREAMS);
+}
+
+AudioMapping
+AudioContent::audio_mapping () const
+{
+ int channels = 0;
+ BOOST_FOREACH (AudioStreamPtr i, audio_streams ()) {
+ channels += i->channels ();
+ }
+
+ AudioMapping merged (channels);
+
+ int c = 0;
+ int s = 0;
+ BOOST_FOREACH (AudioStreamPtr i, audio_streams ()) {
+ AudioMapping mapping = i->mapping ();
+ for (int j = 0; j < mapping.content_channels(); ++j) {
+ merged.set_name (c, String::compose ("%1:%2", s + 1, j + 1));
+ for (int k = 0; k < MAX_DCP_AUDIO_CHANNELS; ++k) {
+ merged.set (c, static_cast<dcp::Channel> (k), mapping.get (j, static_cast<dcp::Channel> (k)));
+ }
+ ++c;
+ }
+ ++s;
+ }
+
+ return merged;