public void EnqueueTask(FFMpegEncoderTask task) { lock (_lockObj) { task.TaskFinishedCallback += new Action(NextTask); task.TaskFinishedCallback += new Action(OnTaskCompleted); _tasks.Enqueue(task); ++_queuedTasksCount; } if (!_isEnabled || CurrrentStatus != QueueStatus.NoTasks) { return; } NextTask(); }
public FFMpegEncoderTask(MediaEncodingSetup encodingSetup, MediaEncodingTaskInfo taskInfo) { FFMpegEncoderTask ffMpegEncoderTask = this; Id = Guid.NewGuid(); MediaId = taskInfo.Id; _encodingSetup = encodingSetup; _progress = new FFMpegProgress(args => ConvertProgressEvent(this, args)); _workingDirectory = new FileInfo(Assembly.GetEntryAssembly().Location).Directory.FullName; _environmentConfig = new EnvironmentConfig(_workingDirectory); if (!_encodingSetup.NotEncoding) { TaskFinishedCallback += () => ffMpegEncoderTask.OnFinished(ffMpegEncoderTask, new ConvertFinishedEventArgs(DateTime.Now - ffMpegEncoderTask._startTime, taskInfo)); } }