From 9fe5ea488461355a779db1b6b56f93ef375bac41 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 9 May 2016 23:39:42 +0100 Subject: [PATCH] Temporary hack to double-check existing frame hashes. --- src/lib/reel_writer.cc | 18 ++++++++++++------ src/lib/reel_writer.h | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc index ae06abc4c..7ffc773a1 100644 --- a/src/lib/reel_writer.cc +++ b/src/lib/reel_writer.cc @@ -200,7 +200,7 @@ ReelWriter::check_existing_picture_asset () _first_nonexistant_frame = n; } - while (!existing_picture_frame_ok(asset_file, info_file) && _first_nonexistant_frame > 0) { + while (!existing_picture_frame_ok(asset_file, info_file, _first_nonexistant_frame) && _first_nonexistant_frame > 0) { --_first_nonexistant_frame; } @@ -211,6 +211,12 @@ ReelWriter::check_existing_picture_asset () ++_first_nonexistant_frame; } + for (int i = 0; i < _first_nonexistant_frame; ++i) { + if (!existing_picture_frame_ok(asset_file, info_file, i)) { + LOG_GENERAL ("Although %1 is not ok", i); + } + } + LOG_GENERAL ("Proceeding with first nonexistant frame %1", _first_nonexistant_frame); fclose (asset_file); @@ -472,14 +478,14 @@ ReelWriter::write (PlayerSubtitles subs) } bool -ReelWriter::existing_picture_frame_ok (FILE* asset_file, FILE* info_file) const +ReelWriter::existing_picture_frame_ok (FILE* asset_file, FILE* info_file, int frame) const { - LOG_GENERAL ("Checking existing picture frame %1", _first_nonexistant_frame); + LOG_GENERAL ("Checking existing picture frame %1", frame); /* Read the data from the info file; for 3D we just check the left frames until we find a good one. */ - dcp::FrameInfo const info = read_frame_info (info_file, _first_nonexistant_frame, _film->three_d () ? EYES_LEFT : EYES_BOTH); + dcp::FrameInfo const info = read_frame_info (info_file, frame, _film->three_d () ? EYES_LEFT : EYES_BOTH); bool ok = true; @@ -489,14 +495,14 @@ ReelWriter::existing_picture_frame_ok (FILE* asset_file, FILE* info_file) const size_t const read = fread (data.data().get(), 1, data.size(), asset_file); LOG_GENERAL ("Read %1 bytes of asset data; wanted %2", read, info.size); if (read != static_cast (data.size ())) { - LOG_GENERAL ("Existing frame %1 is incomplete", _first_nonexistant_frame); + LOG_GENERAL ("Existing frame %1 is incomplete", frame); ok = false; } else { MD5Digester digester; digester.add (data.data().get(), data.size()); LOG_GENERAL ("Hash %1 vs %2", digester.get(), info.hash); if (digester.get() != info.hash) { - LOG_GENERAL ("Existing frame %1 failed hash check", _first_nonexistant_frame); + LOG_GENERAL ("Existing frame %1 failed hash check", frame); ok = false; } } diff --git a/src/lib/reel_writer.h b/src/lib/reel_writer.h index dd98f0c49..96f6ea049 100644 --- a/src/lib/reel_writer.h +++ b/src/lib/reel_writer.h @@ -87,7 +87,7 @@ private: void write_frame_info (Frame frame, Eyes eyes, dcp::FrameInfo info) const; long frame_info_position (Frame frame, Eyes eyes) const; void check_existing_picture_asset (); - bool existing_picture_frame_ok (FILE* asset_file, FILE* info_file) const; + bool existing_picture_frame_ok (FILE* asset_file, FILE* info_file, int frame) const; boost::shared_ptr _film; -- 2.30.2