private void UpdateRecorder()
        {
            if (recorder != null)
            {
                if (recorder.EncoderType == settings.EncoderType)
                {
                    return;
                }

                DisposeRecorder();
            }

            switch (settings.EncoderType)
            {
            case EncoderType.Gif:
                recorder = new EditorGifRecorder();
                break;

            case EncoderType.MP4:
                recorder = new EditorMP4Recorder();
                break;

            default:
                throw new InvalidOperationException();
            }
        }
        private void DisposeRecorder()
        {
            if (Recording)
            {
                EndRecording();
            }

            if (recorder != null)
            {
                recorder.Dispose();

                recorder = null;
            }
        }