X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fupmixer_b.cc;h=3b0c2d94f8c7e55ce2196a61e31e6c1f7f9290ee;hp=9408fdf83fa10b2046e77a4afb59720568ea225f;hb=da44da6f31f97d39ca91c35955e573e76371f2c2;hpb=2610abb85fc82056c51c540d7a3d8f691dfe3403 diff --git a/src/lib/upmixer_b.cc b/src/lib/upmixer_b.cc index 9408fdf83..3b0c2d94f 100644 --- a/src/lib/upmixer_b.cc +++ b/src/lib/upmixer_b.cc @@ -1,32 +1,37 @@ /* - Copyright (C) 2015 Carl Hetherington + Copyright (C) 2015-2021 Carl Hetherington - This program is free software; you can redistribute it and/or modify + This file is part of DCP-o-matic. + + DCP-o-matic is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, + DCP-o-matic is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with DCP-o-matic. If not, see . */ + #include "upmixer_b.h" #include "audio_buffers.h" #include "audio_mapping.h" #include "i18n.h" + using std::string; +using std::make_shared; using std::min; using std::vector; -using boost::shared_ptr; +using std::shared_ptr; + UpmixerB::UpmixerB (int sampling_rate) : _lfe (0.01, 150.0 / sampling_rate) @@ -35,6 +40,7 @@ UpmixerB::UpmixerB (int sampling_rate) } + string UpmixerB::name () const { @@ -48,26 +54,29 @@ UpmixerB::id () const return N_("stereo-5.1-upmix-b"); } + int UpmixerB::out_channels () const { return 6; } + shared_ptr UpmixerB::clone (int sampling_rate) const { - return shared_ptr (new UpmixerB (sampling_rate)); + return make_shared(sampling_rate); } + shared_ptr UpmixerB::run (shared_ptr in, int channels) { - shared_ptr out (new AudioBuffers (channels, in->frames())); + auto out = make_shared(channels, in->frames()); /* L + R minus 6dB (in terms of amplitude) */ - shared_ptr in_LR = in->channel(0); - in_LR->accumulate_frames (in->channel(1).get(), 0, 0, in->frames()); + auto in_LR = in->channel(0); + in_LR->accumulate_frames (in->channel(1).get(), in->frames(), 0, 0); in_LR->apply_gain (-6); if (channels > 0) { @@ -93,7 +102,7 @@ UpmixerB::run (shared_ptr in, int channels) shared_ptr S; if (channels > 4) { /* Ls is L - R with some delay */ - shared_ptr sub (new AudioBuffers (1, in->frames())); + auto sub = make_shared(1, in->frames()); sub->copy_channel_from (in.get(), 0, 0); float* p = sub->data (0); float const * q = in->data (1); @@ -112,6 +121,7 @@ UpmixerB::run (shared_ptr in, int channels) return out; } + void UpmixerB::flush () { @@ -119,6 +129,7 @@ UpmixerB::flush () _delay.flush (); } + void UpmixerB::make_audio_mapping_default (AudioMapping& mapping) const { @@ -129,11 +140,12 @@ 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")); - return n; + return { + NamedChannel(_("Upmix L"), 0), + NamedChannel(_("Upmix R"), 1) + }; }