Example #1
0
        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);
        }
Example #2
0
        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);
        }