From 546d7da2f218b20cf19ba1d28bcef181c2e9ddb0 Mon Sep 17 00:00:00 2001 From: ibaker Date: Tue, 8 Oct 2024 10:08:19 -0700 Subject: [PATCH] Fix `Fmp4Extractor.init` to use text transcoding `ExtractorOutput` This was missed in https://github.com/androidx/media/commit/da724c8cc46e8ad61b3a049bdc7c206ee9af9c74 I tried to write a test for this, but got stuck crafting valid test data. I was able to create a new fragmented MP4 file containing only a TTML track: ```shell $ MP4Box -add simple.ttml -frag 2000 sample_fragmented_ttml.mp4 ``` Then I tried naively removing the `ftyp` and `moov` boxes with a hex editor, but using this in `FragmentedMp4ExtractorNoSniffingTest` gave me an `EOFException` that I didn't get to the root cause of. Issue: androidx/media#1779 #cherrypick PiperOrigin-RevId: 683667850 --- RELEASENOTES.md | 3 +++ .../androidx/media3/extractor/mp4/FragmentedMp4Extractor.java | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 7b76789739..924b69a951 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -128,6 +128,9 @@ * HLS Extension: * DASH Extension: * Smooth Streaming Extension: + * Fix a `Bad magic number for Bundle` error when playing SmoothStreaming + streams with text tracks + ([#1779](https://github.com/androidx/media/issues/1779)). * RTSP Extension: * Fix user info removal for URLs that contain encoded @ characters ([#1138](https://github.com/androidx/media/pull/1138)). diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java index 3a556970ba..a3ef9643b3 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java @@ -448,7 +448,7 @@ public class FragmentedMp4Extractor implements Extractor { if (sideloadedTrack != null) { TrackBundle bundle = new TrackBundle( - output.track(0, sideloadedTrack.type), + extractorOutput.track(0, sideloadedTrack.type), new TrackSampleTable( sideloadedTrack, /* offsets= */ new long[0],