Basic encryption UI.
authorCarl Hetherington <cth@carlh.net>
Sat, 5 Jan 2013 23:34:21 +0000 (23:34 +0000)
committerCarl Hetherington <cth@carlh.net>
Sat, 5 Jan 2013 23:34:21 +0000 (23:34 +0000)
src/lib/film.cc
src/lib/film.h
src/lib/make_dcp_job.cc
src/lib/util.cc
src/wx/film_editor.cc
src/wx/film_editor.h

index 1abf8e91f0ad780f8fbdfc8d929caec66c75dfaa..cae4f5f9393f8d7364f157231298044afdf7387a 100644 (file)
@@ -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)
 {
index b8a824233b79608b1fd116b7b9da7de14eb38c8a..eda2060b81ac89be0d1e20512f3bdce9ba54e1c4 100644 (file)
@@ -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;
index 4605d17247e14c1e6f038c57f632016698df1ce3..a8b80fd67ba7c059cc15be467566db02b968fd7e 100644 (file)
@@ -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 ();
index 45965385c6c9b4f5e4bdb9202be0671b2335f720..424c736c2a7640418bc3e35b0f1c9f7f1332d291 100644 (file)
@@ -230,6 +230,8 @@ seconds (struct timeval t)
 void
 dvdomatic_setup ()
 {
+       libdcp_setup ();
+       
        Format::setup_formats ();
        DCPContentType::setup_dcp_content_types ();
        Scaler::setup_scalers ();
index 22fd1cc1434bbbad958677ee67c60dbaa4b272d4..56bc60c7847bf6a7b30057d612725c0b7c0ea948 100644 (file)
@@ -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<Film> 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);
index 7e75b4bf00841fbcd766778471a989f7f81ec425..c1284fe795d50b4103d5dbb212d51db5e9cf23dd 100644 (file)
@@ -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;