From 5d3230d85ac44281d09d8dad7dc3b895a00ffeae Mon Sep 17 00:00:00 2001 From: aquilescanta Date: Wed, 22 Apr 2020 12:22:34 +0100 Subject: [PATCH] Add test for TS with h264 and DTS audio PiperOrigin-RevId: 307789384 --- .../extractor/ts/TsExtractorTest.java | 8 ++ .../test/assets/ts/sample_h264_dts_audio.ts | Bin 0 -> 36660 bytes .../assets/ts/sample_h264_dts_audio.ts.0.dump | 81 ++++++++++++++++++ .../assets/ts/sample_h264_dts_audio.ts.1.dump | 81 ++++++++++++++++++ .../assets/ts/sample_h264_dts_audio.ts.2.dump | 81 ++++++++++++++++++ .../assets/ts/sample_h264_dts_audio.ts.3.dump | 81 ++++++++++++++++++ ...mple_h264_dts_audio.ts.unknown_length.dump | 78 +++++++++++++++++ 7 files changed, 410 insertions(+) create mode 100644 testdata/src/test/assets/ts/sample_h264_dts_audio.ts create mode 100644 testdata/src/test/assets/ts/sample_h264_dts_audio.ts.0.dump create mode 100644 testdata/src/test/assets/ts/sample_h264_dts_audio.ts.1.dump create mode 100644 testdata/src/test/assets/ts/sample_h264_dts_audio.ts.2.dump create mode 100644 testdata/src/test/assets/ts/sample_h264_dts_audio.ts.3.dump create mode 100644 testdata/src/test/assets/ts/sample_h264_dts_audio.ts.unknown_length.dump 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 500e508dba..c64d659fa0 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 @@ -76,6 +76,14 @@ public final class TsExtractorTest { assertionConfig); } + @Test + public void sampleWithH264AndDtsAudio() throws Exception { + ExtractorAsserts.assertBehavior( + () -> new TsExtractor(DefaultTsPayloadReaderFactory.FLAG_ENABLE_HDMV_DTS_AUDIO_STREAMS), + "ts/sample_h264_dts_audio.ts", + assertionConfig); + } + @Test public void sampleWithH265() throws Exception { ExtractorAsserts.assertBehavior(TsExtractor::new, "ts/sample_h265.ts", assertionConfig); diff --git a/testdata/src/test/assets/ts/sample_h264_dts_audio.ts b/testdata/src/test/assets/ts/sample_h264_dts_audio.ts new file mode 100644 index 0000000000000000000000000000000000000000..e9aafd77c7f5433cf82e9442c9f47e4bd8023a29 GIT binary patch literal 36660 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 YZ?t)4Kl9hW|3>%c3