public Hashes CreateFingerprintsFromImageFrames(Frames imageFrames, FingerprintConfiguration configuration) { var frames = imageFrames.ToList(); var hashes = CreateOriginalFingerprintsFromFrames(frames, configuration) .AsParallel() .Select(fingerprint => lshAlgorithm.HashImage(fingerprint, configuration.HashingConfig)) .ToList(); return(new Hashes(hashes, imageFrames.Duration, MediaType.Video, imageFrames.RelativeTo, new[] { imageFrames.Origin })); }
public Hashes CreateFingerprintsFromImageFrames(IEnumerable <Frame> imageFrames, FingerprintConfiguration configuration) { var frames = imageFrames.ToList(); var hashes = CreateOriginalFingerprintsFromFrames(frames, configuration) .AsParallel() .Select(fingerprint => lshAlgorithm.HashImage(fingerprint, configuration.HashingConfig)) .ToList() .Join(frames, hashed => hashed.SequenceNumber, frame => frame.SequenceNumber, (hash, frame) => { byte[] transformed = configuration.OriginalPointSaveTransform != null ? configuration.OriginalPointSaveTransform(frame) : Array.Empty <byte>(); return(new HashedFingerprint(hash.HashBins, hash.SequenceNumber, hash.StartsAt, transformed)); }) .ToList(); return(new Hashes(hashes, GetDuration(hashes, configuration.FingerprintLengthInSeconds))); }