Temporary hack to double-check existing frame hashes.
authorCarl Hetherington <cth@carlh.net>
Mon, 9 May 2016 22:39:42 +0000 (23:39 +0100)
committerCarl Hetherington <cth@carlh.net>
Mon, 9 May 2016 22:39:42 +0000 (23:39 +0100)
src/lib/reel_writer.cc
src/lib/reel_writer.h

index ae06abc4cecb4c9d8f32d3c4d53b026d639d3f39..7ffc773a14b41ddea11e4d2d8b64de48279bcba9 100644 (file)
@@ -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<size_t> (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;
                }
        }
index dd98f0c49a81abe0f4e012cde246392f66506157..96f6ea049e71a95e8590f3f7299eb98c33591418 100644 (file)
@@ -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<const Film> _film;