public void TransfertToRecorder() { // Traite les frames jusqu'au frame indiquant la fin de l'enregistrement bool fin = false; do { VideoTranfert.Frame frame = null; lock (_imageToRecord) { if (_imageToRecord.Count > 0) { frame = _imageToRecord.Dequeue(); } } if (frame != null) { _videoTransfert.WriteFrame(frame); if (frame.Bitmap != null) { frame.Bitmap.Dispose(); } fin = frame.EndOfRecord; } else { Thread.Sleep(500); } } while (!fin); }
public override void DoAction() { if (!_videoSource.EndOfFile) { var frame = _videoSource.NextFrame(); _frameDisplay.UpdateFrame((Bitmap)frame.Clone()); var tranfertFrame = new VideoTranfert.Frame(_fileName, _videoSource.FrameRate, frame); lock (_imageToRecord) { _imageToRecord.Enqueue(tranfertFrame); } } else { _timer.Stop(); ChangeState(_playerStateController.StoppedState); } }