From 5d0457152d46052a32209ec11ee6237eaecf3a76 Mon Sep 17 00:00:00 2001 From: Oliver Woodman Date: Wed, 11 Mar 2015 15:48:12 +0000 Subject: [PATCH] Remove need for InlinedApi with a few more C constants. --- .../java/com/google/android/exoplayer/C.java | 15 ++++++++++++- .../exoplayer/MediaCodecTrackRenderer.java | 3 +-- .../android/exoplayer/SampleHolder.java | 5 ++--- .../parser/mp4/FragmentedMp4Extractor.java | 9 ++------ .../chunk/parser/webm/WebmExtractor.java | 9 ++------ .../source/FrameworkSampleExtractor.java | 3 ++- .../com/google/android/exoplayer/CTest.java | 22 +++++++++++++++++++ .../chunk/parser/webm/WebmExtractorTest.java | 8 ++----- 8 files changed, 47 insertions(+), 27 deletions(-) create mode 100644 library/src/test/java/com/google/android/exoplayer/CTest.java diff --git a/library/src/main/java/com/google/android/exoplayer/C.java b/library/src/main/java/com/google/android/exoplayer/C.java index 6bf5e08c42..a6d60b4ef7 100644 --- a/library/src/main/java/com/google/android/exoplayer/C.java +++ b/library/src/main/java/com/google/android/exoplayer/C.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer; +import android.media.MediaCodec; import android.media.MediaExtractor; /** @@ -43,11 +44,23 @@ public final class C { 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") 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() {} } diff --git a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java index 71dbda7fc8..104359d688 100644 --- a/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java +++ b/library/src/main/java/com/google/android/exoplayer/MediaCodecTrackRenderer.java @@ -26,7 +26,6 @@ import android.media.MediaCodec; import android.media.MediaCodec.CodecException; import android.media.MediaCodec.CryptoException; import android.media.MediaCrypto; -import android.media.MediaExtractor; import android.os.Handler; import android.os.SystemClock; @@ -583,7 +582,7 @@ public abstract class MediaCodecTrackRenderer extends TrackRenderer { } waitingForFirstSyncFrame = false; } - boolean sampleEncrypted = (sampleHolder.flags & MediaExtractor.SAMPLE_FLAG_ENCRYPTED) != 0; + boolean sampleEncrypted = (sampleHolder.flags & C.SAMPLE_FLAG_ENCRYPTED) != 0; waitingForKeys = shouldWaitForKeys(sampleEncrypted); if (waitingForKeys) { return false; diff --git a/library/src/main/java/com/google/android/exoplayer/SampleHolder.java b/library/src/main/java/com/google/android/exoplayer/SampleHolder.java index 9a258b752c..d548ea163a 100644 --- a/library/src/main/java/com/google/android/exoplayer/SampleHolder.java +++ b/library/src/main/java/com/google/android/exoplayer/SampleHolder.java @@ -50,9 +50,8 @@ public final class SampleHolder { public int size; /** - * Flags that accompany the sample. A combination of - * {@link android.media.MediaExtractor#SAMPLE_FLAG_SYNC} and - * {@link android.media.MediaExtractor#SAMPLE_FLAG_ENCRYPTED} + * Flags that accompany the sample. A combination of {@link C#SAMPLE_FLAG_SYNC} and + * {@link C#SAMPLE_FLAG_ENCRYPTED} */ public int flags; diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java index 3febb381c5..23fffe997a 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/mp4/FragmentedMp4Extractor.java @@ -33,10 +33,6 @@ import com.google.android.exoplayer.util.MimeTypes; import com.google.android.exoplayer.util.ParsableByteArray; 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.util.Arrays; import java.util.Collections; @@ -795,7 +791,6 @@ public final class FragmentedMp4Extractor implements Extractor { return RESULT_READ_SAMPLE; } - @SuppressLint("InlinedApi") private void readSampleEncryptionData(ParsableByteArray sampleEncryptionData, SampleHolder out) { TrackEncryptionBox encryptionBox = track.sampleDescriptionEncryptionBoxes[fragmentRun.sampleDescriptionIndex]; @@ -833,8 +828,8 @@ public final class FragmentedMp4Extractor implements Extractor { } out.cryptoInfo.set(subsampleCount, clearDataSizes, encryptedDataSizes, keyId, vector, - MediaCodec.CRYPTO_MODE_AES_CTR); - out.flags |= MediaExtractor.SAMPLE_FLAG_ENCRYPTED; + C.CRYPTO_MODE_AES_CTR); + out.flags |= C.SAMPLE_FLAG_ENCRYPTED; } } diff --git a/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java b/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java index 0141a4144b..73551ba4dc 100644 --- a/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractor.java @@ -26,10 +26,6 @@ import com.google.android.exoplayer.upstream.NonBlockingInputStream; import com.google.android.exoplayer.util.LongArray; 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.util.ArrayList; import java.util.Arrays; @@ -425,7 +421,6 @@ public final class WebmExtractor implements Extractor { return true; } - @SuppressLint("InlinedApi") /* package */ boolean onBinaryElement( int id, long elementOffsetBytes, int headerSizeBytes, int contentsSizeBytes, NonBlockingInputStream inputStream) throws ParserException { @@ -507,8 +502,8 @@ public final class WebmExtractor implements Extractor { encryptedDataSizes[0] = sampleHolder.size; sampleHolder.cryptoInfo.set(1, clearDataSizes, encryptedDataSizes, - encryptionKeyId, iv, MediaCodec.CRYPTO_MODE_AES_CTR); - sampleHolder.flags |= MediaExtractor.SAMPLE_FLAG_ENCRYPTED; + encryptionKeyId, iv, C.CRYPTO_MODE_AES_CTR); + sampleHolder.flags |= C.SAMPLE_FLAG_ENCRYPTED; } } diff --git a/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java b/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java index 6905ffe1ce..f8cc132ef2 100644 --- a/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer/source/FrameworkSampleExtractor.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer.source; +import com.google.android.exoplayer.C; import com.google.android.exoplayer.MediaFormat; import com.google.android.exoplayer.SampleHolder; import com.google.android.exoplayer.SampleSource; @@ -163,7 +164,7 @@ public final class FrameworkSampleExtractor implements SampleExtractor { } sampleHolder.timeUs = mediaExtractor.getSampleTime(); sampleHolder.flags = mediaExtractor.getSampleFlags(); - if ((sampleHolder.flags & MediaExtractor.SAMPLE_FLAG_ENCRYPTED) != 0) { + if ((sampleHolder.flags & C.SAMPLE_FLAG_ENCRYPTED) != 0) { sampleHolder.cryptoInfo.setFromExtractorV16(mediaExtractor); } diff --git a/library/src/test/java/com/google/android/exoplayer/CTest.java b/library/src/test/java/com/google/android/exoplayer/CTest.java new file mode 100644 index 0000000000..ab5157eb4a --- /dev/null +++ b/library/src/test/java/com/google/android/exoplayer/CTest.java @@ -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); + } + +} diff --git a/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java b/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java index 52bb7de792..5e43a4cb7f 100644 --- a/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java +++ b/library/src/test/java/com/google/android/exoplayer/chunk/parser/webm/WebmExtractorTest.java @@ -25,9 +25,6 @@ import com.google.android.exoplayer.upstream.ByteArrayNonBlockingInputStream; import com.google.android.exoplayer.upstream.NonBlockingInputStream; import com.google.android.exoplayer.util.MimeTypes; -import android.annotation.SuppressLint; -import android.media.MediaCodec; -import android.media.MediaExtractor; import android.test.InstrumentationTestCase; import java.io.IOException; @@ -355,7 +352,6 @@ public class WebmExtractorTest extends InstrumentationTestCase { } } - @SuppressLint("InlinedApi") private void assertSample( MediaSegment mediaSegment, int timeUs, boolean keyframe, boolean invisible, boolean encrypted) { @@ -364,10 +360,10 @@ public class WebmExtractorTest extends InstrumentationTestCase { assertEquals(timeUs, sampleHolder.timeUs); assertEquals(keyframe, (sampleHolder.flags & C.SAMPLE_FLAG_SYNC) != 0); assertEquals(invisible, sampleHolder.decodeOnly); - assertEquals(encrypted, (sampleHolder.flags & MediaExtractor.SAMPLE_FLAG_ENCRYPTED) != 0); + assertEquals(encrypted, (sampleHolder.flags & C.SAMPLE_FLAG_ENCRYPTED) != 0); if (encrypted) { 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(100, sampleHolder.cryptoInfo.numBytesOfEncryptedData[0]); assertEquals(0, sampleHolder.cryptoInfo.numBytesOfClearData[0]);