Exemplo n.º 1
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;
            }
        }
 public CancelableProgressAdapter(IBaseProgressListener listener)
 {
     _listener = listener;
 }