public bool ProcessCalibrationFrame(int frameNo, uint[] oddPixels, uint[] evenPixels, int width, int height, bool isTVSafeModeGuess) { if (m_Processor == null) { m_FieldAreaHeight = height; m_FieldAreaWidth = width; m_OddFieldPixels = new uint[m_FieldAreaWidth * m_FieldAreaHeight]; m_EvenFieldPixels = new uint[m_FieldAreaWidth * m_FieldAreaHeight]; m_OddFieldPixelsPreProcessed = new uint[m_FieldAreaWidth * m_FieldAreaHeight]; m_EvenFieldPixelsPreProcessed = new uint[m_FieldAreaWidth * m_FieldAreaHeight]; m_Processor = new IotaVtiOcrProcessor(isTVSafeModeGuess); } bool wasCalibrated = m_Processor.IsCalibrated; if (!m_Processor.IsCalibrated) { m_Processor.Process(oddPixels, width, height, null, frameNo, true); } if (!m_Processor.IsCalibrated) { m_Processor.Process(evenPixels, width, height, null, frameNo, false); } if (!wasCalibrated && m_Processor.IsCalibrated) { m_TimeStampComposer = new VtiTimeStampComposer(m_Processor.VideoFormat, m_InitializationData.IntegratedAAVFrames, m_Processor.EvenBeforeOdd, false /* Duplicated fields not supported for IOTA-VTI */, m_VideoController, this, () => m_Processor.CurrentImage); } return(m_Processor.IsCalibrated); }
public bool ProcessCalibrationFrame(int frameNo, uint[] data) { if (m_Processor == null) { TryInitializeProcessor(data); } if (m_Processor == null) { return(false); } bool wasCalibrated = m_Processor.IsCalibrated; if (m_ForceErrorReport || !m_Processor.IsCalibrated) { PrepareOsdVideoFields(data); } if (m_ForceErrorReport || !m_Processor.IsCalibrated) { m_Processor.Process(m_OddFieldPixelsPreProcessed, m_FieldAreaWidth, m_FieldAreaHeight, null, frameNo, true); } if (m_ForceErrorReport || !m_Processor.IsCalibrated) { m_Processor.Process(m_EvenFieldPixelsPreProcessed, m_FieldAreaWidth, m_FieldAreaHeight, null, frameNo, false); } if (m_ForceErrorReport || !m_Processor.IsCalibrated) { uint[] pixelsEven = new uint[m_FieldAreaWidth * m_FieldAreaHeight]; Array.Copy(m_EvenFieldPixelsPreProcessed, pixelsEven, m_EvenFieldPixelsPreProcessed.Length); AddErrorImage(string.Format(@"{0}-even.bmp", frameNo.ToString("0000000")), pixelsEven, m_FieldAreaWidth, m_FieldAreaHeight); uint[] pixelsOdd = new uint[m_FieldAreaWidth * m_FieldAreaHeight]; Array.Copy(m_OddFieldPixelsPreProcessed, pixelsOdd, m_OddFieldPixelsPreProcessed.Length); AddErrorImage(string.Format(@"{0}-odd.bmp", frameNo.ToString("0000000")), pixelsOdd, m_FieldAreaWidth, m_FieldAreaHeight); uint[] pixelsEvenOrg = new uint[m_FieldAreaWidth * m_FieldAreaHeight]; Array.Copy(m_EvenFieldPixels, pixelsEvenOrg, m_EvenFieldPixels.Length); AddErrorImage(string.Format(@"ORG-{0}-even.bmp", frameNo.ToString("0000000")), pixelsEvenOrg, m_FieldAreaWidth, m_FieldAreaHeight); uint[] pixelsOddOrg = new uint[m_FieldAreaWidth * m_FieldAreaHeight]; Array.Copy(m_OddFieldPixels, pixelsOddOrg, m_OddFieldPixelsPreProcessed.Length); AddErrorImage(string.Format(@"ORG-{0}-odd.bmp", frameNo.ToString("0000000")), pixelsOddOrg, m_FieldAreaWidth, m_FieldAreaHeight); uint[] pixelsEvenNoLChD = new uint[m_FieldAreaWidth * m_FieldAreaHeight]; Array.Copy(m_EvenFieldPixelsDebugNoLChD, pixelsEvenNoLChD, m_EvenFieldPixels.Length); AddErrorImage(string.Format(@"NLChD-{0}-even.bmp", frameNo.ToString("0000000")), pixelsEvenNoLChD, m_FieldAreaWidth, m_FieldAreaHeight); uint[] pixelsOddNoLChD = new uint[m_FieldAreaWidth * m_FieldAreaHeight]; Array.Copy(m_OddFieldPixelsDebugNoLChD, pixelsOddNoLChD, m_OddFieldPixelsPreProcessed.Length); AddErrorImage(string.Format(@"NLChD-{0}-odd.bmp", frameNo.ToString("0000000")), pixelsOddNoLChD, m_FieldAreaWidth, m_FieldAreaHeight); } if (!wasCalibrated && m_Processor.IsCalibrated) { m_TimeStampComposer = new VtiTimeStampComposer(m_Processor.VideoFormat, m_InitializationData.IntegratedAAVFrames, m_Processor.EvenBeforeOdd, false /* Duplicated fields not supported for IOTA-VTI */, m_VideoController, this, () => m_Processor.CurrentImage); } return(m_Processor.IsCalibrated && !m_ForceErrorReport); }