public VideoFile AddVideoFileReference( DedupEngine.VideoFile videoFile) { if (UniqueVideoFiles.TryGetValue(videoFile, out var refCounter)) { refCounter.RefCount++; return(refCounter.VideoFile); } if (videoFile.ImageCount == Settings.Count) { var videoFilePreview = new VideoFile(videoFile); UniqueVideoFiles.Add(videoFile, new VideoFileRefCounter { VideoFile = videoFilePreview, RefCount = 1, }); return(videoFilePreview); } using (var videoFileWithImages = new DedupEngine.VideoFile( videoFile, Settings.Count)) { var videoFilePreview = new VideoFile(videoFileWithImages); UniqueVideoFiles.Add(videoFile, new VideoFileRefCounter { VideoFile = videoFilePreview, RefCount = 1, }); return(videoFilePreview); } }
public void RemoveVideoFileReference(IVideoFile videoFile) { var refCounter = UniqueVideoFiles[videoFile]; if (refCounter.RefCount == 1) { refCounter.VideoFile.Dispose(); _ = UniqueVideoFiles.Remove(videoFile); return; } refCounter.RefCount--; }