diff options
Diffstat (limited to 'src/wx/film_editor.cc')
| -rw-r--r-- | src/wx/film_editor.cc | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/wx/film_editor.cc b/src/wx/film_editor.cc index d81bce9b2..b9ad12d64 100644 --- a/src/wx/film_editor.cc +++ b/src/wx/film_editor.cc @@ -237,6 +237,8 @@ FilmEditor::connect_to_widgets () _dcp_content_type->Connect (wxID_ANY, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler (FilmEditor::dcp_content_type_changed), 0, this); _dcp_frame_rate->Connect (wxID_ANY, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEventHandler (FilmEditor::dcp_frame_rate_changed), 0, this); _best_dcp_frame_rate->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (FilmEditor::best_dcp_frame_rate_clicked), 0, this); + _pad_with_silence->Connect (wxID_ANY, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler (FilmEditor::pad_with_silence_toggled), 0, this); + _minimum_audio_channels->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (FilmEditor::minimum_audio_channels_changed), 0, this); _dcp_ab->Connect (wxID_ANY, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler (FilmEditor::dcp_ab_toggled), 0, this); _still_duration->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (FilmEditor::still_duration_changed), 0, this); _trim_start->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (FilmEditor::trim_start_changed), 0, this); @@ -398,6 +400,16 @@ FilmEditor::make_audio_panel () } { + _pad_with_silence = new wxCheckBox (_audio_panel, wxID_ANY, _("Pad with silence to")); + grid->Add (_pad_with_silence); + wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); + _minimum_audio_channels = new wxSpinCtrl (_audio_panel); + s->Add (_minimum_audio_channels, 1); + add_label_to_sizer (s, _audio_panel, _("channels")); + grid->Add (s); + } + + { _use_content_audio = new wxRadioButton (_audio_panel, wxID_ANY, _("Use content's audio"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP); grid->Add (video_control (_use_content_audio)); wxBoxSizer* s = new wxBoxSizer (wxHORIZONTAL); @@ -420,6 +432,7 @@ FilmEditor::make_audio_panel () _audio_gain->SetRange (-60, 60); _audio_delay->SetRange (-1000, 1000); + _minimum_audio_channels->SetRange (0, MAX_AUDIO_CHANNELS); } void @@ -633,6 +646,7 @@ FilmEditor::film_changed (Film::Property p) setup_streams (); setup_show_audio_sensitivity (); setup_frame_rate_description (); + setup_minimum_audio_channels (); break; case Film::TRUST_CONTENT_HEADER: checked_set (_trust_content_header, _film->trust_content_header ()); @@ -645,6 +659,7 @@ FilmEditor::film_changed (Film::Property p) setup_streams (); setup_show_audio_sensitivity (); setup_frame_rate_description (); + setup_minimum_audio_channels (); break; case Film::FORMAT: { @@ -769,6 +784,7 @@ FilmEditor::film_changed (Film::Property p) setup_audio_control_sensitivity (); setup_show_audio_sensitivity (); setup_frame_rate_description (); + setup_minimum_audio_channels (); break; case Film::USE_CONTENT_AUDIO: _film->log()->log (String::compose ("Film::USE_CONTENT_AUDIO changed; setting GUI using %1", _film->use_content_audio ())); @@ -779,6 +795,7 @@ FilmEditor::film_changed (Film::Property p) setup_audio_control_sensitivity (); setup_show_audio_sensitivity (); setup_frame_rate_description (); + setup_minimum_audio_channels (); break; case Film::SUBTITLE_STREAM: if (_film->subtitle_stream()) { @@ -794,6 +811,7 @@ FilmEditor::film_changed (Film::Property p) setup_audio_details (); setup_show_audio_sensitivity (); setup_frame_rate_description (); + setup_minimum_audio_channels (); break; } case Film::DCP_FRAME_RATE: @@ -813,6 +831,10 @@ FilmEditor::film_changed (Film::Property p) } setup_frame_rate_description (); + case Film::MINIMUM_AUDIO_CHANNELS: + checked_set (_minimum_audio_channels, _film->minimum_audio_channels ()); + setup_minimum_audio_channels (); + break; } } @@ -1190,6 +1212,9 @@ FilmEditor::setup_audio_control_sensitivity () for (int i = 0; i < MAX_AUDIO_CHANNELS; ++i) { _external_audio[i]->Enable (external); } + + _pad_with_silence->Enable (_generally_sensitive && _film && _film->audio_stream() && _film->audio_stream()->channels() < MAX_AUDIO_CHANNELS); + _minimum_audio_channels->Enable (_generally_sensitive && _pad_with_silence->GetValue ()); } void @@ -1416,3 +1441,33 @@ FilmEditor::trim_type_changed (wxCommandEvent &) { _film->set_trim_type (_trim_type->GetSelection () == 0 ? Film::CPL : Film::ENCODE); } + +void +FilmEditor::setup_minimum_audio_channels () +{ + if (!_film || !_film->audio_stream ()) { + _pad_with_silence->SetValue (false); + return; + } + + _pad_with_silence->SetValue (_film->audio_stream()->channels() < _film->minimum_audio_channels()); + + AudioMapping m (_film); + _minimum_audio_channels->SetRange (m.minimum_dcp_channels() + 1, MAX_AUDIO_CHANNELS); +} + +void +FilmEditor::pad_with_silence_toggled (wxCommandEvent &) +{ + setup_audio_control_sensitivity (); +} + +void +FilmEditor::minimum_audio_channels_changed (wxCommandEvent &) +{ + if (!_film) { + return; + } + + _film->set_minimum_audio_channels (_minimum_audio_channels->GetValue ()); +} |
