コード例 #1
0
ファイル: DuplicateManager.cs プロジェクト: balQu/VideoDedup
            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);
                }
            }
コード例 #2
0
ファイル: DuplicateManager.cs プロジェクト: balQu/VideoDedup
            public void RemoveVideoFileReference(IVideoFile videoFile)
            {
                var refCounter = UniqueVideoFiles[videoFile];

                if (refCounter.RefCount == 1)
                {
                    refCounter.VideoFile.Dispose();
                    _ = UniqueVideoFiles.Remove(videoFile);
                    return;
                }

                refCounter.RefCount--;
            }