From c7924bfe222481e9e7002a1f9d4599110de2930c Mon Sep 17 00:00:00 2001 From: olly Date: Fri, 30 Jun 2017 07:52:35 -0700 Subject: [PATCH] Clean up parseSampleEntryEncryptionData It was a bit strange how it returned something via the return value and something else via the "out" variable, and doing it this way wasn't even saving any allocations. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=160645640 --- .../exoplayer2/extractor/mp4/AtomParsers.java | 53 ++++++++++--------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/extractor/mp4/AtomParsers.java b/library/core/src/main/java/com/google/android/exoplayer2/extractor/mp4/AtomParsers.java index 80422c15e6..ba190351c3 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/extractor/mp4/AtomParsers.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/extractor/mp4/AtomParsers.java @@ -674,18 +674,19 @@ import java.util.List; int childPosition = parent.getPosition(); if (atomType == Atom.TYPE_encv) { - atomType = parseSampleEntryEncryptionData(parent, position, size, out, entryIndex); - TrackEncryptionBox encryptionBox = out.trackEncryptionBoxes[entryIndex]; - String schemeType = encryptionBox != null ? encryptionBox.schemeType : null; - if (schemeType != null) { - drmInitData = drmInitData.copyWithSchemeType(schemeType); + Pair sampleEntryEncryptionData = parseSampleEntryEncryptionData( + parent, position, size); + if (sampleEntryEncryptionData != null) { + atomType = sampleEntryEncryptionData.first; + drmInitData = drmInitData.copyWithSchemeType(sampleEntryEncryptionData.second.schemeType); + out.trackEncryptionBoxes[entryIndex] = sampleEntryEncryptionData.second; } parent.setPosition(childPosition); } -// TODO: Uncomment the following part when b/63092960 is fixed. -// else { -// drmInitData = null; -// } + // TODO: Uncomment when [Internal: b/63092960] is fixed. + // else { + // drmInitData = null; + // } List initializationData = null; String mimeType = null; @@ -852,18 +853,19 @@ import java.util.List; int childPosition = parent.getPosition(); if (atomType == Atom.TYPE_enca) { - atomType = parseSampleEntryEncryptionData(parent, position, size, out, entryIndex); - TrackEncryptionBox encryptionBox = out.trackEncryptionBoxes[entryIndex]; - String schemeType = encryptionBox != null ? encryptionBox.schemeType : null; - if (schemeType != null) { - drmInitData = drmInitData.copyWithSchemeType(schemeType); + Pair sampleEntryEncryptionData = parseSampleEntryEncryptionData( + parent, position, size); + if (sampleEntryEncryptionData != null) { + atomType = sampleEntryEncryptionData.first; + drmInitData = drmInitData.copyWithSchemeType(sampleEntryEncryptionData.second.schemeType); + out.trackEncryptionBoxes[entryIndex] = sampleEntryEncryptionData.second; } parent.setPosition(childPosition); } -// TODO: Uncomment the following part when b/63092960 is fixed. -// else { -// drmInitData = null; -// } + // TODO: Uncomment when [Internal: b/63092960] is fixed. + // else { + // drmInitData = null; + // } // If the atom type determines a MIME type, set it immediately. String mimeType = null; @@ -1039,11 +1041,12 @@ import java.util.List; } /** - * Parses encryption data from an audio/video sample entry, populating {@code out} and returning - * the unencrypted atom type, or 0 if no common encryption sinf atom was present. + * Parses encryption data from an audio/video sample entry, returning a pair consisting of the + * unencrypted atom type and a {@link TrackEncryptionBox}. Null is returned if no common + * encryption sinf atom was present. */ - private static int parseSampleEntryEncryptionData(ParsableByteArray parent, int position, - int size, StsdData out, int entryIndex) { + private static Pair parseSampleEntryEncryptionData( + ParsableByteArray parent, int position, int size) { int childPosition = parent.getPosition(); while (childPosition - position < size) { parent.setPosition(childPosition); @@ -1054,14 +1057,12 @@ import java.util.List; Pair result = parseSinfFromParent(parent, childPosition, childAtomSize); if (result != null) { - out.trackEncryptionBoxes[entryIndex] = result.second; - return result.first; + return result; } } childPosition += childAtomSize; } - // This enca/encv box does not have a data format so return an invalid atom type. - return 0; + return null; } private static Pair parseSinfFromParent(ParsableByteArray parent,