diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-12-10 21:08:49 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-12-10 21:08:49 +0000 |
| commit | 6a77e41813c542f6f6a6c528941d4b2bdc7eb3ca (patch) | |
| tree | 75088c09db13a65eb25ca06b0de5d3246beea34e /src | |
| parent | 88e187267df754a99dba3222a94e01362986f720 (diff) | |
Add trust content header switch.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/film.cc | 23 | ||||
| -rw-r--r-- | src/lib/film.h | 8 | ||||
| -rw-r--r-- | src/wx/film_editor.cc | 21 | ||||
| -rw-r--r-- | src/wx/film_editor.h | 2 |
4 files changed, 53 insertions, 1 deletions
diff --git a/src/lib/film.cc b/src/lib/film.cc index 3f9210080..563147f68 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -86,6 +86,7 @@ int const Film::state_version = 1; Film::Film (string d, bool must_exist) : _use_dci_name (true) + , _trust_content_header (true) , _dcp_content_type (0) , _format (0) , _scaler (Scaler::from_id ("bicubic")) @@ -144,6 +145,7 @@ Film::Film (Film const & o) , _name (o._name) , _use_dci_name (o._use_dci_name) , _content (o._content) + , _trust_content_header (o._trust_content_header) , _dcp_content_type (o._dcp_content_type) , _format (o._format) , _crop (o._crop) @@ -404,6 +406,7 @@ Film::write_metadata () const f << "name " << _name << "\n"; f << "use_dci_name " << _use_dci_name << "\n"; f << "content " << _content << "\n"; + f << "trust_content_header " << (_trust_content_header ? "1" : "0") << "\n"; if (_dcp_content_type) { f << "dcp_content_type " << _dcp_content_type->pretty_name () << "\n"; } @@ -513,6 +516,8 @@ Film::read_metadata () _use_dci_name = (v == "1"); } else if (k == "content") { _content = v; + } else if (k == "trust_content_header") { + _trust_content_header = (v == "1"); } else if (k == "dcp_content_type") { _dcp_content_type = DCPContentType::from_pretty_name (v); } else if (k == "format") { @@ -976,7 +981,7 @@ Film::set_content (string c) signal_changed (CONTENT); set_content_digest (md5_digest (content_path ())); - + examine_content (); } catch (...) { @@ -987,6 +992,22 @@ Film::set_content (string c) } } + +void +Film::set_trust_content_header (bool t) +{ + { + boost::mutex::scoped_lock lm (_state_mutex); + _trust_content_header = t; + } + + signal_changed (TRUST_CONTENT_HEADER); + + if (!_trust_content_header) { + /* We just said that we don't trust the content's header */ + examine_content (); + } +} void Film::set_dcp_content_type (DCPContentType const * t) diff --git a/src/lib/film.h b/src/lib/film.h index 2e81575e4..8cd55a227 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -110,6 +110,7 @@ public: NAME, USE_DCI_NAME, CONTENT, + TRUST_CONTENT_HEADER, DCP_CONTENT_TYPE, FORMAT, CROP, @@ -160,6 +161,11 @@ public: return _content; } + bool trust_content_header () const { + boost::mutex::scoped_lock lm (_state_mutex); + return _trust_content_header; + } + DCPContentType const * dcp_content_type () const { boost::mutex::scoped_lock lm (_state_mutex); return _dcp_content_type; @@ -329,6 +335,7 @@ public: void set_name (std::string); void set_use_dci_name (bool); void set_content (std::string); + void set_trust_content_header (bool); void set_dcp_content_type (DCPContentType const *); void set_format (Format const *); void set_crop (Crop); @@ -404,6 +411,7 @@ private: * or an absolute path. */ std::string _content; + bool _trust_content_header; /** The type of content that this Film represents (feature, trailer etc.) */ DCPContentType const * _dcp_content_type; /** The format to present this Film in (flat, scope, etc.) */ diff --git a/src/wx/film_editor.cc b/src/wx/film_editor.cc index 2528f49db..1e592e268 100644 --- a/src/wx/film_editor.cc +++ b/src/wx/film_editor.cc @@ -114,6 +114,11 @@ FilmEditor::make_film_panel () _content = new wxFilePickerCtrl (_film_panel, wxID_ANY, wxT (""), wxT ("Select Content File"), wxT("*.*")); _film_sizer->Add (_content, 1, wxEXPAND); + _trust_content_header = new wxCheckBox (_film_panel, wxID_ANY, wxT ("Trust content's header")); + video_control (_trust_content_header); + _film_sizer->Add (_trust_content_header, 1); + _film_sizer->AddSpacer (0); + add_label_to_sizer (_film_sizer, _film_panel, "Content Type"); _dcp_content_type = new wxComboBox (_film_panel, wxID_ANY, wxT (""), wxDefaultPosition, wxDefaultSize, 0, 0, wxCB_READONLY); _film_sizer->Add (_dcp_content_type); @@ -174,6 +179,7 @@ FilmEditor::connect_to_widgets () _edit_dci_button->Connect (wxID_ANY, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler (FilmEditor::edit_dci_button_clicked), 0, this); _format->Connect (wxID_ANY, wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler (FilmEditor::format_changed), 0, this); _content->Connect (wxID_ANY, wxEVT_COMMAND_FILEPICKER_CHANGED, wxCommandEventHandler (FilmEditor::content_changed), 0, this); + _trust_content_header->Connect (wxID_ANY, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler (FilmEditor::trust_content_header_changed), 0, this); _left_crop->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (FilmEditor::left_crop_changed), 0, this); _right_crop->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (FilmEditor::right_crop_changed), 0, this); _top_crop->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (FilmEditor::top_crop_changed), 0, this); @@ -427,6 +433,16 @@ FilmEditor::content_changed (wxCommandEvent &) } } +void +FilmEditor::trust_content_header_changed (wxCommandEvent &) +{ + if (!_film) { + return; + } + + _film->set_trust_content_header (_trust_content_header->GetValue ()); +} + /** Called when the DCP A/B switch has been toggled */ void FilmEditor::dcp_ab_toggled (wxCommandEvent &) @@ -495,6 +511,9 @@ FilmEditor::film_changed (Film::Property p) setup_subtitle_control_sensitivity (); setup_streams (); break; + case Film::TRUST_CONTENT_HEADER: + checked_set (_trust_content_header, _film->trust_content_header ()); + break; case Film::SUBTITLE_STREAMS: setup_subtitle_control_sensitivity (); setup_streams (); @@ -694,6 +713,7 @@ FilmEditor::set_film (shared_ptr<Film> f) film_changed (Film::NAME); film_changed (Film::USE_DCI_NAME); film_changed (Film::CONTENT); + film_changed (Film::TRUST_CONTENT_HEADER); film_changed (Film::DCP_CONTENT_TYPE); film_changed (Film::FORMAT); film_changed (Film::CROP); @@ -731,6 +751,7 @@ FilmEditor::set_things_sensitive (bool s) _edit_dci_button->Enable (s); _format->Enable (s); _content->Enable (s); + _trust_content_header->Enable (s); _left_crop->Enable (s); _right_crop->Enable (s); _top_crop->Enable (s); diff --git a/src/wx/film_editor.h b/src/wx/film_editor.h index 428b994b8..7e75b4bf0 100644 --- a/src/wx/film_editor.h +++ b/src/wx/film_editor.h @@ -61,6 +61,7 @@ private: void top_crop_changed (wxCommandEvent &); void bottom_crop_changed (wxCommandEvent &); void content_changed (wxCommandEvent &); + void trust_content_header_changed (wxCommandEvent &); void format_changed (wxCommandEvent &); void dcp_trim_start_changed (wxCommandEvent &); void dcp_trim_end_changed (wxCommandEvent &); @@ -118,6 +119,7 @@ private: wxComboBox* _format; /** The Film's content file */ wxFilePickerCtrl* _content; + wxCheckBox* _trust_content_header; /** The Film's left crop */ wxSpinCtrl* _left_crop; /** The Film's right crop */ |
