From: Carl Hetherington Date: Sat, 5 Jan 2013 23:34:21 +0000 (+0000) Subject: Basic encryption UI. X-Git-Tag: v2.0.48~1357 X-Git-Url: https://main.carlh.net/gitweb/?a=commitdiff_plain;h=49936cb957f0d57310f05a7b17c7ab52c95e94d4;p=dcpomatic.git Basic encryption UI. --- diff --git a/src/lib/film.cc b/src/lib/film.cc index 1abf8e91f..cae4f5f93 100644 --- a/src/lib/film.cc +++ b/src/lib/film.cc @@ -99,6 +99,7 @@ Film::Film (string d, bool must_exist) , _with_subtitles (false) , _subtitle_offset (0) , _subtitle_scale (1) + , _encrypted (false) , _frames_per_second (0) , _dirty (false) { @@ -166,6 +167,7 @@ Film::Film (Film const & o) , _with_subtitles (o._with_subtitles) , _subtitle_offset (o._subtitle_offset) , _subtitle_scale (o._subtitle_scale) + , _encrypted (o._encrypted) , _audio_language (o._audio_language) , _subtitle_language (o._subtitle_language) , _territory (o._territory) @@ -418,6 +420,7 @@ Film::write_metadata () const f << "with_subtitles " << _with_subtitles << "\n"; f << "subtitle_offset " << _subtitle_offset << "\n"; f << "subtitle_scale " << _subtitle_scale << "\n"; + f << "encrypted " << _encrypted << "\n"; f << "audio_language " << _audio_language << "\n"; f << "subtitle_language " << _subtitle_language << "\n"; f << "territory " << _territory << "\n"; @@ -543,6 +546,8 @@ Film::read_metadata () _subtitle_offset = atoi (v.c_str ()); } else if (k == "subtitle_scale") { _subtitle_scale = atof (v.c_str ()); + } else if (k == "encrypted") { + _encrypted = (v == "1"); } else if (k == "audio_language") { _audio_language = v; } else if (k == "subtitle_language") { @@ -1188,6 +1193,16 @@ Film::set_subtitle_scale (float s) signal_changed (SUBTITLE_SCALE); } +void +Film::set_encrypted (bool e) +{ + { + boost::mutex::scoped_lock lm (_state_mutex); + _encrypted = e; + } + signal_changed (ENCRYPTED); +} + void Film::set_audio_language (string l) { diff --git a/src/lib/film.h b/src/lib/film.h index b8a824233..eda2060b8 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -124,6 +124,7 @@ public: WITH_SUBTITLES, SUBTITLE_OFFSET, SUBTITLE_SCALE, + ENCRYPTED, DCI_METADATA, SIZE, LENGTH, @@ -250,6 +251,11 @@ public: return _subtitle_scale; } + bool encrypted () const { + boost::mutex::scoped_lock lm (_state_mutex); + return _encrypted; + } + std::string audio_language () const { boost::mutex::scoped_lock lm (_state_mutex); return _audio_language; @@ -351,6 +357,7 @@ public: void set_with_subtitles (bool); void set_subtitle_offset (int); void set_subtitle_scale (float); + void set_encrypted (bool); void set_audio_language (std::string); void set_subtitle_language (std::string); void set_territory (std::string); @@ -444,6 +451,7 @@ private: int _subtitle_offset; /** scale factor to apply to subtitles */ float _subtitle_scale; + bool _encrypted; /* DCI naming stuff */ std::string _audio_language; diff --git a/src/lib/make_dcp_job.cc b/src/lib/make_dcp_job.cc index 4605d1724..a8b80fd67 100644 --- a/src/lib/make_dcp_job.cc +++ b/src/lib/make_dcp_job.cc @@ -113,7 +113,8 @@ MakeDCPJob::run () dfr.frames_per_second, frames, _opt->out_size.width, - _opt->out_size.height + _opt->out_size.height, + _film->encrypted () ) ); @@ -131,7 +132,8 @@ MakeDCPJob::run () &dcp.Progress, dfr.frames_per_second, frames, - _film->audio_channels() + _film->audio_channels(), + _film->encrypted() ) ); ascend (); diff --git a/src/lib/util.cc b/src/lib/util.cc index 45965385c..424c736c2 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -230,6 +230,8 @@ seconds (struct timeval t) void dvdomatic_setup () { + libdcp_setup (); + Format::setup_formats (); DCPContentType::setup_dcp_content_types (); Scaler::setup_scalers (); diff --git a/src/wx/film_editor.cc b/src/wx/film_editor.cc index 22fd1cc14..56bc60c78 100644 --- a/src/wx/film_editor.cc +++ b/src/wx/film_editor.cc @@ -149,6 +149,10 @@ FilmEditor::make_film_panel () _film_sizer->Add (s); } + _encrypted = new wxCheckBox (_film_panel, wxID_ANY, wxT ("Encrypted")); + _film_sizer->Add (_encrypted, 1); + _film_sizer->AddSpacer (0); + _dcp_ab = new wxCheckBox (_film_panel, wxID_ANY, wxT ("A/B")); video_control (_dcp_ab); _film_sizer->Add (_dcp_ab, 1); @@ -188,6 +192,7 @@ FilmEditor::connect_to_widgets () _scaler->Connect (wxID_ANY, wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler (FilmEditor::scaler_changed), 0, this); _dcp_content_type->Connect (wxID_ANY, wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler (FilmEditor::dcp_content_type_changed), 0, this); _dcp_ab->Connect (wxID_ANY, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler (FilmEditor::dcp_ab_toggled), 0, this); + _encrypted->Connect (wxID_ANY, wxEVT_COMMAND_CHECKBOX_CLICKED, wxCommandEventHandler (FilmEditor::encrypted_toggled), 0, this); _still_duration->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (FilmEditor::still_duration_changed), 0, this); _dcp_trim_start->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (FilmEditor::dcp_trim_start_changed), 0, this); _dcp_trim_end->Connect (wxID_ANY, wxEVT_COMMAND_SPINCTRL_UPDATED, wxCommandEventHandler (FilmEditor::dcp_trim_end_changed), 0, this); @@ -454,6 +459,16 @@ FilmEditor::dcp_ab_toggled (wxCommandEvent &) _film->set_dcp_ab (_dcp_ab->GetValue ()); } +void +FilmEditor::encrypted_toggled (wxCommandEvent &) +{ + if (!_film) { + return; + } + + _film->set_encrypted (_encrypted->GetValue ()); +} + /** Called when the name widget has been changed */ void FilmEditor::name_changed (wxCommandEvent &) @@ -620,6 +635,9 @@ FilmEditor::film_changed (Film::Property p) case Film::SUBTITLE_SCALE: checked_set (_subtitle_scale, _film->subtitle_scale() * 100); break; + case Film::ENCRYPTED: + checked_set (_encrypted, _film->encrypted ()); + break; case Film::USE_DCI_NAME: checked_set (_use_dci_name, _film->use_dci_name ()); _dcp_name->SetLabel (std_to_wx (_film->dcp_name ())); @@ -727,6 +745,7 @@ FilmEditor::set_film (shared_ptr f) film_changed (Film::WITH_SUBTITLES); film_changed (Film::SUBTITLE_OFFSET); film_changed (Film::SUBTITLE_SCALE); + film_changed (Film::ENCRYPTED); film_changed (Film::DCI_METADATA); film_changed (Film::SIZE); film_changed (Film::LENGTH); @@ -760,6 +779,7 @@ FilmEditor::set_things_sensitive (bool s) _dcp_trim_start->Enable (s); _dcp_trim_end->Enable (s); _dcp_ab->Enable (s); + _encrypted->Enable (s); _audio_gain->Enable (s); _audio_gain_calculate_button->Enable (s); _audio_delay->Enable (s); diff --git a/src/wx/film_editor.h b/src/wx/film_editor.h index 7e75b4bf0..c1284fe79 100644 --- a/src/wx/film_editor.h +++ b/src/wx/film_editor.h @@ -66,6 +66,7 @@ private: void dcp_trim_start_changed (wxCommandEvent &); void dcp_trim_end_changed (wxCommandEvent &); void dcp_content_type_changed (wxCommandEvent &); + void encrypted_toggled (wxCommandEvent &); void dcp_ab_toggled (wxCommandEvent &); void scaler_changed (wxCommandEvent &); void audio_gain_changed (wxCommandEvent &); @@ -163,6 +164,7 @@ private: wxSpinCtrl* _dcp_trim_start; wxSpinCtrl* _dcp_trim_end; + wxCheckBox* _encrypted; /** Selector to generate an A/B comparison DCP */ wxCheckBox* _dcp_ab;