From 42a7083b5c501f5926b414d9338300b639f4c38b Mon Sep 17 00:00:00 2001 From: olly Date: Mon, 3 Aug 2020 09:39:33 +0100 Subject: [PATCH] FragmentedMp4Extractor: Fix clearHeaderSize handling PiperOrigin-RevId: 324560994 --- .../extractor/mp4/FragmentedMp4Extractor.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor.java b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor.java index 1b8f440b89..ce0ff55acd 100644 --- a/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor.java +++ b/library/extractor/src/main/java/com/google/android/exoplayer2/extractor/mp4/FragmentedMp4Extractor.java @@ -1753,14 +1753,13 @@ public class FragmentedMp4Extractor implements Extractor { // We need to account for the additional clear header by adding clearHeaderSize to // clearDataSize for the first subsample specified in the subsample encryption data. scratch.reset(subsampleDataLength); - scratch.readBytes(subsampleEncryptionData.getData(), /* offset= */ 0, subsampleDataLength); - subsampleEncryptionData.skipBytes(subsampleDataLength); + byte[] scratchData = scratch.getData(); + subsampleEncryptionData.readBytes(scratchData, /* offset= */ 0, subsampleDataLength); - byte[] data = scratch.getData(); - int clearDataSize = (data[2] & 0xFF) << 8 | (data[3] & 0xFF); + int clearDataSize = (scratchData[2] & 0xFF) << 8 | (scratchData[3] & 0xFF); int adjustedClearDataSize = clearDataSize + clearHeaderSize; - data[2] = (byte) ((adjustedClearDataSize >> 8) & 0xFF); - data[3] = (byte) (adjustedClearDataSize & 0xFF); + scratchData[2] = (byte) ((adjustedClearDataSize >> 8) & 0xFF); + scratchData[3] = (byte) (adjustedClearDataSize & 0xFF); subsampleEncryptionData = scratch; }