示例#1
0
        public void Carve(string path, long position, long length, IDataBlockCallback callback)
        {
            IProject         project         = CreateProject("C:/folderDieNietBestaat");
            IInputFile       inputFile       = CreateInputFile(project, path);
            IFileScanner     fileScanner     = CreateFileScanner();
            IDetectorFactory detectorFactory = CreateDetectorFactory();

            fileScanner.CodecDetectors     = detectorFactory.CodecDetectors;
            fileScanner.ContainerDetectors = detectorFactory.ContainerDetectors;
            fileScanner.DataBlockDetected += (o, e) => { callback.DataBlockDetectedWithCodecs(e.DataBlock.StartOffset, e.DataBlock.EndOffset, GetCodecStreamsAndKeyFrames(e.DataBlock)); };

            (fileScanner as FileScanner).Scan(inputFile, CreateDataReaderPool().CreateDataReader(inputFile.CreateDataPacket().GetSubPacket(position, length)), new NullProgressReporter());
        }
示例#2
0
        public void Carve(string path, long position, long length, StringList codecDetectors, StringList containerDetectors, IDataBlockCallback callback, IBaseProgressListener baseProgressListener)
        {
            IProject                  project          = CreateProject("C:/nonExistingFolder");
            IInputFile                inputFile        = CreateInputFile(project, path);
            IFileScanner              fileScanner      = CreateFileScanner();
            IDetectorFactory          detectorFactory  = CreateDetectorFactory();
            CancelableProgressAdapter progressReporter = new CancelableProgressAdapter(baseProgressListener);

            fileScanner.CodecDetectors     = detectorFactory.CodecDetectors.Where(detector => codecDetectors.Contains(detector.Name));
            fileScanner.ContainerDetectors = detectorFactory.ContainerDetectors.Where(detector => containerDetectors.Contains(detector.Name));
            fileScanner.DataBlockDetected += (o, e) => { callback.DataBlockDetectedWithCodecs(e.DataBlock.StartOffset, e.DataBlock.EndOffset, GetCodecStreamsAndKeyFrames(e.DataBlock)); };

            try
            {
                StartPolling(progressReporter);
                (fileScanner as FileScanner).Scan(inputFile, CreateDataReaderPool().CreateDataReader(inputFile.CreateDataPacket().GetSubPacket(position, length)), progressReporter);
            }
            finally
            {
                _polling = false;
            }
        }