diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-09-23 17:05:01 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-09-23 17:05:01 +0200 |
| commit | 4f4a86fb43b00d251e44a7f4463fcb390c605212 (patch) | |
| tree | 274f1b4fea5a5c0f3b4fab9f825f350ec45c8b2a /src/lib | |
| parent | 6b9f804bf49ceee0ebb9f06be123dccfee2a45ab (diff) | |
Add audio language configuration and pass it to libdcp.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/film.cc | 14 | ||||
| -rw-r--r-- | src/lib/film.h | 7 | ||||
| -rw-r--r-- | src/lib/reel_writer.cc | 9 |
3 files changed, 29 insertions, 1 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc index 79ee20cfb..ea0a2bdd7 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -166,6 +166,7 @@ Film::Film (optional<boost::filesystem::path> dir) , _user_explicit_container (false) , _user_explicit_resolution (false) , _name_language (dcp::LanguageTag("en-US")) + , _audio_language (dcp::LanguageTag("en-US")) , _release_territory (dcp::LanguageTag::RegionSubtag("US")) , _version_number (1) , _status (dcp::FINAL) @@ -473,6 +474,7 @@ Film::metadata (bool with_content_paths) const root->add_child("ContentVersion")->add_child_text(i); } root->add_child("NameLanguage")->add_child_text(_name_language.to_string()); + root->add_child("AudioLanguage")->add_child_text(_audio_language.to_string()); root->add_child("ReleaseTerritory")->add_child_text(_release_territory.subtag()); root->add_child("VersionNumber")->add_child_text(raw_convert<string>(_version_number)); root->add_child("Status")->add_child_text(dcp::status_to_string(_status)); @@ -636,6 +638,10 @@ Film::read_metadata (optional<boost::filesystem::path> path) if (name_language) { _name_language = dcp::LanguageTag (*name_language); } + optional<string> audio_language = f.optional_string_child("AudioLanguage"); + if (audio_language) { + _audio_language = dcp::LanguageTag (*audio_language); + } optional<string> release_territory = f.optional_string_child("ReleaseTerritory"); if (release_territory) { _release_territory = dcp::LanguageTag::RegionSubtag (*release_territory); @@ -1945,6 +1951,14 @@ Film::set_name_language (dcp::LanguageTag lang) void +Film::set_audio_language (dcp::LanguageTag lang) +{ + ChangeSignaller<Film> ch (this, AUDIO_LANGUAGE); + _audio_language = lang; +} + + +void Film::set_release_territory (dcp::LanguageTag::RegionSubtag region) { ChangeSignaller<Film> ch (this, RELEASE_TERRITORY); diff --git a/src/lib/film.h b/src/lib/film.h index 174805713..66bcce806 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -233,6 +233,7 @@ public: RATINGS, CONTENT_VERSIONS, NAME_LANGUAGE, + AUDIO_LANGUAGE, RELEASE_TERRITORY, VERSION_NUMBER, STATUS, @@ -343,6 +344,10 @@ public: return _name_language; } + dcp::LanguageTag audio_language () const { + return _audio_language; + } + dcp::LanguageTag::RegionSubtag release_territory () const { return _release_territory; } @@ -404,6 +409,7 @@ public: void set_ratings (std::vector<dcp::Rating> r); void set_content_versions (std::vector<std::string> v); void set_name_language (dcp::LanguageTag lang); + void set_audio_language (dcp::LanguageTag lang); void set_release_territory (dcp::LanguageTag::RegionSubtag region); void set_version_number (int v); void set_status (dcp::Status s); @@ -506,6 +512,7 @@ private: std::vector<dcp::Rating> _ratings; std::vector<std::string> _content_versions; dcp::LanguageTag _name_language; + dcp::LanguageTag _audio_language; dcp::LanguageTag::RegionSubtag _release_territory; int _version_number; dcp::Status _status; diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc index f5f21f2ea..9272bfa30 100644 --- a/src/lib/reel_writer.cc +++ b/src/lib/reel_writer.cc @@ -60,6 +60,7 @@ using std::string; using std::cout; using std::exception; using std::map; +using std::vector; using boost::shared_ptr; using boost::optional; using boost::dynamic_pointer_cast; @@ -155,7 +156,7 @@ ReelWriter::ReelWriter ( if (_film->audio_channels ()) { _sound_asset.reset ( - new dcp::SoundAsset (dcp::Fraction (_film->video_frame_rate(), 1), _film->audio_frame_rate (), _film->audio_channels (), standard) + new dcp::SoundAsset (dcp::Fraction(_film->video_frame_rate(), 1), _film->audio_frame_rate(), _film->audio_channels(), _film->audio_language(), standard) ); _sound_asset->set_metadata (mxf_metadata()); @@ -166,11 +167,17 @@ ReelWriter::ReelWriter ( DCPOMATIC_ASSERT (_film->directory()); + vector<dcp::Channel> active; + BOOST_FOREACH (int i, _film->mapped_audio_channels()) { + active.push_back (static_cast<dcp::Channel>(i)); + } + /* Write the sound asset into the film directory so that we leave the creation of the DCP directory until the last minute. */ _sound_asset_writer = _sound_asset->start_write ( _film->directory().get() / audio_asset_filename (_sound_asset, _reel_index, _reel_count, _content_summary), + active, _film->contains_atmos_content() ); } |
