summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-12-10 21:08:49 +0000
committerCarl Hetherington <cth@carlh.net>2012-12-10 21:08:49 +0000
commit6a77e41813c542f6f6a6c528941d4b2bdc7eb3ca (patch)
tree75088c09db13a65eb25ca06b0de5d3246beea34e /src
parent88e187267df754a99dba3222a94e01362986f720 (diff)
Add trust content header switch.
Diffstat (limited to 'src')
-rw-r--r--src/lib/film.cc23
-rw-r--r--src/lib/film.h8
-rw-r--r--src/wx/film_editor.cc21
-rw-r--r--src/wx/film_editor.h2
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 */