From ba9fb85168d004d7643dc02f911fd173a136758b Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 25 Sep 2020 22:51:18 +0200 Subject: Add NamedChannel and use it to hide the never-used channels when mapping into a DCP. --- src/lib/audio_content.cc | 11 ++++++----- src/lib/audio_content.h | 2 +- src/lib/audio_processor.h | 3 ++- src/lib/film.cc | 8 +++++--- src/lib/film.h | 2 +- src/lib/mid_side_decoder.cc | 10 ++++------ src/lib/mid_side_decoder.h | 2 +- src/lib/types.cc | 7 +++++++ src/lib/types.h | 16 ++++++++++++++++ src/lib/upmixer_a.cc | 8 ++++---- src/lib/upmixer_a.h | 2 +- src/lib/upmixer_b.cc | 8 ++++---- src/lib/upmixer_b.h | 2 +- src/lib/util.cc | 3 --- 14 files changed, 53 insertions(+), 31 deletions(-) (limited to 'src/lib') diff --git a/src/lib/audio_content.cc b/src/lib/audio_content.cc index 014221f2e..22521c9e9 100644 --- a/src/lib/audio_content.cc +++ b/src/lib/audio_content.cc @@ -265,17 +265,18 @@ AudioContent::processing_description (shared_ptr film) const } /** @return User-visible names of each of our audio channels */ -vector +vector AudioContent::channel_names () const { - vector n; + vector n; - int t = 1; + int index = 0; + int stream = 1; BOOST_FOREACH (AudioStreamPtr 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; diff --git a/src/lib/audio_content.h b/src/lib/audio_content.h index 504c2aecf..b109cc15e 100644 --- a/src/lib/audio_content.h +++ b/src/lib/audio_content.h @@ -53,7 +53,7 @@ public: AudioMapping mapping () const; void set_mapping (AudioMapping); int resampled_frame_rate (boost::shared_ptr film) const; - std::vector channel_names () const; + std::vector channel_names () const; void set_gain (double); void set_delay (int); diff --git a/src/lib/audio_processor.h b/src/lib/audio_processor.h index 78a3efb58..194c9bf0e 100644 --- a/src/lib/audio_processor.h +++ b/src/lib/audio_processor.h @@ -25,6 +25,7 @@ #ifndef DCPOMATIC_AUDIO_PROCESSOR_H #define DCPOMATIC_AUDIO_PROCESSOR_H +#include "types.h" #include #include #include @@ -58,7 +59,7 @@ public: /** Make the supplied audio mapping into a sensible default for this processor */ virtual void make_audio_mapping_default (AudioMapping& mapping) const = 0; /** @return the user-visible (translated) names of each of our inputs, in order */ - virtual std::vector input_names () const = 0; + virtual std::vector input_names () const = 0; static std::list all (); static std::list visible (); diff --git a/src/lib/film.cc b/src/lib/film.cc index ea0a2bdd7..e2e77cce2 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -1707,7 +1707,7 @@ Film::subtitle_language () const /** @return The names of the channels that audio contents' outputs are passed into; * this is either the DCP or a AudioProcessor. */ -vector +vector Film::audio_output_names () const { if (audio_processor ()) { @@ -1716,10 +1716,12 @@ Film::audio_output_names () const DCPOMATIC_ASSERT (MAX_DCP_AUDIO_CHANNELS == 16); - vector n; + vector n; for (int i = 0; i < audio_channels(); ++i) { - n.push_back (short_audio_channel_name (i)); + if (i != 8 && i != 9 && i != 15) { + n.push_back (NamedChannel(short_audio_channel_name(i), i)); + } } return n; diff --git a/src/lib/film.h b/src/lib/film.h index 66bcce806..887433bea 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -177,7 +177,7 @@ public: std::string subtitle_language () const; - std::vector audio_output_names () const; + std::vector audio_output_names () const; void repeat_content (ContentList, int); diff --git a/src/lib/mid_side_decoder.cc b/src/lib/mid_side_decoder.cc index b9b8dd098..fd80937ed 100644 --- a/src/lib/mid_side_decoder.cc +++ b/src/lib/mid_side_decoder.cc @@ -90,13 +90,11 @@ MidSideDecoder::make_audio_mapping_default (AudioMapping& mapping) const } } -vector +vector MidSideDecoder::input_names () const { - vector n; - - n.push_back (_("Left")); - n.push_back (_("Right")); - + vector n; + n.push_back (NamedChannel(_("Left"), 0)); + n.push_back (NamedChannel(_("Right"), 1)); return n; } diff --git a/src/lib/mid_side_decoder.h b/src/lib/mid_side_decoder.h index a4c7e2263..e5c1e0a05 100644 --- a/src/lib/mid_side_decoder.h +++ b/src/lib/mid_side_decoder.h @@ -29,5 +29,5 @@ public: boost::shared_ptr clone (int) const; boost::shared_ptr run (boost::shared_ptr, int channels); void make_audio_mapping_default (AudioMapping& mapping) const; - std::vector input_names () const; + std::vector input_names () const; }; diff --git a/src/lib/types.cc b/src/lib/types.cc index df57f2d47..e7acf6992 100644 --- a/src/lib/types.cc +++ b/src/lib/types.cc @@ -222,3 +222,10 @@ CPLSummary::CPLSummary (boost::filesystem::path p) last_write_time = boost::filesystem::last_write_time (p); } + + +bool operator== (NamedChannel const& a, NamedChannel const& b) +{ + return a.name == b.name && a.index == b.index; +} + diff --git a/src/lib/types.h b/src/lib/types.h index 50eed9aa1..2ba0408ad 100644 --- a/src/lib/types.h +++ b/src/lib/types.h @@ -259,4 +259,20 @@ enum EmailProtocol { EMAIL_PROTOCOL_SSL }; + +class NamedChannel +{ +public: + NamedChannel (std::string name_, int index_) + : name(name_) + , index(index_) + {} + + std::string name; + int index; +}; + + +bool operator== (NamedChannel const& a, NamedChannel const& b); + #endif diff --git a/src/lib/upmixer_a.cc b/src/lib/upmixer_a.cc index ca42cd386..fc92b081d 100644 --- a/src/lib/upmixer_a.cc +++ b/src/lib/upmixer_a.cc @@ -120,11 +120,11 @@ UpmixerA::make_audio_mapping_default (AudioMapping& mapping) const } } -vector +vector UpmixerA::input_names () const { - vector n; - n.push_back (_("Upmix L")); - n.push_back (_("Upmix R")); + vector n; + n.push_back (NamedChannel(_("Upmix L"), 0)); + n.push_back (NamedChannel(_("Upmix R"), 1)); return n; } diff --git a/src/lib/upmixer_a.h b/src/lib/upmixer_a.h index fe6a373ca..18569dcfa 100644 --- a/src/lib/upmixer_a.h +++ b/src/lib/upmixer_a.h @@ -40,7 +40,7 @@ public: boost::shared_ptr run (boost::shared_ptr, int channels); void flush (); void make_audio_mapping_default (AudioMapping& mapping) const; - std::vector input_names () const; + std::vector input_names () const; private: BandPassAudioFilter _left; diff --git a/src/lib/upmixer_b.cc b/src/lib/upmixer_b.cc index 2847da03b..dfc9d67d5 100644 --- a/src/lib/upmixer_b.cc +++ b/src/lib/upmixer_b.cc @@ -130,11 +130,11 @@ UpmixerB::make_audio_mapping_default (AudioMapping& mapping) const } } -vector +vector UpmixerB::input_names () const { - vector n; - n.push_back (_("Upmix L")); - n.push_back (_("Upmix R")); + vector n; + n.push_back (NamedChannel(_("Upmix L"), 0)); + n.push_back (NamedChannel(_("Upmix R"), 1)); return n; } diff --git a/src/lib/upmixer_b.h b/src/lib/upmixer_b.h index 47b4fadef..221be1615 100644 --- a/src/lib/upmixer_b.h +++ b/src/lib/upmixer_b.h @@ -38,7 +38,7 @@ public: boost::shared_ptr run (boost::shared_ptr, int channels); void flush (); void make_audio_mapping_default (AudioMapping& mapping) const; - std::vector input_names () const; + std::vector input_names () const; private: LowPassAudioFilter _lfe; diff --git a/src/lib/util.cc b/src/lib/util.cc index 32deac2e8..7c0d1dc4e 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -825,8 +825,6 @@ audio_channel_types (list mapped, int channels) case dcp::CENTRE: case dcp::LS: case dcp::RS: - case dcp::LC: - case dcp::RC: case dcp::BSL: case dcp::BSR: ++non_lfe; @@ -836,7 +834,6 @@ audio_channel_types (list mapped, int channels) case dcp::MOTION_DATA: case dcp::SYNC_SIGNAL: case dcp::SIGN_LANGUAGE: - case dcp::UNUSED: case dcp::CHANNEL_COUNT: break; } -- cgit v1.2.3