Example #1
0
        /// <summary>
        /// Операция чтения
        /// </summary>
        /// <param name="VideoPlayer">Считыватель видеокадров</param>
        private void Read(RealtimeVideoReader VideoPlayer)
        {
            int indexFrame = 0;

            fstreamVDICount = VideoPlayer.CurrentPosition;
            byte[] Frame = null;
            do
            {
                if (!jpegBuffer.isFull)
                {
                    Frame = VideoPlayer.ReadFrameVDI(fstreamVDICount, FPS);
                }

                if (jpegBuffer.Size > MinBufferSize && jpegBuffer.Size < MaxBufferSize)
                {
                    Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() =>
                    {
                        this.tbLogOffsets.AppendText("Индекс: " + VideoPlayer.VDBIndex + "\n");
                        this.tbLogOffsets.ScrollToEnd();
                    }));
                }


                if (Frame != null)
                {
                    jpegBuffer.Push(new Frame(Frame, fstreamVDICount));
                }

                if (jpegBuffer.Size > MinBufferSize && jpegBuffer.Size < MaxBufferSize)
                {
                    Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() =>
                    {
                        if (bufferStateProgressBar.Value != jpegBuffer.Size)
                        {
                            bufferStateProgressBar.Value = jpegBuffer.Size;
                        }
                    }));
                }

                fstreamVDICount++;
            }while (fstreamVDICount < VideoPlayer.OffsetsCount);
            //while (Offset > 128);
        }
Example #2
0
        //---------------------------------------------------------------------------------------------------------------

        /// <summary>
        /// Инициализация операций чтения/записи при неизвестной длине файла, т.н чтение реального времени
        /// </summary>
        private void RealTimeInitialise(string CurrentFile)
        {
            fstreamVDICount = 0;
            RealtimeVideoReader VideoPlayer   = new RealtimeVideoReader(CurrentFile, (int)VideoRecordingImitator.LabWagonType.SMDL);
            RealtimeVideoWriter VideoRecorder = new RealtimeVideoWriter(this.tbSaveRecordedArchive.Text, (int)VideoRecordingImitator.LabWagonType.SMDL);

            StartClicked = false;
            //Обнуление номера частей

            VideoPlayng = new System.Threading.Thread(delegate()
            {
                Write(VideoRecorder);
            });

            VDBReaderSingle = new System.Threading.Thread(delegate()
            {
                Read(VideoPlayer);
            });
        }