diff --git a/extensions/opus/src/main/java/com/google/android/exoplayer/ext/opus/LibopusAudioTrackRenderer.java b/extensions/opus/src/main/java/com/google/android/exoplayer/ext/opus/LibopusAudioTrackRenderer.java index 3a71a67536..5c32dd44d5 100644 --- a/extensions/opus/src/main/java/com/google/android/exoplayer/ext/opus/LibopusAudioTrackRenderer.java +++ b/extensions/opus/src/main/java/com/google/android/exoplayer/ext/opus/LibopusAudioTrackRenderer.java @@ -31,6 +31,7 @@ import com.google.android.exoplayer.util.MimeTypes; import android.os.Handler; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.util.List; /** @@ -165,12 +166,13 @@ public final class LibopusAudioTrackRenderer extends SampleSourceTrackRenderer long codecDelayNs = -1; long seekPreRollNs = -1; if (initializationData.size() == 3) { - if (initializationData.get(1).length != Long.SIZE - || initializationData.get(2).length != Long.SIZE) { + if (initializationData.get(1).length != 8 || initializationData.get(2).length != 8) { throw new ExoPlaybackException("Invalid Codec Delay or Seek Preroll"); } - codecDelayNs = ByteBuffer.wrap(initializationData.get(1)).getLong(); - seekPreRollNs = ByteBuffer.wrap(initializationData.get(2)).getLong(); + codecDelayNs = + ByteBuffer.wrap(initializationData.get(1)).order(ByteOrder.LITTLE_ENDIAN).getLong(); + seekPreRollNs = + ByteBuffer.wrap(initializationData.get(2)).order(ByteOrder.LITTLE_ENDIAN).getLong(); } try { decoder = new OpusDecoderWrapper(initializationData.get(0), codecDelayNs, seekPreRollNs); diff --git a/library/src/androidTest/java/com/google/android/exoplayer/extractor/webm/WebmExtractorTest.java b/library/src/androidTest/java/com/google/android/exoplayer/extractor/webm/WebmExtractorTest.java index 0c0e916596..898c282a83 100644 --- a/library/src/androidTest/java/com/google/android/exoplayer/extractor/webm/WebmExtractorTest.java +++ b/library/src/androidTest/java/com/google/android/exoplayer/extractor/webm/WebmExtractorTest.java @@ -34,6 +34,7 @@ import android.test.InstrumentationTestCase; import java.io.IOException; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.util.Arrays; import java.util.UUID; @@ -731,8 +732,10 @@ public final class WebmExtractorTest extends InstrumentationTestCase { assertEquals(3, format.initializationData.size()); android.test.MoreAsserts.assertEquals(TEST_OPUS_CODEC_PRIVATE, format.initializationData.get(0)); - assertEquals(TEST_CODEC_DELAY, ByteBuffer.wrap(format.initializationData.get(1)).getLong()); - assertEquals(TEST_SEEK_PRE_ROLL, ByteBuffer.wrap(format.initializationData.get(2)).getLong()); + assertEquals(TEST_CODEC_DELAY, ByteBuffer.wrap(format.initializationData.get(1)) + .order(ByteOrder.LITTLE_ENDIAN).getLong()); + assertEquals(TEST_SEEK_PRE_ROLL, ByteBuffer.wrap(format.initializationData.get(2)) + .order(ByteOrder.LITTLE_ENDIAN).getLong()); } else if (MimeTypes.AUDIO_VORBIS.equals(expectedMimeType)) { assertEquals(2, format.initializationData.size()); assertEquals(TEST_VORBIS_INFO_SIZE, format.initializationData.get(0).length); diff --git a/library/src/main/java/com/google/android/exoplayer/extractor/webm/WebmExtractor.java b/library/src/main/java/com/google/android/exoplayer/extractor/webm/WebmExtractor.java index 41134b4731..facce45b02 100644 --- a/library/src/main/java/com/google/android/exoplayer/extractor/webm/WebmExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/extractor/webm/WebmExtractor.java @@ -37,6 +37,7 @@ import android.util.Pair; import java.io.IOException; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -1104,8 +1105,10 @@ public final class WebmExtractor implements Extractor { maxInputSize = OPUS_MAX_INPUT_SIZE; initializationData = new ArrayList<>(3); initializationData.add(codecPrivate); - initializationData.add(ByteBuffer.allocate(Long.SIZE).putLong(codecDelayNs).array()); - initializationData.add(ByteBuffer.allocate(Long.SIZE).putLong(seekPreRollNs).array()); + initializationData.add( + ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN).putLong(codecDelayNs).array()); + initializationData.add( + ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN).putLong(seekPreRollNs).array()); break; case CODEC_ID_AAC: mimeType = MimeTypes.AUDIO_AAC;