mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
parent
02f1efd118
commit
cde1c27e2b
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user