public void Edit(VideoProcessor videoProcessor)
        {
            var stream = GetStreamById(videoProcessor.StreamId);

            if (IsClosed(stream))
            {
                return;
            }

            var streamWorker = stream.StreamWorker;
            var videoWorker  = stream.VideoPublishWorker;

            var videoConfig = Mapper.Map <IVideoPublishWorkerConfig, VideoPublishWorkerConfigModel>(videoProcessor);

            ApiProvider.VideoPublishWorkerConfigs.Set(videoWorker.Id, videoConfig);

            var streamConfig = Mapper.Map <IStreamWorkerConfig, StreamWorkerConfigModel>(videoProcessor);

            ApiProvider.StreamWorkerConfigs.Set(streamWorker.Id, streamConfig);

            bool isEnabled = videoWorker.Enabled && streamWorker.Enabled;

            if (videoProcessor.Enabled.HasValue && videoProcessor.Enabled.Value != isEnabled)
            {
                if (videoProcessor.Enabled.Value)
                {
                    ApiProvider.Workers.EnableWorker(videoWorker.Id).AwaitSync();
                    ApiProvider.Workers.EnableWorker(streamWorker.Id).AwaitSync();
                }
                else
                {
                    ApiProvider.Workers.DisableWorker(videoWorker.Id).AwaitSync();
                    ApiProvider.Workers.DisableWorker(streamWorker.Id).AwaitSync();
                }
            }

            ApiProvider.ClearTrackingEntities();
            var updatedStream          = GetStreamById(stream.Id);
            var updatedStreamProcessor = ReadInternal(updatedStream);

            updatedStreamProcessor.CopyProperties(videoProcessor);
        }