From beb6a305c07342b0e4611d94e95f9d18416beb27 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 15 May 2016 22:55:56 +0100 Subject: Try to fix comparison of encrypted sound assets. --- src/sound_asset.cc | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/sound_asset.cc b/src/sound_asset.cc index b9be77c8..1ccd9a48 100644 --- a/src/sound_asset.cc +++ b/src/sound_asset.cc @@ -41,6 +41,7 @@ using std::ostream; using std::vector; using std::list; using boost::shared_ptr; +using boost::dynamic_pointer_cast; using namespace dcp; SoundAsset::SoundAsset (boost::filesystem::path file) @@ -121,26 +122,21 @@ SoundAsset::equals (shared_ptr other, EqualityOptions opt, NoteHand return false; } - ASDCP::PCM::FrameBuffer buffer_A (1 * Kumu::Megabyte); - ASDCP::PCM::FrameBuffer buffer_B (1 * Kumu::Megabyte); + shared_ptr other_sound = dynamic_pointer_cast (other); for (int i = 0; i < _intrinsic_duration; ++i) { - if (ASDCP_FAILURE (reader_A.ReadFrame (i, buffer_A))) { - boost::throw_exception (DCPReadError ("could not read audio frame")); - } - if (ASDCP_FAILURE (reader_B.ReadFrame (i, buffer_B))) { - boost::throw_exception (DCPReadError ("could not read audio frame")); - } + shared_ptr frame_A = get_frame (i); + shared_ptr frame_B = other_sound->get_frame (i); - if (buffer_A.Size() != buffer_B.Size()) { + if (frame_A->size() != frame_B->size()) { note (DCP_ERROR, String::compose ("sizes of audio data for frame %1 differ", i)); return false; } - if (memcmp (buffer_A.RoData(), buffer_B.RoData(), buffer_A.Size()) != 0) { - for (uint32_t i = 0; i < buffer_A.Size(); ++i) { - int const d = abs (buffer_A.RoData()[i] - buffer_B.RoData()[i]); + if (memcmp (frame_A->data(), frame_B->data(), frame_A->size()) != 0) { + for (int i = 0; i < frame_A->size(); ++i) { + int const d = abs (frame_A->data()[i] - frame_B->data()[i]); if (d > opt.max_audio_sample_error) { note (DCP_ERROR, String::compose ("PCM data difference of %1", d)); return false; -- cgit v1.2.3 From 92bec5911dc89d08f2a04fbdcfc32a8f274a5065 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 16 May 2016 00:10:16 +0100 Subject: Pass annotation text from decrypted to encrypted KDMs. --- src/decrypted_kdm.cc | 1 + src/encrypted_kdm.cc | 2 ++ src/encrypted_kdm.h | 1 + 3 files changed, 4 insertions(+) (limited to 'src') diff --git a/src/decrypted_kdm.cc b/src/decrypted_kdm.cc index 6aba26de..b18d9a90 100644 --- a/src/decrypted_kdm.cc +++ b/src/decrypted_kdm.cc @@ -310,6 +310,7 @@ DecryptedKDM::encrypt (shared_ptr signer, Certificate re device_list_description, _keys.front().cpl_id (), _content_title_text, + _annotation_text, _not_valid_before, _not_valid_after, formulation, diff --git a/src/encrypted_kdm.cc b/src/encrypted_kdm.cc index 8ed0c315..0e10a528 100644 --- a/src/encrypted_kdm.cc +++ b/src/encrypted_kdm.cc @@ -519,6 +519,7 @@ EncryptedKDM::EncryptedKDM ( string device_list_description, string cpl_id, string content_title_text, + optional annotation_text, LocalTime not_valid_before, LocalTime not_valid_after, Formulation formulation, @@ -532,6 +533,7 @@ EncryptedKDM::EncryptedKDM ( data::AuthenticatedPublic& aup = _data->authenticated_public; aup.signer.x509_issuer_name = signer->leaf().issuer (); aup.signer.x509_serial_number = signer->leaf().serial (); + aup.annotation_text = annotation_text; data::KDMRequiredExtensions& kre = _data->authenticated_public.required_extensions.kdm_required_extensions; kre.recipient.x509_issuer_serial.x509_issuer_name = recipient.issuer (); diff --git a/src/encrypted_kdm.h b/src/encrypted_kdm.h index a36e7aaf..13cb1a00 100644 --- a/src/encrypted_kdm.h +++ b/src/encrypted_kdm.h @@ -89,6 +89,7 @@ private: std::string device_list_description, std::string cpl_id, std::string cpl_content_title_text, + boost::optional annotation_text, LocalTime not_valid_before, LocalTime not_valid_after, Formulation formulation, -- cgit v1.2.3