public static void DetectFile(string filePath, string projectFileName)
        {
            var builder = new ContainerBuilder();

            builder.RegisterModule(new FrameworkModule());
            builder.RegisterModule(new DataContractSerializerModule());

            using (var container = builder.Build())
            {
                string           detectorPath    = ConfigurationManager.AppSettings.Get("Defraser.DetectorPath") ?? AppDomain.CurrentDomain.BaseDirectory;
                IDetectorFactory detectorFactory = container.Resolve <IDetectorFactory>();
                detectorFactory.Initialize(detectorPath);

                File.Delete(projectFileName);
                ProjectManager projectManager = container.Resolve <ProjectManager>();
                IProject       project        = projectManager.CreateProject(projectFileName, "Console", DateTime.Now, "Batch process");

                IInputFile   inputFile   = project.AddFile(filePath, detectorFactory.ContainerDetectors.Union(detectorFactory.CodecDetectors));
                IFileScanner fileScanner = container.Resolve <IFileScanner>();
                fileScanner.ContainerDetectors = detectorFactory.ContainerDetectors;
                fileScanner.CodecDetectors     = detectorFactory.CodecDetectors;
                fileScanner.DataBlockDetected += (s, e) => project.AddDataBlock(e.DataBlock);
                fileScanner.Scan(inputFile, container.Resolve <IProgressReporter>());

                projectManager.SaveProject(project);
                projectManager.CloseProject(project);
            }
        }
 private void CompleteDeserialization(IDetectorFactory detectorFactory)
 {
     if (Detector != null)
     {
         _detector = detectorFactory.GetDetector(Detector.DetectorType) ?? Detector;
     }
 }
        public AdvancedDetectorConfiguration(bool editMode, IDetectorFactory detectorFactory)
        {
            PreConditions.Argument("detectorFactory").Value(detectorFactory).IsNotNull();

            _editMode        = editMode;
            _detectorFactory = detectorFactory;

            InitializeComponent();
        }
예제 #4
0
        private void InitCodecDetectors(string backEndFolder)
        {
            IDetectorFactory detectorFactory = CreateDetectorFactory();

            detectorFactory.Initialize(backEndFolder);
            foreach (var detector in detectorFactory.CodecDetectors)
            {
                _codecDetectorDictionary.Add(detector.Name, detector);
            }
        }
        public DefaultCodecHeaderManager(BackgroundFileScanner backgroundFileScanner,
                                         IDetectorFactory detectorFactory, ProjectManager projectManager,
                                         Creator <EditDefaultCodecHeader> editDefaultCodecHeaderCreator)
        {
            _backgroundFileScanner         = backgroundFileScanner;
            _detectorFactory               = detectorFactory;
            _editDefaultCodecHeaderCreator = editDefaultCodecHeaderCreator;

            _codecHeaderSource             = new Dictionary <CodecID, IResultNode>();
            projectManager.ProjectChanged += ProjectManager_ProjectChanged;
        }
예제 #6
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());
        }
            public IDetector GetDetector(IDetectorFactory detectorFactory)
            {
                if (DetectorType == typeof(UnknownFormatDetector).FullName)
                {
                    return(new UnknownFormatDetector());
                }
                IDetector detector = detectorFactory.Detectors.Single(x => x.DetectorType.FullName == DetectorType);

                foreach (Pair <string, string> configurationItem in Configuration)
                {
                    detector.SetConfigurationItem(configurationItem.First, configurationItem.Second);
                }
                return(detector);
            }
        public AddFile(IProject project, IDetectorFactory detectorFactory, IReferenceHeaderDatabase referenceHeaderDatabase)
        {
            PreConditions.Argument("project").Value(project).IsNotNull();

            _project = project;
            _referenceHeaderDatabase = referenceHeaderDatabase;

            InitializeComponent();

            dataGridView1.IncludedColumnVisible   = true;
            dataGridView1.IncludedHeadersChanged += dataGridView1_IncludedHeadersChanged;

            containerDetectorSelector.AvailableDetectors = detectorFactory.ContainerDetectors;
            codecDetectorSelector.AvailableDetectors     = detectorFactory.CodecDetectors;

            // If the H.264 detector is missing, display text on how it can be licensed.
            label4.Visible = (MainForm.EditionType == MainForm.Edition.Free);
        }
예제 #9
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;
            }
        }
예제 #10
0
 public HomeController(IAlgorithmFactory algorithmFactory, IEmbederFactory embederFactory, IDetectorFactory detectorFactory)
 {
     _algorithmFactory = algorithmFactory;
     _embederFactory = embederFactory;
     _detectorFactory = detectorFactory;
 }
 public DetectorDataContractSurrogate(IDetectorFactory detectorFactory, IDataContractSurrogate dataContractSurrogate)
 {
     _detectorFactory       = detectorFactory;
     _dataContractSurrogate = dataContractSurrogate;
 }
예제 #12
0
 public DetectorItem(IDetectorFactory detectorFactory)
 {
     DetectorFactory = detectorFactory;
 }
                public SerializationContext(IDetectorFactory detectorFactory)
                {
                    PreConditions.Argument("detectorFactory").Value(detectorFactory).IsNotNull();

                    _detectorFactory = detectorFactory;
                }