mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
Remove need for InlinedApi with a few more C constants.
This commit is contained in:
parent
56a509d8e4
commit
5d0457152d
8 changed files with 47 additions and 27 deletions
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package com.google.android.exoplayer;
|
package com.google.android.exoplayer;
|
||||||
|
|
||||||
|
import android.media.MediaCodec;
|
||||||
import android.media.MediaExtractor;
|
import android.media.MediaExtractor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -43,11 +44,23 @@ public final class C {
|
||||||
public static final String UTF8_NAME = "UTF-8";
|
public static final String UTF8_NAME = "UTF-8";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sample flag that indicates the sample is a synchronization sample.
|
* @see MediaExtractor#SAMPLE_FLAG_SYNC
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("InlinedApi")
|
@SuppressWarnings("InlinedApi")
|
||||||
public static final int SAMPLE_FLAG_SYNC = MediaExtractor.SAMPLE_FLAG_SYNC;
|
public static final int SAMPLE_FLAG_SYNC = MediaExtractor.SAMPLE_FLAG_SYNC;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see MediaExtractor#SAMPLE_FLAG_ENCRYPTED
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("InlinedApi")
|
||||||
|
public static final int SAMPLE_FLAG_ENCRYPTED = MediaExtractor.SAMPLE_FLAG_ENCRYPTED;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see MediaCodec#CRYPTO_MODE_AES_CTR
|
||||||
|
*/
|
||||||
|
@SuppressWarnings("InlinedApi")
|
||||||
|
public static final int CRYPTO_MODE_AES_CTR = MediaCodec.CRYPTO_MODE_AES_CTR;
|
||||||
|
|
||||||
private C() {}
|
private C() {}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,6 @@ import android.media.MediaCodec;
|
||||||
import android.media.MediaCodec.CodecException;
|
import android.media.MediaCodec.CodecException;
|
||||||
import android.media.MediaCodec.CryptoException;
|
import android.media.MediaCodec.CryptoException;
|
||||||
import android.media.MediaCrypto;
|
import android.media.MediaCrypto;
|
||||||
import android.media.MediaExtractor;
|
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
|
|
||||||
|
|
@ -583,7 +582,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer {
|
||||||
}
|
}
|
||||||
waitingForFirstSyncFrame = false;
|
waitingForFirstSyncFrame = false;
|
||||||
}
|
}
|
||||||
boolean sampleEncrypted = (sampleHolder.flags & MediaExtractor.SAMPLE_FLAG_ENCRYPTED) != 0;
|
boolean sampleEncrypted = (sampleHolder.flags & C.SAMPLE_FLAG_ENCRYPTED) != 0;
|
||||||
waitingForKeys = shouldWaitForKeys(sampleEncrypted);
|
waitingForKeys = shouldWaitForKeys(sampleEncrypted);
|
||||||
if (waitingForKeys) {
|
if (waitingForKeys) {
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
|
|
@ -50,9 +50,8 @@ public final class SampleHolder {
|
||||||
public int size;
|
public int size;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Flags that accompany the sample. A combination of
|
* Flags that accompany the sample. A combination of {@link C#SAMPLE_FLAG_SYNC} and
|
||||||
* {@link android.media.MediaExtractor#SAMPLE_FLAG_SYNC} and
|
* {@link C#SAMPLE_FLAG_ENCRYPTED}
|
||||||
* {@link android.media.MediaExtractor#SAMPLE_FLAG_ENCRYPTED}
|
|
||||||
*/
|
*/
|
||||||
public int flags;
|
public int flags;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -33,10 +33,6 @@ import com.google.android.exoplayer.util.MimeTypes;
|
||||||
import com.google.android.exoplayer.util.ParsableByteArray;
|
import com.google.android.exoplayer.util.ParsableByteArray;
|
||||||
import com.google.android.exoplayer.util.Util;
|
import com.google.android.exoplayer.util.Util;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
|
||||||
import android.media.MediaCodec;
|
|
||||||
import android.media.MediaExtractor;
|
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
@ -795,7 +791,6 @@ public final class FragmentedMp4Extractor implements Extractor {
|
||||||
return RESULT_READ_SAMPLE;
|
return RESULT_READ_SAMPLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("InlinedApi")
|
|
||||||
private void readSampleEncryptionData(ParsableByteArray sampleEncryptionData, SampleHolder out) {
|
private void readSampleEncryptionData(ParsableByteArray sampleEncryptionData, SampleHolder out) {
|
||||||
TrackEncryptionBox encryptionBox =
|
TrackEncryptionBox encryptionBox =
|
||||||
track.sampleDescriptionEncryptionBoxes[fragmentRun.sampleDescriptionIndex];
|
track.sampleDescriptionEncryptionBoxes[fragmentRun.sampleDescriptionIndex];
|
||||||
|
|
@ -833,8 +828,8 @@ public final class FragmentedMp4Extractor implements Extractor {
|
||||||
}
|
}
|
||||||
|
|
||||||
out.cryptoInfo.set(subsampleCount, clearDataSizes, encryptedDataSizes, keyId, vector,
|
out.cryptoInfo.set(subsampleCount, clearDataSizes, encryptedDataSizes, keyId, vector,
|
||||||
MediaCodec.CRYPTO_MODE_AES_CTR);
|
C.CRYPTO_MODE_AES_CTR);
|
||||||
out.flags |= MediaExtractor.SAMPLE_FLAG_ENCRYPTED;
|
out.flags |= C.SAMPLE_FLAG_ENCRYPTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,10 +26,6 @@ import com.google.android.exoplayer.upstream.NonBlockingInputStream;
|
||||||
import com.google.android.exoplayer.util.LongArray;
|
import com.google.android.exoplayer.util.LongArray;
|
||||||
import com.google.android.exoplayer.util.MimeTypes;
|
import com.google.android.exoplayer.util.MimeTypes;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
|
||||||
import android.media.MediaCodec;
|
|
||||||
import android.media.MediaExtractor;
|
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
@ -425,7 +421,6 @@ public final class WebmExtractor implements Extractor {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("InlinedApi")
|
|
||||||
/* package */ boolean onBinaryElement(
|
/* package */ boolean onBinaryElement(
|
||||||
int id, long elementOffsetBytes, int headerSizeBytes, int contentsSizeBytes,
|
int id, long elementOffsetBytes, int headerSizeBytes, int contentsSizeBytes,
|
||||||
NonBlockingInputStream inputStream) throws ParserException {
|
NonBlockingInputStream inputStream) throws ParserException {
|
||||||
|
|
@ -507,8 +502,8 @@ public final class WebmExtractor implements Extractor {
|
||||||
encryptedDataSizes[0] = sampleHolder.size;
|
encryptedDataSizes[0] = sampleHolder.size;
|
||||||
|
|
||||||
sampleHolder.cryptoInfo.set(1, clearDataSizes, encryptedDataSizes,
|
sampleHolder.cryptoInfo.set(1, clearDataSizes, encryptedDataSizes,
|
||||||
encryptionKeyId, iv, MediaCodec.CRYPTO_MODE_AES_CTR);
|
encryptionKeyId, iv, C.CRYPTO_MODE_AES_CTR);
|
||||||
sampleHolder.flags |= MediaExtractor.SAMPLE_FLAG_ENCRYPTED;
|
sampleHolder.flags |= C.SAMPLE_FLAG_ENCRYPTED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package com.google.android.exoplayer.source;
|
package com.google.android.exoplayer.source;
|
||||||
|
|
||||||
|
import com.google.android.exoplayer.C;
|
||||||
import com.google.android.exoplayer.MediaFormat;
|
import com.google.android.exoplayer.MediaFormat;
|
||||||
import com.google.android.exoplayer.SampleHolder;
|
import com.google.android.exoplayer.SampleHolder;
|
||||||
import com.google.android.exoplayer.SampleSource;
|
import com.google.android.exoplayer.SampleSource;
|
||||||
|
|
@ -163,7 +164,7 @@ public final class FrameworkSampleExtractor implements SampleExtractor {
|
||||||
}
|
}
|
||||||
sampleHolder.timeUs = mediaExtractor.getSampleTime();
|
sampleHolder.timeUs = mediaExtractor.getSampleTime();
|
||||||
sampleHolder.flags = mediaExtractor.getSampleFlags();
|
sampleHolder.flags = mediaExtractor.getSampleFlags();
|
||||||
if ((sampleHolder.flags & MediaExtractor.SAMPLE_FLAG_ENCRYPTED) != 0) {
|
if ((sampleHolder.flags & C.SAMPLE_FLAG_ENCRYPTED) != 0) {
|
||||||
sampleHolder.cryptoInfo.setFromExtractorV16(mediaExtractor);
|
sampleHolder.cryptoInfo.setFromExtractorV16(mediaExtractor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
package com.google.android.exoplayer;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.media.MediaCodec;
|
||||||
|
import android.media.MediaExtractor;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unit test for {@link C}.
|
||||||
|
*/
|
||||||
|
public class CTest extends TestCase {
|
||||||
|
|
||||||
|
@SuppressLint("InlinedApi")
|
||||||
|
public static final void testContants() {
|
||||||
|
// Sanity check that constant values match those defined by the platform.
|
||||||
|
assertEquals(MediaExtractor.SAMPLE_FLAG_SYNC, C.SAMPLE_FLAG_SYNC);
|
||||||
|
assertEquals(MediaExtractor.SAMPLE_FLAG_ENCRYPTED, C.SAMPLE_FLAG_ENCRYPTED);
|
||||||
|
assertEquals(MediaCodec.CRYPTO_MODE_AES_CTR, C.CRYPTO_MODE_AES_CTR);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -25,9 +25,6 @@ import com.google.android.exoplayer.upstream.ByteArrayNonBlockingInputStream;
|
||||||
import com.google.android.exoplayer.upstream.NonBlockingInputStream;
|
import com.google.android.exoplayer.upstream.NonBlockingInputStream;
|
||||||
import com.google.android.exoplayer.util.MimeTypes;
|
import com.google.android.exoplayer.util.MimeTypes;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
|
||||||
import android.media.MediaCodec;
|
|
||||||
import android.media.MediaExtractor;
|
|
||||||
import android.test.InstrumentationTestCase;
|
import android.test.InstrumentationTestCase;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
@ -355,7 +352,6 @@ public class WebmExtractorTest extends InstrumentationTestCase {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("InlinedApi")
|
|
||||||
private void assertSample(
|
private void assertSample(
|
||||||
MediaSegment mediaSegment, int timeUs, boolean keyframe, boolean invisible,
|
MediaSegment mediaSegment, int timeUs, boolean keyframe, boolean invisible,
|
||||||
boolean encrypted) {
|
boolean encrypted) {
|
||||||
|
|
@ -364,10 +360,10 @@ public class WebmExtractorTest extends InstrumentationTestCase {
|
||||||
assertEquals(timeUs, sampleHolder.timeUs);
|
assertEquals(timeUs, sampleHolder.timeUs);
|
||||||
assertEquals(keyframe, (sampleHolder.flags & C.SAMPLE_FLAG_SYNC) != 0);
|
assertEquals(keyframe, (sampleHolder.flags & C.SAMPLE_FLAG_SYNC) != 0);
|
||||||
assertEquals(invisible, sampleHolder.decodeOnly);
|
assertEquals(invisible, sampleHolder.decodeOnly);
|
||||||
assertEquals(encrypted, (sampleHolder.flags & MediaExtractor.SAMPLE_FLAG_ENCRYPTED) != 0);
|
assertEquals(encrypted, (sampleHolder.flags & C.SAMPLE_FLAG_ENCRYPTED) != 0);
|
||||||
if (encrypted) {
|
if (encrypted) {
|
||||||
android.test.MoreAsserts.assertEquals(TEST_INITIALIZATION_VECTOR, sampleHolder.cryptoInfo.iv);
|
android.test.MoreAsserts.assertEquals(TEST_INITIALIZATION_VECTOR, sampleHolder.cryptoInfo.iv);
|
||||||
assertEquals(MediaCodec.CRYPTO_MODE_AES_CTR, sampleHolder.cryptoInfo.mode);
|
assertEquals(C.CRYPTO_MODE_AES_CTR, sampleHolder.cryptoInfo.mode);
|
||||||
assertEquals(1, sampleHolder.cryptoInfo.numSubSamples);
|
assertEquals(1, sampleHolder.cryptoInfo.numSubSamples);
|
||||||
assertEquals(100, sampleHolder.cryptoInfo.numBytesOfEncryptedData[0]);
|
assertEquals(100, sampleHolder.cryptoInfo.numBytesOfEncryptedData[0]);
|
||||||
assertEquals(0, sampleHolder.cryptoInfo.numBytesOfClearData[0]);
|
assertEquals(0, sampleHolder.cryptoInfo.numBytesOfClearData[0]);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue