public CencEncryptingTrackImpl(Track source, UUID defaultKeyId, SecretKey key, boolean dummyIvs) { this(source, new RangeStartMap<>(0, defaultKeyId), Collections.singletonMap(defaultKeyId, key), "cenc", dummyIvs, false); }
private void init(Map<UUID, SecretKey> keys) { CencDecryptingSampleEntryTransformer tx = new CencDecryptingSampleEntryTransformer(); List<Sample> encSamples = original.getSamples(); RangeStartMap<Integer, SecretKey> indexToKey = new RangeStartMap<>(); RangeStartMap<Integer, SampleEntry> indexToSampleEntry = new RangeStartMap<>(); SampleEntry previousSampleEntry = null; for (int i = 0; i < encSamples.size(); i++) { Sample encSample = encSamples.get(i); SampleEntry current = encSample.getSampleEntry(); sampleEntries.add(tx.transform(encSample.getSampleEntry())); if (previousSampleEntry != current) { indexToSampleEntry.put(i, current); TrackEncryptionBox tenc = Path.getPath((Container) encSample.getSampleEntry(), "sinf[0]/schi[0]/tenc[0]"); if (tenc != null) { indexToKey.put(i, keys.get(tenc.getDefault_KID())); } else { indexToKey.put(i, null); } } previousSampleEntry = current; } samples = new CencDecryptingSampleList(indexToKey, indexToSampleEntry, encSamples, original.getSampleEncryptionEntries()); }
RangeStartMap<Integer, SampleEntry> indexToSampleEntry = new RangeStartMap<>(); RangeStartMap<Integer, KeyIdKeyPair> indexToKey = new RangeStartMap<>(); SampleEntry previousSampleEntry = null; for (int i = 0; i < sourceSamples.size(); i++) {
public CencEncryptingTrackImpl(Track source, UUID defaultKeyId, SecretKey key, boolean dummyIvs) { this(source, new RangeStartMap<>(0, defaultKeyId), Collections.singletonMap(defaultKeyId, key), "cenc", dummyIvs, false); }
private Track encryptIfNeeded(Track in, long encStartSample) { if (in.getHandler().equals("soun")) { if (audioKeyId != null) { RangeStartMap<Integer, UUID> indexToKeyId = new RangeStartMap<>(0, null); indexToKeyId.put(l2i(encStartSample - 1), audioKeyId); Map<UUID, SecretKey> keys = Collections.singletonMap(audioKeyId, audioKey); return new CencEncryptingTrackImpl(in, indexToKeyId, keys, "cenc", false, false); } else { return in; } } else if (in.getHandler().equals("vide")) { if (videoKeyId != null) { RangeStartMap<Integer, UUID> indexToKeyId = new RangeStartMap<>(0, null); indexToKeyId.put(l2i(encStartSample - 1), videoKeyId); Map<UUID, SecretKey> keys = Collections.singletonMap(videoKeyId, videoKey); return new CencEncryptingTrackImpl(in, indexToKeyId, keys, "cenc", false, false); } else { return in; } } else { return in; } }
private void init(Map<UUID, SecretKey> keys) { CencDecryptingSampleEntryTransformer tx = new CencDecryptingSampleEntryTransformer(); List<Sample> encSamples = original.getSamples(); RangeStartMap<Integer, SecretKey> indexToKey = new RangeStartMap<>(); RangeStartMap<Integer, SampleEntry> indexToSampleEntry = new RangeStartMap<>(); SampleEntry previousSampleEntry = null; for (int i = 0; i < encSamples.size(); i++) { Sample encSample = encSamples.get(i); SampleEntry current = encSample.getSampleEntry(); sampleEntries.add(tx.transform(encSample.getSampleEntry())); if (previousSampleEntry != current) { indexToSampleEntry.put(i, current); TrackEncryptionBox tenc = Path.getPath((Container) encSample.getSampleEntry(), "sinf[0]/schi[0]/tenc[0]"); if (tenc != null) { indexToKey.put(i, keys.get(tenc.getDefault_KID())); } else { indexToKey.put(i, null); } } previousSampleEntry = current; } samples = new CencDecryptingSampleList(indexToKey, indexToSampleEntry, encSamples, original.getSampleEncryptionEntries()); }
RangeStartMap<Integer, SampleEntry> indexToSampleEntry = new RangeStartMap<>(); RangeStartMap<Integer, KeyIdKeyPair> indexToKey = new RangeStartMap<>(); SampleEntry previousSampleEntry = null; for (int i = 0; i < sourceSamples.size(); i++) {