parent
02f1efd118
commit
cde1c27e2b
@ -31,6 +31,7 @@ import com.google.android.exoplayer.util.MimeTypes;
|
|||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.nio.ByteOrder;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -165,12 +166,13 @@ public final class LibopusAudioTrackRenderer extends SampleSourceTrackRenderer
|
|||||||
long codecDelayNs = -1;
|
long codecDelayNs = -1;
|
||||||
long seekPreRollNs = -1;
|
long seekPreRollNs = -1;
|
||||||
if (initializationData.size() == 3) {
|
if (initializationData.size() == 3) {
|
||||||
if (initializationData.get(1).length != Long.SIZE
|
if (initializationData.get(1).length != 8 || initializationData.get(2).length != 8) {
|
||||||
|| initializationData.get(2).length != Long.SIZE) {
|
|
||||||
throw new ExoPlaybackException("Invalid Codec Delay or Seek Preroll");
|
throw new ExoPlaybackException("Invalid Codec Delay or Seek Preroll");
|
||||||
}
|
}
|
||||||
codecDelayNs = ByteBuffer.wrap(initializationData.get(1)).getLong();
|
codecDelayNs =
|
||||||
seekPreRollNs = ByteBuffer.wrap(initializationData.get(2)).getLong();
|
ByteBuffer.wrap(initializationData.get(1)).order(ByteOrder.LITTLE_ENDIAN).getLong();
|
||||||
|
seekPreRollNs =
|
||||||
|
ByteBuffer.wrap(initializationData.get(2)).order(ByteOrder.LITTLE_ENDIAN).getLong();
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
decoder = new OpusDecoderWrapper(initializationData.get(0), codecDelayNs, seekPreRollNs);
|
decoder = new OpusDecoderWrapper(initializationData.get(0), codecDelayNs, seekPreRollNs);
|
||||||
|
@ -34,6 +34,7 @@ import android.test.InstrumentationTestCase;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.nio.ByteOrder;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@ -731,8 +732,10 @@ public final class WebmExtractorTest extends InstrumentationTestCase {
|
|||||||
assertEquals(3, format.initializationData.size());
|
assertEquals(3, format.initializationData.size());
|
||||||
android.test.MoreAsserts.assertEquals(TEST_OPUS_CODEC_PRIVATE,
|
android.test.MoreAsserts.assertEquals(TEST_OPUS_CODEC_PRIVATE,
|
||||||
format.initializationData.get(0));
|
format.initializationData.get(0));
|
||||||
assertEquals(TEST_CODEC_DELAY, ByteBuffer.wrap(format.initializationData.get(1)).getLong());
|
assertEquals(TEST_CODEC_DELAY, ByteBuffer.wrap(format.initializationData.get(1))
|
||||||
assertEquals(TEST_SEEK_PRE_ROLL, ByteBuffer.wrap(format.initializationData.get(2)).getLong());
|
.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)) {
|
} else if (MimeTypes.AUDIO_VORBIS.equals(expectedMimeType)) {
|
||||||
assertEquals(2, format.initializationData.size());
|
assertEquals(2, format.initializationData.size());
|
||||||
assertEquals(TEST_VORBIS_INFO_SIZE, format.initializationData.get(0).length);
|
assertEquals(TEST_VORBIS_INFO_SIZE, format.initializationData.get(0).length);
|
||||||
|
@ -37,6 +37,7 @@ import android.util.Pair;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
import java.nio.ByteOrder;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -1104,8 +1105,10 @@ public final class WebmExtractor implements Extractor {
|
|||||||
maxInputSize = OPUS_MAX_INPUT_SIZE;
|
maxInputSize = OPUS_MAX_INPUT_SIZE;
|
||||||
initializationData = new ArrayList<>(3);
|
initializationData = new ArrayList<>(3);
|
||||||
initializationData.add(codecPrivate);
|
initializationData.add(codecPrivate);
|
||||||
initializationData.add(ByteBuffer.allocate(Long.SIZE).putLong(codecDelayNs).array());
|
initializationData.add(
|
||||||
initializationData.add(ByteBuffer.allocate(Long.SIZE).putLong(seekPreRollNs).array());
|
ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN).putLong(codecDelayNs).array());
|
||||||
|
initializationData.add(
|
||||||
|
ByteBuffer.allocate(8).order(ByteOrder.LITTLE_ENDIAN).putLong(seekPreRollNs).array());
|
||||||
break;
|
break;
|
||||||
case CODEC_ID_AAC:
|
case CODEC_ID_AAC:
|
||||||
mimeType = MimeTypes.AUDIO_AAC;
|
mimeType = MimeTypes.AUDIO_AAC;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user