diff --git a/library/src/androidTest/java/com/google/android/exoplayer/extractor/mp3/XingSeekerTest.java b/library/src/androidTest/java/com/google/android/exoplayer/extractor/mp3/XingSeekerTest.java index e981e65f49..88a14401f0 100644 --- a/library/src/androidTest/java/com/google/android/exoplayer/extractor/mp3/XingSeekerTest.java +++ b/library/src/androidTest/java/com/google/android/exoplayer/extractor/mp3/XingSeekerTest.java @@ -16,9 +16,9 @@ package com.google.android.exoplayer.extractor.mp3; import com.google.android.exoplayer.C; -import com.google.android.exoplayer.testutil.TestUtil; import com.google.android.exoplayer.util.MpegAudioHeader; import com.google.android.exoplayer.util.ParsableByteArray; +import com.google.android.exoplayer.util.Util; import android.test.InstrumentationTestCase; @@ -29,7 +29,7 @@ public final class XingSeekerTest extends InstrumentationTestCase { // Xing header/payload from http://storage.googleapis.com/exoplayer-test-media-0/play.mp3. private static final int XING_FRAME_HEADER_DATA = 0xFFFB3000; - private static final byte[] XING_FRAME_PAYLOAD = TestUtil.createByteArray( + private static final byte[] XING_FRAME_PAYLOAD = Util.getBytesFromHexString( "00000007000008dd000e7919000205080a0d0f1214171a1c1e212426292c2e303336383b3d404245484a4c4f5254" + "575a5c5e616466696b6e707376787a7d808285878a8c8f929496999c9ea1a4a6a8abaeb0b3b5b8babdc0c2c4c7" + "cacccfd2d4d6d9dcdee1e3e6e8ebeef0f2f5f8fafd"); diff --git a/library/src/androidTest/java/com/google/android/exoplayer/extractor/mp4/Mp4ExtractorTest.java b/library/src/androidTest/java/com/google/android/exoplayer/extractor/mp4/Mp4ExtractorTest.java index a106b746b9..4c198c3827 100644 --- a/library/src/androidTest/java/com/google/android/exoplayer/extractor/mp4/Mp4ExtractorTest.java +++ b/library/src/androidTest/java/com/google/android/exoplayer/extractor/mp4/Mp4ExtractorTest.java @@ -39,21 +39,21 @@ import java.util.List; public final class Mp4ExtractorTest extends TestCase { /** String of hexadecimal bytes containing the video stsd payload from an AVC video. */ - private static final byte[] VIDEO_STSD_PAYLOAD = TestUtil.createByteArray( + private static final byte[] VIDEO_STSD_PAYLOAD = Util.getBytesFromHexString( "00000000000000010000009961766331000000000000000100000000000000000000000000000000050002d00048" + "000000480000000000000001000000000000000000000000000000000000000000000000000000000000000000" + "18ffff0000002f617663430164001fffe100186764001facb402802dd80880000003008000001e078c19500100" + "0468ee3cb000000014627472740000e35c0042a61000216cb8"); - private static final byte[] VIDEO_HDLR_PAYLOAD = TestUtil.createByteArray( + private static final byte[] VIDEO_HDLR_PAYLOAD = Util.getBytesFromHexString( "000000000000000076696465"); - private static final byte[] VIDEO_MDHD_PAYLOAD = TestUtil.createByteArray( + private static final byte[] VIDEO_MDHD_PAYLOAD = Util.getBytesFromHexString( "0000000000000000cf6c48890000001e00001c8a55c40000"); private static final int TIMESCALE = 30; private static final int VIDEO_WIDTH = 1280; private static final int VIDEO_HEIGHT = 720; /** String of hexadecimal bytes containing the video stsd payload for an mp4v track. */ - private static final byte[] VIDEO_STSD_MP4V_PAYLOAD = TestUtil.createByteArray( + private static final byte[] VIDEO_STSD_MP4V_PAYLOAD = Util.getBytesFromHexString( "0000000000000001000000A36D703476000000000000000100000000000000000000000000000000014000B40048" + "000000480000000000000001000000000000000000000000000000000000000000000000000000000000000000" + "18FFFF0000004D6573647300000000033F00000004372011001A400004CF280002F1180528000001B001000001" @@ -62,26 +62,26 @@ public final class Mp4ExtractorTest extends TestCase { private static final int VIDEO_MP4V_HEIGHT = 180; /** String of hexadecimal bytes containing the audio stsd payload from an AAC track. */ - private static final byte[] AUDIO_STSD_PAYLOAD = TestUtil.createByteArray( + private static final byte[] AUDIO_STSD_PAYLOAD = Util.getBytesFromHexString( "0000000000000001000000596d703461000000000000000100000000000000000001001000000000ac4400000000" + "003565736473000000000327000000041f401500023e00024bc000023280051012080000000000000000000000" + "000000060102"); - private static final byte[] AUDIO_HDLR_PAYLOAD = TestUtil.createByteArray( + private static final byte[] AUDIO_HDLR_PAYLOAD = Util.getBytesFromHexString( "0000000000000000736f756e"); - private static final byte[] AUDIO_MDHD_PAYLOAD = TestUtil.createByteArray( + private static final byte[] AUDIO_MDHD_PAYLOAD = Util.getBytesFromHexString( "00000000cf6c4889cf6c488a0000ac4400a3e40055c40000"); /** String of hexadecimal bytes for an ftyp payload with major_brand mp41 and minor_version 0. **/ - private static final byte[] FTYP_PAYLOAD = TestUtil.createByteArray("6d70343100000000"); + private static final byte[] FTYP_PAYLOAD = Util.getBytesFromHexString("6d70343100000000"); /** String of hexadecimal bytes containing an mvhd payload from an AVC/AAC video. */ - private static final byte[] MVHD_PAYLOAD = TestUtil.createByteArray( + private static final byte[] MVHD_PAYLOAD = Util.getBytesFromHexString( "00000000cf6c4888cf6c48880000025800023ad40001000001000000000000000000000000010000000000000000" + "000000000000000100000000000000000000000000004000000000000000000000000000000000000000000000" + "000000000000000003"); /** String of hexadecimal bytes containing a tkhd payload with an unknown duration. */ - private static final byte[] TKHD_PAYLOAD = TestUtil.createByteArray( + private static final byte[] TKHD_PAYLOAD = Util.getBytesFromHexString( "00000007D1F0C7BFD1F0C7BF0000000000000000FFFFFFFF00000000000000000000000000000000000100000000" + "0000000000000000000000010000000000000000000000000000400000000780000004380000"); diff --git a/library/src/androidTest/java/com/google/android/exoplayer/testutil/TestUtil.java b/library/src/androidTest/java/com/google/android/exoplayer/testutil/TestUtil.java index 0b7aa0fcc8..a9beb705eb 100644 --- a/library/src/androidTest/java/com/google/android/exoplayer/testutil/TestUtil.java +++ b/library/src/androidTest/java/com/google/android/exoplayer/testutil/TestUtil.java @@ -81,15 +81,6 @@ public class TestUtil { return source; } - public static byte[] createByteArray(String hexBytes) { - byte[] result = new byte[hexBytes.length() / 2]; - for (int i = 0; i < result.length; i++) { - result[i] = (byte) ((Character.digit(hexBytes.charAt(i * 2), 16) << 4) - + Character.digit(hexBytes.charAt(i * 2 + 1), 16)); - } - return result; - } - /** * Converts an array of integers in the range [0, 255] into an equivalent byte array. * diff --git a/library/src/androidTest/java/com/google/android/exoplayer/util/NalUnitUtilTest.java b/library/src/androidTest/java/com/google/android/exoplayer/util/NalUnitUtilTest.java index 0a10c1794c..3755a9f250 100644 --- a/library/src/androidTest/java/com/google/android/exoplayer/util/NalUnitUtilTest.java +++ b/library/src/androidTest/java/com/google/android/exoplayer/util/NalUnitUtilTest.java @@ -147,8 +147,8 @@ public class NalUnitUtilTest extends TestCase { } private static void assertUnescapeMatchesExpected(String input, String expectedOutput) { - byte[] bitstream = getByteArrayForHexString(input); - byte[] expectedOutputBitstream = getByteArrayForHexString(expectedOutput); + byte[] bitstream = Util.getBytesFromHexString(input); + byte[] expectedOutputBitstream = Util.getBytesFromHexString(expectedOutput); int count = NalUnitUtil.unescapeStream(bitstream, bitstream.length); assertEquals(expectedOutputBitstream.length, count); byte[] outputBitstream = new byte[count]; @@ -156,15 +156,4 @@ public class NalUnitUtilTest extends TestCase { assertTrue(Arrays.equals(expectedOutputBitstream, outputBitstream)); } - private static byte[] getByteArrayForHexString(String hexString) { - int length = hexString.length(); - Assertions.checkArgument(length % 2 == 0); - byte[] result = new byte[length / 2]; - for (int i = 0; i < result.length; i++) { - result[i] = (byte) ((Character.digit(hexString.charAt(i * 2), 16) << 4) - + Character.digit(hexString.charAt(i * 2 + 1), 16)); - } - return result; - } - } diff --git a/library/src/main/java/com/google/android/exoplayer/smoothstreaming/SmoothStreamingManifestParser.java b/library/src/main/java/com/google/android/exoplayer/smoothstreaming/SmoothStreamingManifestParser.java index c5302e064e..e11940ad7d 100644 --- a/library/src/main/java/com/google/android/exoplayer/smoothstreaming/SmoothStreamingManifestParser.java +++ b/library/src/main/java/com/google/android/exoplayer/smoothstreaming/SmoothStreamingManifestParser.java @@ -24,7 +24,9 @@ import com.google.android.exoplayer.upstream.UriLoadable; import com.google.android.exoplayer.util.Assertions; import com.google.android.exoplayer.util.CodecSpecificDataUtil; import com.google.android.exoplayer.util.MimeTypes; +import com.google.android.exoplayer.util.Util; +import android.text.TextUtils; import android.util.Base64; import android.util.Pair; @@ -647,8 +649,8 @@ public class SmoothStreamingManifestParser implements UriLoadable.Parser buildCodecSpecificData(String codecSpecificDataString) { ArrayList csd = new ArrayList<>(); - if (codecSpecificDataString != null && !codecSpecificDataString.isEmpty()) { - byte[] codecPrivateData = hexStringToByteArray(codecSpecificDataString); + if (!TextUtils.isEmpty(codecSpecificDataString)) { + byte[] codecPrivateData = Util.getBytesFromHexString(codecSpecificDataString); byte[][] split = CodecSpecificDataUtil.splitNalUnits(codecPrivateData); if (split == null) { csd.add(codecPrivateData); @@ -684,17 +686,6 @@ public class SmoothStreamingManifestParser implements UriLoadable.Parser