From 734336b892709e0fbdc48902b5bfd1b7b8d533d9 Mon Sep 17 00:00:00 2001 From: Chad Date: Mon, 19 Dec 2022 06:03:23 -0800 Subject: [PATCH 1/2] Fix #597 --- lddecode/core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lddecode/core.py b/lddecode/core.py index d8aa5c9c3..1f16e52a6 100644 --- a/lddecode/core.py +++ b/lddecode/core.py @@ -4014,7 +4014,7 @@ def buildmetadata(self, f, check_phase=True): disk_TimeCode = f"{self.clvMinutes}:xx" # print("file frame %d early-CLV minute %d" % (rawloc, self.clvMinutes), file=sys.stderr) elif self.isCLV and self.frameNumber is not None: - disk_TimeCode = "CLV Timecode %d:%.2d.%.2d frame %d" % ( + disk_TimeCode = "%d:%.2d.%.2d Frame #%d" % ( self.clvMinutes, self.clvSeconds, self.clvFrameNum, From f9a778e86d479a5d17f34bf9aca9a02237cc8207 Mon Sep 17 00:00:00 2001 From: Chad Date: Wed, 21 Dec 2022 06:24:28 -0800 Subject: [PATCH 2/2] Fix #713 by sanity checking VSYNC IRE detection --- lddecode/core.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/lddecode/core.py b/lddecode/core.py index 1f16e52a6..22160bbb7 100644 --- a/lddecode/core.py +++ b/lddecode/core.py @@ -3665,13 +3665,21 @@ def readfield(self, initphase=False): acceptable_diff = 2 if self.fields_written else 0.5 if max((whitediff, ire0_diff, sync_ire_diff)) > acceptable_diff: - redo = True - - self.rf.DecoderParams["ire0"] = ire0_hz - # Note that vsync_ire is a negative number, so (sync_hz - ire0_hz) is correct - self.rf.DecoderParams["hz_ire"] = (ire100_hz - ire0_hz) / 100 - self.rf.DecoderParams["vsync_ire"] = (sync_hz - ire0_hz) / self.rf.DecoderParams["hz_ire"] - #print(self.rf.DecoderParams["ire0"], self.rf.DecoderParams["hz_ire"], self.rf.DecoderParams["vsync_ire"]) + hz_ire = (ire100_hz - ire0_hz) / 100 + vsync_ire = (sync_hz - ire0_hz) / hz_ire + + if vsync_ire > -20: + logger.warning( + "At field #{0}, Auto-level detection malfunction (vsync IRE computed at {1}, nominal ~= -40), possible disk skipping".format( + len(self.fieldinfo), np.round(vsync_ire, 2) + )) + else: + redo = True + + self.rf.DecoderParams["ire0"] = ire0_hz + # Note that vsync_ire is a negative number, so (sync_hz - ire0_hz) is correct + self.rf.DecoderParams["hz_ire"] = hz_ire + self.rf.DecoderParams["vsync_ire"] = vsync_ire if adjusted is False and redo is True: self.demodcache.flush_demod()