From 71acc01a622ce33abb18f541925e8ec42c834859 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Fri, 30 Jun 2023 23:53:57 +0200 Subject: [PATCH] Add channel_is_mapped(). --- src/lib/film_util.cc | 34 ++++++++++++++++++++++++++++++++++ src/lib/film_util.h | 28 ++++++++++++++++++++++++++++ src/lib/reel_writer.cc | 6 +++--- src/lib/wscript | 1 + 4 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 src/lib/film_util.cc create mode 100644 src/lib/film_util.h diff --git a/src/lib/film_util.cc b/src/lib/film_util.cc new file mode 100644 index 000000000..34f48d5a3 --- /dev/null +++ b/src/lib/film_util.cc @@ -0,0 +1,34 @@ +/* + Copyright (C) 2023 Carl Hetherington + + 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. + + 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 DCP-o-matic. If not, see . + +*/ + + +#include "film.h" +#include "film_util.h" + + +using std::shared_ptr; + + +bool +channel_is_mapped(shared_ptr film, dcp::Channel channel) +{ + auto const mapped = film->mapped_audio_channels(); + return std::find(mapped.begin(), mapped.end(), static_cast(channel)) != mapped.end(); +} diff --git a/src/lib/film_util.h b/src/lib/film_util.h new file mode 100644 index 000000000..f5b91f1f5 --- /dev/null +++ b/src/lib/film_util.h @@ -0,0 +1,28 @@ +/* + Copyright (C) 2023 Carl Hetherington + + 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. + + 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 DCP-o-matic. If not, see . + +*/ + + +#include + + +class Film; + + +bool channel_is_mapped(std::shared_ptr film, dcp::Channel channel); diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc index fc78740bb..e8db82fbb 100644 --- a/src/lib/reel_writer.cc +++ b/src/lib/reel_writer.cc @@ -27,6 +27,7 @@ #include "dcpomatic_log.h" #include "digester.h" #include "film.h" +#include "film_util.h" #include "image.h" #include "image_png.h" #include "job.h" @@ -192,10 +193,9 @@ ReelWriter::ReelWriter ( DCPOMATIC_ASSERT (film()->directory()); - auto mapped = film()->mapped_audio_channels(); std::vector extra_active_channels; - auto add_if_mapped = [mapped, &extra_active_channels](dcp::Channel channel) { - if (std::find(mapped.begin(), mapped.end(), static_cast(channel)) != mapped.end()) { + auto add_if_mapped = [this, &extra_active_channels](dcp::Channel channel) { + if (channel_is_mapped(film(), channel)) { extra_active_channels.push_back(channel); } }; diff --git a/src/lib/wscript b/src/lib/wscript index 00b6b7ed8..251f09cf7 100644 --- a/src/lib/wscript +++ b/src/lib/wscript @@ -115,6 +115,7 @@ sources = """ ffmpeg_subtitle_stream.cc ffmpeg_wrapper.cc film.cc + film_util.cc filter.cc font.cc font_config.cc -- 2.30.2