, _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)
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));
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);
}
+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)
{
RATINGS,
CONTENT_VERSIONS,
NAME_LANGUAGE,
+ AUDIO_LANGUAGE,
RELEASE_TERRITORY,
VERSION_NUMBER,
STATUS,
return _name_language;
}
+ dcp::LanguageTag audio_language () const {
+ return _audio_language;
+ }
+
dcp::LanguageTag::RegionSubtag release_territory () const {
return _release_territory;
}
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);
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;
using std::cout;
using std::exception;
using std::map;
+using std::vector;
using boost::shared_ptr;
using boost::optional;
using boost::dynamic_pointer_cast;
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());
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()
);
}
sizer->AddGrowableCol (1, 1);
wxButton* edit_name_language = 0;
- Button* edit_release_territory = 0;
-
add_label_to_sizer(sizer, this, _("Title language"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL);
{
wxSizer* s = new wxBoxSizer (wxHORIZONTAL);
sizer->Add (s, 0, wxEXPAND);
}
+ wxButton* edit_audio_language = 0;
+ add_label_to_sizer(sizer, this, _("Audio language"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL);
+ {
+ wxSizer* s = new wxBoxSizer (wxHORIZONTAL);
+ _audio_language = new wxStaticText (this, wxID_ANY, wxT(""));
+ _audio_language->SetToolTip (_("The main language that is spoken in the film's soundtrack"));
+ s->Add (_audio_language, 1, wxLEFT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP);
+ edit_audio_language = new Button (this, _("Edit..."));
+ s->Add (edit_audio_language, 0, wxLEFT, DCPOMATIC_SIZER_GAP);
+ sizer->Add (s, 0, wxEXPAND);
+ }
+
+ Button* edit_release_territory = 0;
add_label_to_sizer (sizer, this, _("Release territory"), true, 0, wxLEFT | wxRIGHT | wxALIGN_CENTER_VERTICAL);
{
wxSizer* s = new wxBoxSizer (wxHORIZONTAL);
_luminance_unit->Append (_("foot lambert"));
edit_name_language->Bind (wxEVT_BUTTON, boost::bind(&SMPTEMetadataDialog::edit_name_language, this));
+ edit_audio_language->Bind (wxEVT_BUTTON, boost::bind(&SMPTEMetadataDialog::edit_audio_language, this));
edit_release_territory->Bind (wxEVT_BUTTON, boost::bind(&SMPTEMetadataDialog::edit_release_territory, this));
_version_number->Bind (wxEVT_SPINCTRL, boost::bind(&SMPTEMetadataDialog::version_number_changed, this));
_status->Bind (wxEVT_CHOICE, boost::bind(&SMPTEMetadataDialog::status_changed, this));
}
+void
+SMPTEMetadataDialog::edit_audio_language ()
+{
+ LanguageTagDialog* d = new LanguageTagDialog(this, film()->audio_language());
+ d->ShowModal ();
+ film()->set_audio_language (d->get());
+ d->Destroy ();
+}
+
+
void
SMPTEMetadataDialog::edit_release_territory ()
{
std::vector<std::string> content_versions () const;
void set_content_versions (std::vector<std::string> v);
void edit_name_language ();
+ void edit_audio_language ();
void edit_release_territory ();
void version_number_changed ();
void status_changed ();
boost::weak_ptr<Film> _film;
wxStaticText* _name_language;
+ wxStaticText* _audio_language;
wxStaticText* _release_territory;
wxSpinCtrl* _version_number;
wxChoice* _status;