X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Faudio_panel.cc;h=118db7880cbeb42ca05bd4118f246eccd724ac1e;hb=45af2ebbfc3f38a7acc0bb17b7fb44ce0904bb88;hp=1c679d336c003fc7404f64ddff9b55cc88d46eec;hpb=41a83c2799f83313c6213976553fe69e48ea78df;p=dcpomatic.git diff --git a/src/wx/audio_panel.cc b/src/wx/audio_panel.cc index 1c679d336..118db7880 100644 --- a/src/wx/audio_panel.cc +++ b/src/wx/audio_panel.cc @@ -49,10 +49,10 @@ AudioPanel::AudioPanel (FilmEditor* e) grid->Add (_show, wxGBPosition (r, 0)); ++r; - add_label_to_grid_bag_sizer (grid, this, _("Audio Gain"), true, wxGBPosition (r, 0)); - _gain = new ContentSpinCtrl ( + add_label_to_grid_bag_sizer (grid, this, _("Gain"), true, wxGBPosition (r, 0)); + _gain = new ContentSpinCtrlDouble ( this, - new wxSpinCtrl (this), + new wxSpinCtrlDouble (this), AudioContentProperty::AUDIO_GAIN, boost::mem_fn (&AudioContent::audio_gain), boost::mem_fn (&AudioContent::set_audio_gain) @@ -64,7 +64,7 @@ AudioPanel::AudioPanel (FilmEditor* e) grid->Add (_gain_calculate_button, wxGBPosition (r, 3)); ++r; - add_label_to_grid_bag_sizer (grid, this, _("Audio Delay"), true, wxGBPosition (r, 0)); + add_label_to_grid_bag_sizer (grid, this, _("Delay"), true, wxGBPosition (r, 0)); _delay = new ContentSpinCtrl ( this, new wxSpinCtrl (this), @@ -78,16 +78,27 @@ AudioPanel::AudioPanel (FilmEditor* e) add_label_to_grid_bag_sizer (grid, this, _("ms"), false, wxGBPosition (r, 2)); ++r; - add_label_to_grid_bag_sizer (grid, this, _("Audio Stream"), true, wxGBPosition (r, 0)); + add_label_to_grid_bag_sizer (grid, this, _("Stream"), true, wxGBPosition (r, 0)); _stream = new wxChoice (this, wxID_ANY); grid->Add (_stream, wxGBPosition (r, 1)); - _description = add_label_to_grid_bag_sizer (grid, this, "", false, wxGBPosition (r, 3)); + _stream_description = add_label_to_grid_bag_sizer (grid, this, "", false, wxGBPosition (r, 3)); ++r; _mapping = new AudioMappingView (this); _sizer->Add (_mapping, 1, wxEXPAND | wxALL, 6); + ++r; + + _description = new wxStaticText (this, wxID_ANY, wxT (" \n"), wxDefaultPosition, wxDefaultSize); + _sizer->Add (_description, 0, wxALL, 12); + wxFont font = _description->GetFont(); + font.SetStyle (wxFONTSTYLE_ITALIC); + font.SetPointSize (font.GetPointSize() - 1); + _description->SetFont (font); + ++r; _gain->wrapped()->SetRange (-60, 60); + _gain->wrapped()->SetDigits (1); + _gain->wrapped()->SetIncrement (0.5); _delay->wrapped()->SetRange (-1000, 1000); _stream->Bind (wxEVT_COMMAND_CHOICE_SELECTED, boost::bind (&AudioPanel::stream_changed, this)); @@ -106,6 +117,9 @@ AudioPanel::film_changed (Film::Property property) _mapping->set_channels (_editor->film()->audio_channels ()); _sizer->Layout (); break; + case Film::VIDEO_FRAME_RATE: + setup_description (); + break; default: break; } @@ -125,6 +139,8 @@ AudioPanel::film_content_changed (int property) if (property == AudioContentProperty::AUDIO_MAPPING) { _mapping->set (acs ? acs->audio_mapping () : AudioMapping ()); _sizer->Layout (); + } else if (property == AudioContentProperty::AUDIO_FRAME_RATE) { + setup_description (); } else if (property == FFmpegContentProperty::AUDIO_STREAM) { setup_stream_description (); _mapping->set (acs ? acs->audio_mapping () : AudioMapping ()); @@ -217,19 +233,40 @@ AudioPanel::stream_changed () setup_stream_description (); } +void +AudioPanel::setup_description () +{ + AudioContentList ac = _editor->selected_audio_content (); + if (ac.size () != 1) { + _description->SetLabel (""); + return; + } + + shared_ptr acs = ac.front (); + if (acs->content_audio_frame_rate() != acs->output_audio_frame_rate ()) { + _description->SetLabel (wxString::Format ( + _("Audio will be resampled from %.3fkHz to %.3fkHz."), + acs->content_audio_frame_rate() / 1000.0, + acs->output_audio_frame_rate() / 1000.0 + )); + } else { + _description->SetLabel (_("Audio will not be resampled.")); + } +} + void AudioPanel::setup_stream_description () { FFmpegContentList fc = _editor->selected_ffmpeg_content (); if (fc.size() != 1) { - _description->SetLabel (""); + _stream_description->SetLabel (""); return; } shared_ptr fcs = fc.front (); if (!fcs->audio_stream ()) { - _description->SetLabel (wxT ("")); + _stream_description->SetLabel (wxT ("")); } else { wxString s; if (fcs->audio_channels() == 1) { @@ -238,7 +275,7 @@ AudioPanel::setup_stream_description () s << fcs->audio_channels() << wxT (" ") << _("channels"); } s << wxT (", ") << fcs->content_audio_frame_rate() << _("Hz"); - _description->SetLabel (s); + _stream_description->SetLabel (s); } } @@ -268,6 +305,7 @@ AudioPanel::content_selection_changed () _mapping->Enable (sel.size() == 1); film_content_changed (AudioContentProperty::AUDIO_MAPPING); + film_content_changed (AudioContentProperty::AUDIO_FRAME_RATE); film_content_changed (FFmpegContentProperty::AUDIO_STREAM); film_content_changed (FFmpegContentProperty::AUDIO_STREAMS); }