Use enum class for VideoRange.
[dcpomatic.git] / src / lib / audio_content.cc
index b513fb443de0ec3e6631914bf3a1f1299a8bfe87..c70afcda43576113f6f907e08f553db7c6e0f9e2 100644 (file)
@@ -27,7 +27,6 @@
 #include <dcp/raw_convert.h>
 #include <libcxml/cxml.h>
 #include <libxml++/libxml++.h>
-#include <boost/foreach.hpp>
 #include <iostream>
 
 #include "i18n.h"
@@ -39,10 +38,11 @@ using std::fixed;
 using std::list;
 using std::pair;
 using std::setprecision;
-using boost::shared_ptr;
-using boost::dynamic_pointer_cast;
+using std::shared_ptr;
+using std::dynamic_pointer_cast;
 using boost::optional;
 using dcp::raw_convert;
+using namespace dcpomatic;
 
 /** Something stream-related has changed */
 int const AudioContentProperty::STREAMS = 200;
@@ -136,7 +136,7 @@ string
 AudioContent::technical_summary () const
 {
        string s = "audio: ";
-       BOOST_FOREACH (AudioStreamPtr i, streams ()) {
+       for (auto i: streams()) {
                s += String::compose ("stream channels %1 rate %2 ", i->channels(), i->frame_rate());
        }
 
@@ -149,7 +149,7 @@ AudioContent::set_mapping (AudioMapping mapping)
        ChangeSignaller<Content> cc (_parent, AudioContentProperty::STREAMS);
 
        int c = 0;
-       BOOST_FOREACH (AudioStreamPtr i, streams ()) {
+       for (auto i: streams()) {
                AudioMapping stream_mapping (i->channels (), MAX_DCP_AUDIO_CHANNELS);
                for (int j = 0; j < i->channels(); ++j) {
                        for (int k = 0; k < MAX_DCP_AUDIO_CHANNELS; ++k) {
@@ -165,7 +165,7 @@ AudioMapping
 AudioContent::mapping () const
 {
        int channels = 0;
-       BOOST_FOREACH (AudioStreamPtr i, streams ()) {
+       for (auto i: streams()) {
                channels += i->channels ();
        }
 
@@ -174,7 +174,7 @@ AudioContent::mapping () const
 
        int c = 0;
        int s = 0;
-       BOOST_FOREACH (AudioStreamPtr i, streams ()) {
+       for (auto i: streams()) {
                AudioMapping mapping = i->mapping ();
                for (int j = 0; j < mapping.input_channels(); ++j) {
                        for (int k = 0; k < MAX_DCP_AUDIO_CHANNELS; ++k) {
@@ -196,8 +196,7 @@ AudioContent::mapping () const
 int
 AudioContent::resampled_frame_rate (shared_ptr<const Film> film) const
 {
-       /* Resample to a DCI-approved sample rate */
-       double t = has_rate_above_48k() ? 96000 : 48000;
+       double t = film->audio_frame_rate ();
 
        FrameRateChange frc (film, _parent);
 
@@ -232,7 +231,7 @@ AudioContent::processing_description (shared_ptr<const Film> film) const
        bool same = true;
 
        optional<int> common_frame_rate;
-       BOOST_FOREACH (AudioStreamPtr i, streams()) {
+       for (auto i: streams()) {
                if (i->frame_rate() != resampled_frame_rate(film)) {
                        resampled = true;
                } else {
@@ -264,31 +263,19 @@ AudioContent::processing_description (shared_ptr<const Film> film) const
        return "";
 }
 
-/** @return true if any stream in this content has a sampling rate of more than 48kHz */
-bool
-AudioContent::has_rate_above_48k () const
-{
-       BOOST_FOREACH (AudioStreamPtr i, streams ()) {
-               if (i->frame_rate() > 48000) {
-                       return true;
-               }
-       }
-
-       return false;
-}
-
 /** @return User-visible names of each of our audio channels */
-vector<string>
+vector<NamedChannel>
 AudioContent::channel_names () const
 {
-       vector<string> n;
+       vector<NamedChannel> n;
 
-       int t = 1;
-       BOOST_FOREACH (AudioStreamPtr i, streams ()) {
+       int index = 0;
+       int stream = 1;
+       for (auto i: streams()) {
                for (int j = 0; j < i->channels(); ++j) {
-                       n.push_back (String::compose ("%1:%2", t, j + 1));
+                       n.push_back (NamedChannel(String::compose ("%1:%2", stream, j + 1), index++));
                }
-               ++t;
+               ++stream;
        }
 
        return n;