diff --git a/library/extractor/src/test/java/com/google/android/exoplayer2/extractor/ts/TsExtractorTest.java b/library/extractor/src/test/java/com/google/android/exoplayer2/extractor/ts/TsExtractorTest.java index d040c22286..420bd5a3c0 100644 --- a/library/extractor/src/test/java/com/google/android/exoplayer2/extractor/ts/TsExtractorTest.java +++ b/library/extractor/src/test/java/com/google/android/exoplayer2/extractor/ts/TsExtractorTest.java @@ -15,6 +15,7 @@ */ package com.google.android.exoplayer2.extractor.ts; +import static com.google.android.exoplayer2.extractor.ts.DefaultTsPayloadReaderFactory.FLAG_DETECT_ACCESS_UNITS; import static com.google.common.truth.Truth.assertThat; import android.util.SparseArray; @@ -54,6 +55,13 @@ public final class TsExtractorTest { ExtractorAsserts.assertBehavior(TsExtractor::new, "ts/sample_h264_mpeg_audio.ts"); } + @Test + public void sampleWithH264NoAccessUnitDelimiters() throws Exception { + ExtractorAsserts.assertBehavior( + () -> new TsExtractor(FLAG_DETECT_ACCESS_UNITS), + "ts/sample_h264_no_access_unit_delimiters.ts"); + } + @Test public void sampleWithH265() throws Exception { ExtractorAsserts.assertBehavior(TsExtractor::new, "ts/sample_h265.ts"); diff --git a/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts b/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts new file mode 100644 index 0000000000..a1cc40ba70 Binary files /dev/null and b/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts differ diff --git a/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.0.dump b/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.0.dump new file mode 100644 index 0000000000..f3f3d233df --- /dev/null +++ b/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.0.dump @@ -0,0 +1,43 @@ +seekMap: + isSeekable = true + duration = 66733 + getPosition(0) = [[timeUs=0, position=0]] + getPosition(1) = [[timeUs=1, position=0]] + getPosition(33366) = [[timeUs=33366, position=6420]] + getPosition(66733) = [[timeUs=66733, position=13028]] +numberOfTracks = 2 +track 256: + total output bytes = 12451 + sample count = 4 + format 0: + id = 1/256 + sampleMimeType = video/avc + codecs = avc1.64001E + width = 640 + height = 426 + initializationData: + data = length 29, hash 4C2CAE9C + data = length 9, hash D971CD89 + sample 0: + time = 66733 + flags = 0 + data = length 734, hash AF0D9485 + sample 1: + time = 66733 + flags = 1 + data = length 10938, hash 68420875 + sample 2: + time = 133466 + flags = 0 + data = length 6, hash 34E6CF79 + sample 3: + time = 133466 + flags = 0 + data = length 518, hash 546C177 +track 8448: + total output bytes = 0 + sample count = 0 + format 0: + id = 1/8448 + sampleMimeType = application/cea-608 +tracksEnded = true diff --git a/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.1.dump b/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.1.dump new file mode 100644 index 0000000000..94d3d8d3b9 --- /dev/null +++ b/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.1.dump @@ -0,0 +1,43 @@ +seekMap: + isSeekable = true + duration = 66733 + getPosition(0) = [[timeUs=0, position=0]] + getPosition(1) = [[timeUs=1, position=0]] + getPosition(33366) = [[timeUs=33366, position=6420]] + getPosition(66733) = [[timeUs=66733, position=13028]] +numberOfTracks = 2 +track 256: + total output bytes = 12451 + sample count = 4 + format 0: + id = 1/256 + sampleMimeType = video/avc + codecs = avc1.64001E + width = 640 + height = 426 + initializationData: + data = length 29, hash 4C2CAE9C + data = length 9, hash D971CD89 + sample 0: + time = 88977 + flags = 0 + data = length 734, hash AF0D9485 + sample 1: + time = 88977 + flags = 1 + data = length 10938, hash 68420875 + sample 2: + time = 155710 + flags = 0 + data = length 6, hash 34E6CF79 + sample 3: + time = 155710 + flags = 0 + data = length 518, hash 546C177 +track 8448: + total output bytes = 0 + sample count = 0 + format 0: + id = 1/8448 + sampleMimeType = application/cea-608 +tracksEnded = true diff --git a/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.2.dump b/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.2.dump new file mode 100644 index 0000000000..e6e8332462 --- /dev/null +++ b/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.2.dump @@ -0,0 +1,43 @@ +seekMap: + isSeekable = true + duration = 66733 + getPosition(0) = [[timeUs=0, position=0]] + getPosition(1) = [[timeUs=1, position=0]] + getPosition(33366) = [[timeUs=33366, position=6420]] + getPosition(66733) = [[timeUs=66733, position=13028]] +numberOfTracks = 2 +track 256: + total output bytes = 12451 + sample count = 4 + format 0: + id = 1/256 + sampleMimeType = video/avc + codecs = avc1.64001E + width = 640 + height = 426 + initializationData: + data = length 29, hash 4C2CAE9C + data = length 9, hash D971CD89 + sample 0: + time = 111221 + flags = 0 + data = length 734, hash AF0D9485 + sample 1: + time = 111221 + flags = 1 + data = length 10938, hash 68420875 + sample 2: + time = 177954 + flags = 0 + data = length 6, hash 34E6CF79 + sample 3: + time = 177954 + flags = 0 + data = length 518, hash 546C177 +track 8448: + total output bytes = 0 + sample count = 0 + format 0: + id = 1/8448 + sampleMimeType = application/cea-608 +tracksEnded = true diff --git a/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.3.dump b/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.3.dump new file mode 100644 index 0000000000..8710d53411 --- /dev/null +++ b/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.3.dump @@ -0,0 +1,27 @@ +seekMap: + isSeekable = true + duration = 66733 + getPosition(0) = [[timeUs=0, position=0]] + getPosition(1) = [[timeUs=1, position=0]] + getPosition(33366) = [[timeUs=33366, position=6420]] + getPosition(66733) = [[timeUs=66733, position=13028]] +numberOfTracks = 2 +track 256: + total output bytes = 255 + sample count = 0 + format 0: + id = 1/256 + sampleMimeType = video/avc + codecs = avc1.64001E + width = 640 + height = 426 + initializationData: + data = length 29, hash 4C2CAE9C + data = length 9, hash D971CD89 +track 8448: + total output bytes = 0 + sample count = 0 + format 0: + id = 1/8448 + sampleMimeType = application/cea-608 +tracksEnded = true diff --git a/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.unknown_length.dump b/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.unknown_length.dump new file mode 100644 index 0000000000..a23c081a59 --- /dev/null +++ b/testdata/src/test/assets/ts/sample_h264_no_access_unit_delimiters.ts.unknown_length.dump @@ -0,0 +1,40 @@ +seekMap: + isSeekable = false + duration = UNSET TIME + getPosition(0) = [[timeUs=0, position=0]] +numberOfTracks = 2 +track 256: + total output bytes = 12451 + sample count = 4 + format 0: + id = 1/256 + sampleMimeType = video/avc + codecs = avc1.64001E + width = 640 + height = 426 + initializationData: + data = length 29, hash 4C2CAE9C + data = length 9, hash D971CD89 + sample 0: + time = 66733 + flags = 0 + data = length 734, hash AF0D9485 + sample 1: + time = 66733 + flags = 1 + data = length 10938, hash 68420875 + sample 2: + time = 133466 + flags = 0 + data = length 6, hash 34E6CF79 + sample 3: + time = 133466 + flags = 0 + data = length 518, hash 546C177 +track 8448: + total output bytes = 0 + sample count = 0 + format 0: + id = 1/8448 + sampleMimeType = application/cea-608 +tracksEnded = true