+2018-07-06 Carl Hetherington <cth@carlh.net>
+
+ * Add option to enable/disable KDM forensic marking.
+
2018-07-04 Carl Hetherington <cth@carlh.net>
* Sort audio views in order of their first mapped DCP channel (#1279).
ScreenKDM (
i,
kdm.encrypt (
- signer, i->recipient.get(), i->trusted_devices, _output->formulation(), true, 0
+ signer, i->recipient.get(), i->trusted_devices, _output->formulation(),
+ !_output->forensic_mark_video(), _output->forensic_mark_audio() ? boost::optional<int>() : 0
)
)
);
--- /dev/null
+/*
+ Copyright (C) 2018 Carl Hetherington <cth@carlh.net>
+
+ This file is part of DCP-o-matic.
+
+ DCP-o-matic is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ DCP-o-matic is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "kdm_advanced_dialog.h"
+
+KDMAdvancedDialog::KDMAdvancedDialog (wxWindow* parent, bool forensic_mark_video, bool forensic_mark_audio)
+ : TableDialog (parent, _("Advanced KDM options"), 2, 1, false)
+{
+ _forensic_mark_video = new wxCheckBox (this, wxID_ANY, _("Forensically mark video"));
+ _forensic_mark_video->SetValue (forensic_mark_video);
+ add (_forensic_mark_video);
+ add_spacer ();
+ _forensic_mark_audio = new wxCheckBox (this, wxID_ANY, _("Forensically mark audio"));
+ _forensic_mark_audio->SetValue (forensic_mark_audio);
+ add (_forensic_mark_audio);
+ add_spacer ();
+
+ layout ();
+}
+
+bool
+KDMAdvancedDialog::forensic_mark_video () const
+{
+ return _forensic_mark_video->GetValue ();
+}
+
+bool
+KDMAdvancedDialog::forensic_mark_audio () const
+{
+ return _forensic_mark_audio->GetValue ();
+}
--- /dev/null
+/*
+ Copyright (C) 2018 Carl Hetherington <cth@carlh.net>
+
+ This file is part of DCP-o-matic.
+
+ DCP-o-matic is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ DCP-o-matic is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>.
+
+*/
+
+#include "table_dialog.h"
+
+class KDMAdvancedDialog : public TableDialog
+{
+public:
+ KDMAdvancedDialog (wxWindow* parent, bool forensic_mark_video, bool forensic_mark_audio);
+
+ bool forensic_mark_video () const;
+ bool forensic_mark_audio () const;
+
+private:
+ wxCheckBox* _forensic_mark_video;
+ wxCheckBox* _forensic_mark_audio;
+};
DCPOMATIC_ASSERT (film);
list<ScreenKDM> screen_kdms = film->make_kdms (
- _screens->screens(), _cpl->cpl(), _timing->from(), _timing->until(), _output->formulation(), true, 0
+ _screens->screens(), _cpl->cpl(), _timing->from(), _timing->until(), _output->formulation(),
+ !_output->forensic_mark_video(), _output->forensic_mark_audio() ? boost::optional<int>() : 0
);
pair<shared_ptr<Job>, int> result = _output->make (screen_kdms, film->name(), _timing, bind (&KDMDialog::confirm_overwrite, this, _1), film->log());
/*
- Copyright (C) 2015-2017 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2015-2018 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
#include "kdm_timing_panel.h"
#include "confirm_kdm_email_dialog.h"
#include "wx_util.h"
+#include "kdm_advanced_dialog.h"
#include "name_format_editor.h"
#include <dcp/exceptions.h>
#include <dcp/types.h>
KDMOutputPanel::KDMOutputPanel (wxWindow* parent, bool interop)
: wxPanel (parent, wxID_ANY)
+ , _forensic_mark_video (false)
+ , _forensic_mark_audio (false)
{
wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, 0);
add_label_to_sizer (table, this, _("KDM type"), true);
+
+ wxBoxSizer* type = new wxBoxSizer (wxHORIZONTAL);
_type = new wxChoice (this, wxID_ANY);
_type->Append ("Modified Transitional 1", ((void *) dcp::MODIFIED_TRANSITIONAL_1));
_type->Append ("Multiple Modified Transitional 1", ((void *) dcp::MULTIPLE_MODIFIED_TRANSITIONAL_1));
_type->Append ("DCI Any", ((void *) dcp::DCI_ANY));
_type->Append ("DCI Specific", ((void *) dcp::DCI_SPECIFIC));
}
- table->Add (_type, 1, wxEXPAND);
+ type->Add (_type, 1, wxEXPAND);
_type->SetSelection (0);
+ wxButton* advanced = new wxButton (this, wxID_ANY, _("Advanced..."));
+ type->Add (advanced, 0, wxALIGN_CENTER_VERTICAL);
+ table->Add (type, 1, wxEXPAND);
add_label_to_sizer (table, this, _("Folder / ZIP name format"), true, 0, wxALIGN_TOP | wxTOP | wxLEFT | wxRIGHT);
_container_name_format = new NameFormatEditor (this, Config::instance()->kdm_container_name_format(), dcp::NameFormat::Map(), dcp::NameFormat::Map(), "");
_write_flat->Bind (wxEVT_RADIOBUTTON, boost::bind (&KDMOutputPanel::kdm_write_type_changed, this));
_write_folder->Bind (wxEVT_RADIOBUTTON, boost::bind (&KDMOutputPanel::kdm_write_type_changed, this));
_write_zip->Bind (wxEVT_RADIOBUTTON, boost::bind (&KDMOutputPanel::kdm_write_type_changed, this));
+ advanced->Bind (wxEVT_BUTTON, boost::bind (&KDMOutputPanel::advanced_clicked, this));
SetSizer (table);
}
_write_zip->Enable (write);
}
+void
+KDMOutputPanel::advanced_clicked ()
+{
+ KDMAdvancedDialog* d = new KDMAdvancedDialog (this, _forensic_mark_video, _forensic_mark_audio);
+ d->ShowModal ();
+ _forensic_mark_video = d->forensic_mark_video ();
+ _forensic_mark_audio = d->forensic_mark_audio ();
+ d->Destroy ();
+}
+
void
KDMOutputPanel::kdm_write_type_changed ()
{
boost::filesystem::path directory () const;
dcp::Formulation formulation () const;
+ bool forensic_mark_video () const {
+ return _forensic_mark_video;
+ }
+ bool forensic_mark_audio () const {
+ return _forensic_mark_audio;
+ }
std::pair<boost::shared_ptr<Job>, int> make (
std::list<ScreenKDM> screen_kdms,
private:
void kdm_write_type_changed ();
+ void advanced_clicked ();
wxChoice* _type;
NameFormatEditor* _container_name_format;
wxRadioButton* _write_folder;
wxRadioButton* _write_zip;
wxCheckBox* _email;
+ bool _forensic_mark_video;
+ bool _forensic_mark_audio;
};
job_view.cc
job_view_dialog.cc
job_manager_view.cc
+ kdm_advanced_dialog.cc
kdm_cpl_panel.cc
kdm_dialog.cc
kdm_output_panel.cc