From e51c293f753174b9e013023980b6433bc8663c44 Mon Sep 17 00:00:00 2001 From: jbibik Date: Mon, 15 Jan 2024 08:29:26 -0800 Subject: [PATCH] Plumb SubtitleParser.Factory into MatroskaExtractor MatroskaExtractor will no longer be wrapped in SubtitleTranscodingExtractor, but instead use SubtitleTranscodingExtractorOutput under the hood. FLAG_EMIT_RAW_SUBTITLE_DATA flag will be used to toggle between subtitle parsing during extraction (before the sample queue) or during decoding (after the sample queue). The new extractor dump files generated by `MatroskaExtractorTest` now follow the new parsing logic and hence have mimeType as `x-media3-cues`. PiperOrigin-RevId: 598616231 --- .../media3/decoder/flac/FlacPlaybackTest.java | 4 +- .../media3/decoder/opus/OpusPlaybackTest.java | 4 +- .../media3/decoder/vp9/VpxPlaybackTest.java | 4 +- .../source/chunk/BundledChunkExtractor.java | 14 +- .../extractor/DefaultExtractorsFactory.java | 11 +- .../extractor/mkv/MatroskaExtractor.java | 74 ++++- .../DefaultExtractorsFactoryTest.java | 39 --- .../extractor/mkv/MatroskaExtractorTest.java | 123 ++++++-- ...TranscodingExtractorParameterizedTest.java | 91 ------ .../SubtitleTranscodingExtractorTest.java | 44 --- .../full_blocks.mkv.0.dump | 30 ++ .../full_blocks.mkv.1.dump | 30 ++ .../full_blocks.mkv.2.dump | 30 ++ .../full_blocks.mkv.3.dump | 30 ++ .../full_blocks.mkv.unknown_length.dump | 30 ++ ...sample_with_null_terminated_srt.mkv.0.dump | 283 +++++++++++++++++ ...sample_with_null_terminated_srt.mkv.1.dump | 283 +++++++++++++++++ ...sample_with_null_terminated_srt.mkv.2.dump | 283 +++++++++++++++++ ...sample_with_null_terminated_srt.mkv.3.dump | 283 +++++++++++++++++ ...ull_terminated_srt.mkv.unknown_length.dump | 283 +++++++++++++++++ ...h_null_terminated_ssa_subtitles.mkv.0.dump | 285 ++++++++++++++++++ ...h_null_terminated_ssa_subtitles.mkv.1.dump | 285 ++++++++++++++++++ ...h_null_terminated_ssa_subtitles.mkv.2.dump | 285 ++++++++++++++++++ ...h_null_terminated_ssa_subtitles.mkv.3.dump | 285 ++++++++++++++++++ ...ated_ssa_subtitles.mkv.unknown_length.dump | 285 ++++++++++++++++++ ...h_null_terminated_vtt_subtitles.mkv.0.dump | 282 +++++++++++++++++ ...h_null_terminated_vtt_subtitles.mkv.1.dump | 282 +++++++++++++++++ ...h_null_terminated_vtt_subtitles.mkv.2.dump | 282 +++++++++++++++++ ...h_null_terminated_vtt_subtitles.mkv.3.dump | 282 +++++++++++++++++ ...ated_vtt_subtitles.mkv.unknown_length.dump | 282 +++++++++++++++++ .../sample_with_overlapping_srt.mkv.0.dump} | 0 .../sample_with_overlapping_srt.mkv.1.dump} | 0 .../sample_with_overlapping_srt.mkv.2.dump} | 0 .../sample_with_overlapping_srt.mkv.3.dump} | 0 ...h_overlapping_srt.mkv.unknown_length.dump} | 0 ...with_overlapping_ssa_subtitles.mkv.0.dump} | 0 ...with_overlapping_ssa_subtitles.mkv.1.dump} | 0 ...with_overlapping_ssa_subtitles.mkv.2.dump} | 0 ...with_overlapping_ssa_subtitles.mkv.3.dump} | 0 ...ing_ssa_subtitles.mkv.unknown_length.dump} | 0 .../sample_with_srt.mkv.0.dump} | 0 .../sample_with_srt.mkv.1.dump} | 0 .../sample_with_srt.mkv.2.dump} | 0 .../sample_with_srt.mkv.3.dump} | 0 .../sample_with_srt.mkv.unknown_length.dump} | 0 .../sample_with_ssa_subtitles.mkv.0.dump} | 0 .../sample_with_ssa_subtitles.mkv.1.dump} | 0 .../sample_with_ssa_subtitles.mkv.2.dump} | 0 .../sample_with_ssa_subtitles.mkv.3.dump} | 0 ...ith_ssa_subtitles.mkv.unknown_length.dump} | 0 .../sample_with_vtt_subtitles.mkv.0.dump | 282 +++++++++++++++++ .../sample_with_vtt_subtitles.mkv.1.dump | 282 +++++++++++++++++ .../sample_with_vtt_subtitles.mkv.2.dump | 282 +++++++++++++++++ .../sample_with_vtt_subtitles.mkv.3.dump | 282 +++++++++++++++++ ...with_vtt_subtitles.mkv.unknown_length.dump | 282 +++++++++++++++++ 55 files changed, 6010 insertions(+), 208 deletions(-) delete mode 100644 libraries/extractor/src/test/java/androidx/media3/extractor/text/SubtitleTranscodingExtractorParameterizedTest.java delete mode 100644 libraries/extractor/src/test/java/androidx/media3/extractor/text/SubtitleTranscodingExtractorTest.java create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.unknown_length.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.unknown_length.dump rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/overlapping_srt_in_mkv.0.dump => mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.0.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/overlapping_srt_in_mkv.1.dump => mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.1.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/overlapping_srt_in_mkv.2.dump => mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.2.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/overlapping_srt_in_mkv.3.dump => mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.3.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/overlapping_srt_in_mkv.unknown_length.dump => mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.unknown_length.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/overlapping_ssa_in_mkv.0.dump => mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.0.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/overlapping_ssa_in_mkv.1.dump => mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.1.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/overlapping_ssa_in_mkv.2.dump => mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.2.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/overlapping_ssa_in_mkv.3.dump => mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.3.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/overlapping_ssa_in_mkv.unknown_length.dump => mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.unknown_length.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/srt_in_mkv.0.dump => mkv_subtitle_transcoding/sample_with_srt.mkv.0.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/srt_in_mkv.1.dump => mkv_subtitle_transcoding/sample_with_srt.mkv.1.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/srt_in_mkv.2.dump => mkv_subtitle_transcoding/sample_with_srt.mkv.2.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/srt_in_mkv.3.dump => mkv_subtitle_transcoding/sample_with_srt.mkv.3.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/srt_in_mkv.unknown_length.dump => mkv_subtitle_transcoding/sample_with_srt.mkv.unknown_length.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/ssa_in_mkv.0.dump => mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.0.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/ssa_in_mkv.1.dump => mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.1.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/ssa_in_mkv.2.dump => mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.2.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/ssa_in_mkv.3.dump => mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.3.dump} (100%) rename libraries/test_data/src/test/assets/extractordumps/{subtitle_transcoding/ssa_in_mkv.unknown_length.dump => mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.unknown_length.dump} (100%) create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.0.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.1.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.2.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.3.dump create mode 100644 libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.unknown_length.dump diff --git a/libraries/decoder_flac/src/androidTest/java/androidx/media3/decoder/flac/FlacPlaybackTest.java b/libraries/decoder_flac/src/androidTest/java/androidx/media3/decoder/flac/FlacPlaybackTest.java index 3b787c106b..5061d3fd70 100644 --- a/libraries/decoder_flac/src/androidTest/java/androidx/media3/decoder/flac/FlacPlaybackTest.java +++ b/libraries/decoder_flac/src/androidTest/java/androidx/media3/decoder/flac/FlacPlaybackTest.java @@ -33,6 +33,7 @@ import androidx.media3.exoplayer.audio.DefaultAudioSink; import androidx.media3.exoplayer.source.MediaSource; import androidx.media3.exoplayer.source.ProgressiveMediaSource; import androidx.media3.extractor.mkv.MatroskaExtractor; +import androidx.media3.extractor.text.DefaultSubtitleParserFactory; import androidx.media3.test.utils.CapturingAudioSink; import androidx.media3.test.utils.DumpFileAsserts; import androidx.test.core.app.ApplicationProvider; @@ -119,7 +120,8 @@ public class FlacPlaybackTest { player.addListener(this); MediaSource mediaSource = new ProgressiveMediaSource.Factory( - new DefaultDataSource.Factory(context), MatroskaExtractor.FACTORY) + new DefaultDataSource.Factory(context), + MatroskaExtractor.newFactory(new DefaultSubtitleParserFactory())) .createMediaSource(MediaItem.fromUri(uri)); player.setMediaSource(mediaSource); player.prepare(); diff --git a/libraries/decoder_opus/src/androidTest/java/androidx/media3/decoder/opus/OpusPlaybackTest.java b/libraries/decoder_opus/src/androidTest/java/androidx/media3/decoder/opus/OpusPlaybackTest.java index 93f3a4d733..2d2452904e 100644 --- a/libraries/decoder_opus/src/androidTest/java/androidx/media3/decoder/opus/OpusPlaybackTest.java +++ b/libraries/decoder_opus/src/androidTest/java/androidx/media3/decoder/opus/OpusPlaybackTest.java @@ -33,6 +33,7 @@ import androidx.media3.exoplayer.audio.DefaultAudioSink; import androidx.media3.exoplayer.source.MediaSource; import androidx.media3.exoplayer.source.ProgressiveMediaSource; import androidx.media3.extractor.mkv.MatroskaExtractor; +import androidx.media3.extractor.text.DefaultSubtitleParserFactory; import androidx.media3.test.utils.CapturingAudioSink; import androidx.media3.test.utils.DumpFileAsserts; import androidx.test.core.app.ApplicationProvider; @@ -126,7 +127,8 @@ public class OpusPlaybackTest { player.addListener(this); MediaSource mediaSource = new ProgressiveMediaSource.Factory( - new DefaultDataSource.Factory(context), MatroskaExtractor.FACTORY) + new DefaultDataSource.Factory(context), + MatroskaExtractor.newFactory(new DefaultSubtitleParserFactory())) .createMediaSource(MediaItem.fromUri(uri)); player.setMediaSource(mediaSource); player.prepare(); diff --git a/libraries/decoder_vp9/src/androidTest/java/androidx/media3/decoder/vp9/VpxPlaybackTest.java b/libraries/decoder_vp9/src/androidTest/java/androidx/media3/decoder/vp9/VpxPlaybackTest.java index ef0532c68c..2dd65ce3ea 100644 --- a/libraries/decoder_vp9/src/androidTest/java/androidx/media3/decoder/vp9/VpxPlaybackTest.java +++ b/libraries/decoder_vp9/src/androidTest/java/androidx/media3/decoder/vp9/VpxPlaybackTest.java @@ -34,6 +34,7 @@ import androidx.media3.exoplayer.source.MediaSource; import androidx.media3.exoplayer.source.ProgressiveMediaSource; import androidx.media3.exoplayer.video.VideoDecoderGLSurfaceView; import androidx.media3.extractor.mkv.MatroskaExtractor; +import androidx.media3.extractor.text.DefaultSubtitleParserFactory; import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import org.junit.Before; @@ -134,7 +135,8 @@ public class VpxPlaybackTest { player.addListener(this); MediaSource mediaSource = new ProgressiveMediaSource.Factory( - new DefaultDataSource.Factory(context), MatroskaExtractor.FACTORY) + new DefaultDataSource.Factory(context), + MatroskaExtractor.newFactory(new DefaultSubtitleParserFactory())) .createMediaSource(MediaItem.fromUri(uri)); player.setVideoSurfaceView(new VideoDecoderGLSurfaceView(context)); player.setMediaSource(mediaSource); diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/chunk/BundledChunkExtractor.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/chunk/BundledChunkExtractor.java index 9c187fd88a..d3c6d653cd 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/chunk/BundledChunkExtractor.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/chunk/BundledChunkExtractor.java @@ -99,7 +99,16 @@ public final class BundledChunkExtractor implements ExtractorOutput, ChunkExtrac subtitleParserFactory.create(representationFormat), representationFormat); } } else if (MimeTypes.isMatroska(containerMimeType)) { - extractor = new MatroskaExtractor(MatroskaExtractor.FLAG_DISABLE_SEEK_FOR_CUES); + @MatroskaExtractor.Flags int flags = MatroskaExtractor.FLAG_DISABLE_SEEK_FOR_CUES; + if (subtitleParserFactory == null) { + flags |= MatroskaExtractor.FLAG_EMIT_RAW_SUBTITLE_DATA; + } + extractor = + new MatroskaExtractor( + subtitleParserFactory != null + ? subtitleParserFactory + : SubtitleParser.Factory.UNSUPPORTED, + flags); } else if (Objects.equals(containerMimeType, MimeTypes.IMAGE_JPEG)) { extractor = new JpegExtractor(JpegExtractor.FLAG_READ_IMAGE); } else if (Objects.equals(containerMimeType, MimeTypes.IMAGE_PNG)) { @@ -125,7 +134,8 @@ public final class BundledChunkExtractor implements ExtractorOutput, ChunkExtrac } if (subtitleParserFactory != null && !MimeTypes.isText(containerMimeType) - && !(extractor.getUnderlyingImplementation() instanceof FragmentedMp4Extractor)) { + && !(extractor.getUnderlyingImplementation() instanceof FragmentedMp4Extractor) + && !(extractor.getUnderlyingImplementation() instanceof MatroskaExtractor)) { extractor = new SubtitleTranscodingExtractor(extractor, subtitleParserFactory); } return new BundledChunkExtractor(extractor, primaryTrackType, representationFormat); diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/DefaultExtractorsFactory.java b/libraries/extractor/src/main/java/androidx/media3/extractor/DefaultExtractorsFactory.java index af036854b3..2cc408f825 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/DefaultExtractorsFactory.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/DefaultExtractorsFactory.java @@ -249,7 +249,7 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory { /** * Sets flags for {@link MatroskaExtractor} instances created by the factory. * - * @see MatroskaExtractor#MatroskaExtractor(int) + * @see MatroskaExtractor#MatroskaExtractor(SubtitleParser.Factory, int) * @param flags The flags to use. * @return The factory, for convenience. */ @@ -442,6 +442,7 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory { && !(extractor.getUnderlyingImplementation() instanceof Mp4Extractor) && !(extractor.getUnderlyingImplementation() instanceof TsExtractor) && !(extractor.getUnderlyingImplementation() instanceof AviExtractor) + && !(extractor.getUnderlyingImplementation() instanceof MatroskaExtractor) ? new SubtitleTranscodingExtractor(extractor, subtitleParserFactory) : extractor; } @@ -490,7 +491,13 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory { extractors.add(new FlvExtractor()); break; case FileTypes.MATROSKA: - extractors.add(new MatroskaExtractor(matroskaFlags)); + extractors.add( + new MatroskaExtractor( + subtitleParserFactory, + matroskaFlags + | (textTrackTranscodingEnabled + ? 0 + : MatroskaExtractor.FLAG_EMIT_RAW_SUBTITLE_DATA))); break; case FileTypes.MP3: extractors.add( diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java index 8f402c6389..3dc2e5999e 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java @@ -56,6 +56,8 @@ import androidx.media3.extractor.PositionHolder; import androidx.media3.extractor.SeekMap; import androidx.media3.extractor.TrackOutput; import androidx.media3.extractor.TrueHdSampleRechunker; +import androidx.media3.extractor.text.SubtitleParser; +import androidx.media3.extractor.text.SubtitleTranscodingExtractorOutput; import com.google.common.collect.ImmutableList; import java.io.IOException; import java.lang.annotation.Documented; @@ -80,19 +82,30 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull; @UnstableApi public class MatroskaExtractor implements Extractor { - /** Factory for {@link MatroskaExtractor} instances. */ + /** + * @deprecated Use {@link #newFactory(SubtitleParser.Factory)} instead. + */ + @Deprecated public static final ExtractorsFactory FACTORY = () -> new Extractor[] {new MatroskaExtractor()}; /** - * Flags controlling the behavior of the extractor. Possible flag value is {@link - * #FLAG_DISABLE_SEEK_FOR_CUES}. + * Creates a factory for {@link MatroskaExtractor} instances with the provided {@link + * SubtitleParser.Factory}. + */ + public static ExtractorsFactory newFactory(SubtitleParser.Factory subtitleParserFactory) { + return () -> new Extractor[] {new MatroskaExtractor(subtitleParserFactory)}; + } + + /** + * Flags controlling the behavior of the extractor. Possible flag values are {@link + * #FLAG_DISABLE_SEEK_FOR_CUES} and {#FLAG_EMIT_RAW_SUBTITLE_DATA}. */ @Documented @Retention(RetentionPolicy.SOURCE) @Target(TYPE_USE) @IntDef( flag = true, - value = {FLAG_DISABLE_SEEK_FOR_CUES}) + value = {FLAG_DISABLE_SEEK_FOR_CUES, FLAG_EMIT_RAW_SUBTITLE_DATA}) public @interface Flags {} /** @@ -105,6 +118,12 @@ public class MatroskaExtractor implements Extractor { */ public static final int FLAG_DISABLE_SEEK_FOR_CUES = 1; + /** + * Flag to use the source subtitle formats without modification. If unset, subtitles will be + * transcoded to {@link MimeTypes#APPLICATION_MEDIA3_CUES} during extraction. + */ + public static final int FLAG_EMIT_RAW_SUBTITLE_DATA = 1 << 1; // 2 + private static final String TAG = "MatroskaExtractor"; private static final int UNSET_ENTRY_ID = -1; @@ -397,6 +416,8 @@ public class MatroskaExtractor implements Extractor { private final VarintReader varintReader; private final SparseArray tracks; private final boolean seekForCuesEnabled; + private final boolean parseSubtitlesDuringExtraction; + private final SubtitleParser.Factory subtitleParserFactory; // Temporary arrays. private final ParsableByteArray nalStartCode; @@ -467,18 +488,53 @@ public class MatroskaExtractor implements Extractor { // Extractor outputs. private @MonotonicNonNull ExtractorOutput extractorOutput; + /** + * @deprecated Use {@link #MatroskaExtractor(SubtitleParser.Factory)} instead. + */ + @Deprecated public MatroskaExtractor() { - this(0); + this(new DefaultEbmlReader(), FLAG_EMIT_RAW_SUBTITLE_DATA, SubtitleParser.Factory.UNSUPPORTED); } + /** + * @deprecated Use {@link #MatroskaExtractor(SubtitleParser.Factory, int)} instead. + */ + @Deprecated public MatroskaExtractor(@Flags int flags) { - this(new DefaultEbmlReader(), flags); + this( + new DefaultEbmlReader(), + flags | FLAG_EMIT_RAW_SUBTITLE_DATA, + SubtitleParser.Factory.UNSUPPORTED); } - /* package */ MatroskaExtractor(EbmlReader reader, @Flags int flags) { + /** + * Constructs an instance. + * + * @param subtitleParserFactory The {@link SubtitleParser.Factory} for parsing subtitles during + * extraction. + */ + public MatroskaExtractor(SubtitleParser.Factory subtitleParserFactory) { + this(new DefaultEbmlReader(), /* flags= */ 0, subtitleParserFactory); + } + + /** + * Constructs an instance. + * + * @param subtitleParserFactory The {@link SubtitleParser.Factory} for parsing subtitles during + * extraction. + * @param flags Flags that control the extractor's behavior. + */ + public MatroskaExtractor(SubtitleParser.Factory subtitleParserFactory, @Flags int flags) { + this(new DefaultEbmlReader(), flags, subtitleParserFactory); + } + + /* package */ MatroskaExtractor( + EbmlReader reader, @Flags int flags, SubtitleParser.Factory subtitleParserFactory) { this.reader = reader; this.reader.init(new InnerEbmlProcessor()); + this.subtitleParserFactory = subtitleParserFactory; seekForCuesEnabled = (flags & FLAG_DISABLE_SEEK_FOR_CUES) == 0; + parseSubtitlesDuringExtraction = (flags & FLAG_EMIT_RAW_SUBTITLE_DATA) == 0; varintReader = new VarintReader(); tracks = new SparseArray<>(); scratch = new ParsableByteArray(4); @@ -502,6 +558,10 @@ public class MatroskaExtractor implements Extractor { @Override public final void init(ExtractorOutput output) { extractorOutput = output; + extractorOutput = + parseSubtitlesDuringExtraction + ? new SubtitleTranscodingExtractorOutput(output, subtitleParserFactory) + : output; } @CallSuper diff --git a/libraries/extractor/src/test/java/androidx/media3/extractor/DefaultExtractorsFactoryTest.java b/libraries/extractor/src/test/java/androidx/media3/extractor/DefaultExtractorsFactoryTest.java index cd3b017be1..2d0313b1a8 100644 --- a/libraries/extractor/src/test/java/androidx/media3/extractor/DefaultExtractorsFactoryTest.java +++ b/libraries/extractor/src/test/java/androidx/media3/extractor/DefaultExtractorsFactoryTest.java @@ -15,7 +15,6 @@ */ package androidx.media3.extractor; -import static androidx.media3.common.util.Assertions.checkState; import static com.google.common.truth.Truth.assertThat; import android.net.Uri; @@ -144,44 +143,6 @@ public final class DefaultExtractorsFactoryTest { } } - @Test - public void subtitleTranscoding_ifEnabled_wrapsExtractorsThatSupportMuxedSubtitles() { - DefaultExtractorsFactory defaultExtractorsFactory = - new DefaultExtractorsFactory().setTextTrackTranscodingEnabled(true); - - Extractor[] extractors = defaultExtractorsFactory.createExtractors(); - - Extractor aviExtractor = null; - Extractor matroskaExtractor = null; - Extractor mp4Extractor = null; - Extractor fragmentedMp4Extractor = null; - Extractor tsExtractor = null; - - for (Extractor extractor : extractors) { - if (extractor.getUnderlyingImplementation() instanceof AviExtractor) { - checkState(aviExtractor == null); - aviExtractor = extractor; - } else if (extractor.getUnderlyingImplementation() instanceof MatroskaExtractor) { - checkState(matroskaExtractor == null); - matroskaExtractor = extractor; - } else if (extractor.getUnderlyingImplementation() instanceof Mp4Extractor) { - checkState(mp4Extractor == null); - mp4Extractor = extractor; - } else if (extractor.getUnderlyingImplementation() instanceof FragmentedMp4Extractor) { - checkState(fragmentedMp4Extractor == null); - fragmentedMp4Extractor = extractor; - } else if (extractor.getUnderlyingImplementation() instanceof TsExtractor) { - checkState(tsExtractor == null); - tsExtractor = extractor; - } - } - assertThat(aviExtractor).isNotInstanceOf(SubtitleTranscodingExtractor.class); - assertThat(matroskaExtractor).isInstanceOf(SubtitleTranscodingExtractor.class); - assertThat(mp4Extractor).isNotInstanceOf(SubtitleTranscodingExtractor.class); - assertThat(fragmentedMp4Extractor).isNotInstanceOf(SubtitleTranscodingExtractor.class); - assertThat(tsExtractor).isNotInstanceOf(SubtitleTranscodingExtractor.class); - } - private static List> getUnderlyingExtractorClasses( Extractor[] extractors) { List> extractorClasses = new ArrayList<>(); diff --git a/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java b/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java index 6af8349348..3052d0aca3 100644 --- a/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java +++ b/libraries/extractor/src/test/java/androidx/media3/extractor/mkv/MatroskaExtractorTest.java @@ -15,8 +15,14 @@ */ package androidx.media3.extractor.mkv; +import static androidx.media3.extractor.mp4.FragmentedMp4Extractor.FLAG_EMIT_RAW_SUBTITLE_DATA; + +import androidx.media3.extractor.text.DefaultSubtitleParserFactory; +import androidx.media3.extractor.text.SubtitleParser; import androidx.media3.test.utils.ExtractorAsserts; -import com.google.common.collect.ImmutableList; +import com.google.common.base.Joiner; +import java.util.ArrayList; +import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.ParameterizedRobolectricTestRunner; @@ -27,90 +33,133 @@ import org.robolectric.ParameterizedRobolectricTestRunner.Parameters; @RunWith(ParameterizedRobolectricTestRunner.class) public final class MatroskaExtractorTest { - @Parameters(name = "{0}") - public static ImmutableList params() { - return ExtractorAsserts.configs(); + @Parameters(name = "{0},subtitlesParsedDuringExtraction={1}") + public static List params() { + List parameterList = new ArrayList<>(); + for (ExtractorAsserts.SimulationConfig config : ExtractorAsserts.configs()) { + parameterList.add(new Object[] {config, /* subtitlesParsedDuringExtraction */ true}); + parameterList.add(new Object[] {config, /* subtitlesParsedDuringExtraction */ false}); + } + return parameterList; } - @Parameter public ExtractorAsserts.SimulationConfig simulationConfig; + @Parameter(0) + public ExtractorAsserts.SimulationConfig simulationConfig; + + @Parameter(1) + public boolean subtitlesParsedDuringExtraction; @Test public void mkvSample() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, "media/mkv/sample.mkv", simulationConfig); + getExtractorFactory(subtitlesParsedDuringExtraction), + "media/mkv/sample.mkv", + simulationConfig); } @Test public void mkvSample_withSubripSubtitles() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, "media/mkv/sample_with_srt.mkv", simulationConfig); + getExtractorFactory(subtitlesParsedDuringExtraction), + "media/mkv/sample_with_srt.mkv", + getAssertionConfigWithPrefix( + "media/mkv/sample_with_srt.mkv", subtitlesParsedDuringExtraction), + simulationConfig); } @Test public void mkvSample_withNullTerminatedSubripSubtitles() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, "media/mkv/sample_with_null_terminated_srt.mkv", simulationConfig); + getExtractorFactory(subtitlesParsedDuringExtraction), + "media/mkv/sample_with_null_terminated_srt.mkv", + getAssertionConfigWithPrefix( + "media/mkv/sample_with_null_terminated_srt.mkv", subtitlesParsedDuringExtraction), + simulationConfig); } @Test public void mkvSample_withOverlappingSubripSubtitles() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, "media/mkv/sample_with_overlapping_srt.mkv", simulationConfig); + getExtractorFactory(subtitlesParsedDuringExtraction), + "media/mkv/sample_with_overlapping_srt.mkv", + getAssertionConfigWithPrefix( + "media/mkv/sample_with_overlapping_srt.mkv", subtitlesParsedDuringExtraction), + simulationConfig); } @Test public void mkvSample_withSsaSubtitles() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, "media/mkv/sample_with_ssa_subtitles.mkv", simulationConfig); + getExtractorFactory(subtitlesParsedDuringExtraction), + "media/mkv/sample_with_ssa_subtitles.mkv", + getAssertionConfigWithPrefix( + "media/mkv/sample_with_ssa_subtitles.mkv", subtitlesParsedDuringExtraction), + simulationConfig); } // https://github.com/google/ExoPlayer/pull/8265 @Test public void mkvSample_withNullTerminatedSsaSubtitles() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, + getExtractorFactory(subtitlesParsedDuringExtraction), "media/mkv/sample_with_null_terminated_ssa_subtitles.mkv", + getAssertionConfigWithPrefix( + "media/mkv/sample_with_null_terminated_ssa_subtitles.mkv", + subtitlesParsedDuringExtraction), simulationConfig); } @Test public void mkvSample_withOverlappingSsaSubtitles() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, + getExtractorFactory(subtitlesParsedDuringExtraction), "media/mkv/sample_with_overlapping_ssa_subtitles.mkv", + getAssertionConfigWithPrefix( + "media/mkv/sample_with_overlapping_ssa_subtitles.mkv", subtitlesParsedDuringExtraction), simulationConfig); } @Test public void mkvSample_withVttSubtitles() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, "media/mkv/sample_with_vtt_subtitles.mkv", simulationConfig); + getExtractorFactory(subtitlesParsedDuringExtraction), + "media/mkv/sample_with_vtt_subtitles.mkv", + getAssertionConfigWithPrefix( + "media/mkv/sample_with_vtt_subtitles.mkv", subtitlesParsedDuringExtraction), + simulationConfig); } @Test public void mkvSample_withNullTerminatedVttSubtitles() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, + getExtractorFactory(subtitlesParsedDuringExtraction), "media/mkv/sample_with_null_terminated_vtt_subtitles.mkv", + getAssertionConfigWithPrefix( + "media/mkv/sample_with_null_terminated_vtt_subtitles.mkv", + subtitlesParsedDuringExtraction), simulationConfig); } @Test public void mkvSample_withVorbisAudio() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, "media/mkv/sample_with_vorbis_audio.mkv", simulationConfig); + getExtractorFactory(subtitlesParsedDuringExtraction), + "media/mkv/sample_with_vorbis_audio.mkv", + simulationConfig); } @Test public void mkvSample_withOpusAudio() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, "media/mkv/sample_with_opus_audio.mkv", simulationConfig); + getExtractorFactory(subtitlesParsedDuringExtraction), + "media/mkv/sample_with_opus_audio.mkv", + simulationConfig); } @Test public void mkvSample_withHtcRotationInfoInTrackName() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, + getExtractorFactory(subtitlesParsedDuringExtraction), "media/mkv/sample_with_htc_rotation_track_name.mkv", simulationConfig); } @@ -118,18 +167,52 @@ public final class MatroskaExtractorTest { @Test public void mkvFullBlocksSample() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, "media/mkv/full_blocks.mkv", simulationConfig); + getExtractorFactory(subtitlesParsedDuringExtraction), + "media/mkv/full_blocks.mkv", + getAssertionConfigWithPrefix("media/mkv/full_blocks.mkv", subtitlesParsedDuringExtraction), + simulationConfig); } @Test public void webmSubsampleEncryption() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, "media/mkv/subsample_encrypted_noaltref.webm", simulationConfig); + getExtractorFactory(subtitlesParsedDuringExtraction), + "media/mkv/subsample_encrypted_noaltref.webm", + simulationConfig); } @Test public void webmSubsampleEncryptionWithAltrefFrames() throws Exception { ExtractorAsserts.assertBehavior( - MatroskaExtractor::new, "media/mkv/subsample_encrypted_altref.webm", simulationConfig); + getExtractorFactory(subtitlesParsedDuringExtraction), + "media/mkv/subsample_encrypted_altref.webm", + simulationConfig); + } + + private static ExtractorAsserts.ExtractorFactory getExtractorFactory( + boolean subtitlesParsedDuringExtraction) { + SubtitleParser.Factory subtitleParserFactory; + @MatroskaExtractor.Flags int flags; + if (subtitlesParsedDuringExtraction) { + subtitleParserFactory = new DefaultSubtitleParserFactory(); + flags = 0; + } else { + subtitleParserFactory = SubtitleParser.Factory.UNSUPPORTED; + flags = FLAG_EMIT_RAW_SUBTITLE_DATA; + } + + return () -> new MatroskaExtractor(subtitleParserFactory, flags); + } + + private ExtractorAsserts.AssertionConfig getAssertionConfigWithPrefix( + String filename, boolean subtitlesParsedDuringExtraction) { + String[] path = filename.split("/"); + path[0] = "extractordumps"; + String defaultExtractorDumps = Joiner.on('/').join(path); + path[1] = "mkv_subtitle_transcoding"; + String subtitledExtractorDumps = Joiner.on('/').join(path); + String prefix = + subtitlesParsedDuringExtraction ? subtitledExtractorDumps : defaultExtractorDumps; + return new ExtractorAsserts.AssertionConfig.Builder().setDumpFilesPrefix(prefix).build(); } } diff --git a/libraries/extractor/src/test/java/androidx/media3/extractor/text/SubtitleTranscodingExtractorParameterizedTest.java b/libraries/extractor/src/test/java/androidx/media3/extractor/text/SubtitleTranscodingExtractorParameterizedTest.java deleted file mode 100644 index 430103c4d4..0000000000 --- a/libraries/extractor/src/test/java/androidx/media3/extractor/text/SubtitleTranscodingExtractorParameterizedTest.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.media3.extractor.text; - -import androidx.media3.extractor.Extractor; -import androidx.media3.extractor.mkv.MatroskaExtractor; -import androidx.media3.test.utils.ExtractorAsserts; -import com.google.common.collect.ImmutableList; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.robolectric.ParameterizedRobolectricTestRunner; - -/** - * Parameterized tests for {@link SubtitleTranscodingExtractor}. - * - *

Non-parameterized tests are in {@link SubtitleTranscodingExtractorTest}. - */ -@RunWith(ParameterizedRobolectricTestRunner.class) -public class SubtitleTranscodingExtractorParameterizedTest { - - @ParameterizedRobolectricTestRunner.Parameters(name = "{0}") - public static ImmutableList params() { - return ExtractorAsserts.configs(); - } - - @ParameterizedRobolectricTestRunner.Parameter - public ExtractorAsserts.SimulationConfig simulationConfig; - - @Test - public void sampleWithSrtInMkv() throws Exception { - ExtractorAsserts.assertBehavior( - () -> createWrappedMatroskaExtractor(), - "media/mkv/sample_with_srt.mkv", - new ExtractorAsserts.AssertionConfig.Builder() - .setDumpFilesPrefix("extractordumps/subtitle_transcoding/srt_in_mkv") - .build(), - simulationConfig); - } - - @Test - public void sampleWithOverlappingSrtInMkv() throws Exception { - ExtractorAsserts.assertBehavior( - () -> createWrappedMatroskaExtractor(), - "media/mkv/sample_with_overlapping_srt.mkv", - new ExtractorAsserts.AssertionConfig.Builder() - .setDumpFilesPrefix("extractordumps/subtitle_transcoding/overlapping_srt_in_mkv") - .build(), - simulationConfig); - } - - @Test - public void sampleWithSsaInMkv() throws Exception { - ExtractorAsserts.assertBehavior( - () -> createWrappedMatroskaExtractor(), - "media/mkv/sample_with_ssa_subtitles.mkv", - new ExtractorAsserts.AssertionConfig.Builder() - .setDumpFilesPrefix("extractordumps/subtitle_transcoding/ssa_in_mkv") - .build(), - simulationConfig); - } - - @Test - public void sampleWithOverlappingSsaInMkv() throws Exception { - ExtractorAsserts.assertBehavior( - () -> createWrappedMatroskaExtractor(), - "media/mkv/sample_with_overlapping_ssa_subtitles.mkv", - new ExtractorAsserts.AssertionConfig.Builder() - .setDumpFilesPrefix("extractordumps/subtitle_transcoding/overlapping_ssa_in_mkv") - .build(), - simulationConfig); - } - - private static Extractor createWrappedMatroskaExtractor() { - return new SubtitleTranscodingExtractor( - new MatroskaExtractor(), new DefaultSubtitleParserFactory()); - } -} diff --git a/libraries/extractor/src/test/java/androidx/media3/extractor/text/SubtitleTranscodingExtractorTest.java b/libraries/extractor/src/test/java/androidx/media3/extractor/text/SubtitleTranscodingExtractorTest.java deleted file mode 100644 index e6ddfc055a..0000000000 --- a/libraries/extractor/src/test/java/androidx/media3/extractor/text/SubtitleTranscodingExtractorTest.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package androidx.media3.extractor.text; - -import static com.google.common.truth.Truth.assertThat; - -import androidx.media3.extractor.Extractor; -import androidx.media3.extractor.mkv.MatroskaExtractor; -import androidx.test.ext.junit.runners.AndroidJUnit4; -import org.junit.Test; -import org.junit.runner.RunWith; - -/** - * Non-parameterized tests for {@link SubtitleTranscodingExtractor}. - * - *

Parameterized tests are in {@link SubtitleTranscodingExtractorParameterizedTest}. - */ -@RunWith(AndroidJUnit4.class) -public class SubtitleTranscodingExtractorTest { - - @Test - public void underlyingImplementationReturnsDelegate() { - Extractor matroskaExtractor = new MatroskaExtractor(); - Extractor subtitleTranscodingExtractor = - new SubtitleTranscodingExtractor(matroskaExtractor, new DefaultSubtitleParserFactory()); - - assertThat(subtitleTranscodingExtractor.getUnderlyingImplementation()) - .isSameInstanceAs(matroskaExtractor); - } -} diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.0.dump new file mode 100644 index 0000000000..35544d6d1c --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.0.dump @@ -0,0 +1,30 @@ +seekMap: + isSeekable = true + duration = 8901000 + getPosition(0) = [[timeUs=0, position=5401]] + getPosition(1) = [[timeUs=0, position=5401], [timeUs=2345000, position=5401]] + getPosition(4450500) = [[timeUs=2345000, position=5401], [timeUs=4567000, position=5401]] + getPosition(8901000) = [[timeUs=4567000, position=5401]] +numberOfTracks = 1 +track 1: + total output bytes = 2951 + sample count = 3 + format 0: + id = 1 + sampleMimeType = application/x-media3-cues + codecs = application/x-subrip + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 972, hash 8E8A2E4B + sample 1: + time = 2345000 + flags = 1 + data = length 1007, hash 87030429 + sample 2: + time = 4567000 + flags = 1 + data = length 972, hash C2C47517 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.1.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.1.dump new file mode 100644 index 0000000000..35544d6d1c --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.1.dump @@ -0,0 +1,30 @@ +seekMap: + isSeekable = true + duration = 8901000 + getPosition(0) = [[timeUs=0, position=5401]] + getPosition(1) = [[timeUs=0, position=5401], [timeUs=2345000, position=5401]] + getPosition(4450500) = [[timeUs=2345000, position=5401], [timeUs=4567000, position=5401]] + getPosition(8901000) = [[timeUs=4567000, position=5401]] +numberOfTracks = 1 +track 1: + total output bytes = 2951 + sample count = 3 + format 0: + id = 1 + sampleMimeType = application/x-media3-cues + codecs = application/x-subrip + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 972, hash 8E8A2E4B + sample 1: + time = 2345000 + flags = 1 + data = length 1007, hash 87030429 + sample 2: + time = 4567000 + flags = 1 + data = length 972, hash C2C47517 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.2.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.2.dump new file mode 100644 index 0000000000..35544d6d1c --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.2.dump @@ -0,0 +1,30 @@ +seekMap: + isSeekable = true + duration = 8901000 + getPosition(0) = [[timeUs=0, position=5401]] + getPosition(1) = [[timeUs=0, position=5401], [timeUs=2345000, position=5401]] + getPosition(4450500) = [[timeUs=2345000, position=5401], [timeUs=4567000, position=5401]] + getPosition(8901000) = [[timeUs=4567000, position=5401]] +numberOfTracks = 1 +track 1: + total output bytes = 2951 + sample count = 3 + format 0: + id = 1 + sampleMimeType = application/x-media3-cues + codecs = application/x-subrip + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 972, hash 8E8A2E4B + sample 1: + time = 2345000 + flags = 1 + data = length 1007, hash 87030429 + sample 2: + time = 4567000 + flags = 1 + data = length 972, hash C2C47517 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.3.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.3.dump new file mode 100644 index 0000000000..35544d6d1c --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.3.dump @@ -0,0 +1,30 @@ +seekMap: + isSeekable = true + duration = 8901000 + getPosition(0) = [[timeUs=0, position=5401]] + getPosition(1) = [[timeUs=0, position=5401], [timeUs=2345000, position=5401]] + getPosition(4450500) = [[timeUs=2345000, position=5401], [timeUs=4567000, position=5401]] + getPosition(8901000) = [[timeUs=4567000, position=5401]] +numberOfTracks = 1 +track 1: + total output bytes = 2951 + sample count = 3 + format 0: + id = 1 + sampleMimeType = application/x-media3-cues + codecs = application/x-subrip + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 972, hash 8E8A2E4B + sample 1: + time = 2345000 + flags = 1 + data = length 1007, hash 87030429 + sample 2: + time = 4567000 + flags = 1 + data = length 972, hash C2C47517 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.unknown_length.dump new file mode 100644 index 0000000000..35544d6d1c --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/full_blocks.mkv.unknown_length.dump @@ -0,0 +1,30 @@ +seekMap: + isSeekable = true + duration = 8901000 + getPosition(0) = [[timeUs=0, position=5401]] + getPosition(1) = [[timeUs=0, position=5401], [timeUs=2345000, position=5401]] + getPosition(4450500) = [[timeUs=2345000, position=5401], [timeUs=4567000, position=5401]] + getPosition(8901000) = [[timeUs=4567000, position=5401]] +numberOfTracks = 1 +track 1: + total output bytes = 2951 + sample count = 3 + format 0: + id = 1 + sampleMimeType = application/x-media3-cues + codecs = application/x-subrip + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 972, hash 8E8A2E4B + sample 1: + time = 2345000 + flags = 1 + data = length 1007, hash 87030429 + sample 2: + time = 4567000 + flags = 1 + data = length 972, hash C2C47517 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.0.dump new file mode 100644 index 0000000000..5470deb7aa --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.0.dump @@ -0,0 +1,283 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=1163]] + getPosition(1) = [[timeUs=0, position=1163]] + getPosition(617000) = [[timeUs=0, position=1163]] + getPosition(1234000) = [[timeUs=0, position=1163]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 97000 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131000 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166000 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201000 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236000 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270000 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 306000 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 376000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410000 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445000 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480000 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 514000 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 550000 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 585000 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654000 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 690000 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759000 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 793000 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 829000 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 864000 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932000 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 968000 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002000 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037000 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 962 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = application/x-subrip + selectionFlags = [default] + language = en + label = Subs Label + sample 0: + time = 0 + flags = 1 + data = length 962, hash 6D7C55B3 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.1.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.1.dump new file mode 100644 index 0000000000..5470deb7aa --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.1.dump @@ -0,0 +1,283 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=1163]] + getPosition(1) = [[timeUs=0, position=1163]] + getPosition(617000) = [[timeUs=0, position=1163]] + getPosition(1234000) = [[timeUs=0, position=1163]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 97000 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131000 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166000 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201000 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236000 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270000 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 306000 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 376000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410000 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445000 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480000 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 514000 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 550000 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 585000 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654000 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 690000 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759000 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 793000 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 829000 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 864000 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932000 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 968000 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002000 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037000 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 962 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = application/x-subrip + selectionFlags = [default] + language = en + label = Subs Label + sample 0: + time = 0 + flags = 1 + data = length 962, hash 6D7C55B3 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.2.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.2.dump new file mode 100644 index 0000000000..5470deb7aa --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.2.dump @@ -0,0 +1,283 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=1163]] + getPosition(1) = [[timeUs=0, position=1163]] + getPosition(617000) = [[timeUs=0, position=1163]] + getPosition(1234000) = [[timeUs=0, position=1163]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 97000 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131000 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166000 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201000 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236000 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270000 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 306000 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 376000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410000 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445000 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480000 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 514000 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 550000 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 585000 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654000 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 690000 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759000 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 793000 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 829000 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 864000 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932000 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 968000 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002000 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037000 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 962 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = application/x-subrip + selectionFlags = [default] + language = en + label = Subs Label + sample 0: + time = 0 + flags = 1 + data = length 962, hash 6D7C55B3 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.3.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.3.dump new file mode 100644 index 0000000000..5470deb7aa --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.3.dump @@ -0,0 +1,283 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=1163]] + getPosition(1) = [[timeUs=0, position=1163]] + getPosition(617000) = [[timeUs=0, position=1163]] + getPosition(1234000) = [[timeUs=0, position=1163]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 97000 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131000 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166000 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201000 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236000 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270000 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 306000 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 376000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410000 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445000 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480000 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 514000 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 550000 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 585000 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654000 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 690000 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759000 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 793000 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 829000 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 864000 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932000 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 968000 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002000 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037000 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 962 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = application/x-subrip + selectionFlags = [default] + language = en + label = Subs Label + sample 0: + time = 0 + flags = 1 + data = length 962, hash 6D7C55B3 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.unknown_length.dump new file mode 100644 index 0000000000..5470deb7aa --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_srt.mkv.unknown_length.dump @@ -0,0 +1,283 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=1163]] + getPosition(1) = [[timeUs=0, position=1163]] + getPosition(617000) = [[timeUs=0, position=1163]] + getPosition(1234000) = [[timeUs=0, position=1163]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 97000 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131000 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166000 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201000 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236000 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270000 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 306000 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 376000 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410000 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445000 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480000 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 514000 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 550000 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 585000 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654000 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 690000 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724000 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759000 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 793000 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 829000 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 864000 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932000 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 968000 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002000 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037000 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 962 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = application/x-subrip + selectionFlags = [default] + language = en + label = Subs Label + sample 0: + time = 0 + flags = 1 + data = length 962, hash 6D7C55B3 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.0.dump new file mode 100644 index 0000000000..2f036b6234 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.0.dump @@ -0,0 +1,285 @@ +seekMap: + isSeekable = true + duration = 1139000 + getPosition(0) = [[timeUs=0, position=6106]] + getPosition(1) = [[timeUs=0, position=6106], [timeUs=67000, position=6106]] + getPosition(569500) = [[timeUs=67000, position=6106]] + getPosition(1139000) = [[timeUs=67000, position=6106]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 67000 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 134000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 100000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 267000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 200000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 167000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 234000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 400000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 129000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 163829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 198659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 233489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 268319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 303149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 337979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 372809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 442829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 477659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 512489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 547319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 582149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 616979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 651809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 756659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 791489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 826319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 861149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 895979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 930809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 1034659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1069489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1104319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1249 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/x-ssa + selectionFlags = [default] + language = und + initializationData: + data = length 90, hash A5E21974 + data = length 470, hash 40E7D996 + sample 0: + time = 0 + flags = 1 + data = length 1249, hash 6B21A04D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.1.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.1.dump new file mode 100644 index 0000000000..2f036b6234 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.1.dump @@ -0,0 +1,285 @@ +seekMap: + isSeekable = true + duration = 1139000 + getPosition(0) = [[timeUs=0, position=6106]] + getPosition(1) = [[timeUs=0, position=6106], [timeUs=67000, position=6106]] + getPosition(569500) = [[timeUs=67000, position=6106]] + getPosition(1139000) = [[timeUs=67000, position=6106]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 67000 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 134000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 100000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 267000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 200000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 167000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 234000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 400000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 129000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 163829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 198659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 233489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 268319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 303149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 337979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 372809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 442829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 477659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 512489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 547319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 582149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 616979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 651809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 756659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 791489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 826319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 861149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 895979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 930809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 1034659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1069489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1104319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1249 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/x-ssa + selectionFlags = [default] + language = und + initializationData: + data = length 90, hash A5E21974 + data = length 470, hash 40E7D996 + sample 0: + time = 0 + flags = 1 + data = length 1249, hash 6B21A04D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.2.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.2.dump new file mode 100644 index 0000000000..2f036b6234 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.2.dump @@ -0,0 +1,285 @@ +seekMap: + isSeekable = true + duration = 1139000 + getPosition(0) = [[timeUs=0, position=6106]] + getPosition(1) = [[timeUs=0, position=6106], [timeUs=67000, position=6106]] + getPosition(569500) = [[timeUs=67000, position=6106]] + getPosition(1139000) = [[timeUs=67000, position=6106]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 67000 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 134000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 100000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 267000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 200000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 167000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 234000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 400000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 129000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 163829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 198659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 233489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 268319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 303149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 337979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 372809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 442829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 477659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 512489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 547319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 582149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 616979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 651809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 756659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 791489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 826319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 861149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 895979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 930809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 1034659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1069489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1104319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1249 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/x-ssa + selectionFlags = [default] + language = und + initializationData: + data = length 90, hash A5E21974 + data = length 470, hash 40E7D996 + sample 0: + time = 0 + flags = 1 + data = length 1249, hash 6B21A04D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.3.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.3.dump new file mode 100644 index 0000000000..2f036b6234 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.3.dump @@ -0,0 +1,285 @@ +seekMap: + isSeekable = true + duration = 1139000 + getPosition(0) = [[timeUs=0, position=6106]] + getPosition(1) = [[timeUs=0, position=6106], [timeUs=67000, position=6106]] + getPosition(569500) = [[timeUs=67000, position=6106]] + getPosition(1139000) = [[timeUs=67000, position=6106]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 67000 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 134000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 100000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 267000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 200000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 167000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 234000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 400000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 129000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 163829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 198659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 233489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 268319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 303149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 337979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 372809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 442829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 477659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 512489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 547319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 582149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 616979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 651809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 756659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 791489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 826319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 861149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 895979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 930809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 1034659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1069489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1104319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1249 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/x-ssa + selectionFlags = [default] + language = und + initializationData: + data = length 90, hash A5E21974 + data = length 470, hash 40E7D996 + sample 0: + time = 0 + flags = 1 + data = length 1249, hash 6B21A04D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.unknown_length.dump new file mode 100644 index 0000000000..2f036b6234 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_ssa_subtitles.mkv.unknown_length.dump @@ -0,0 +1,285 @@ +seekMap: + isSeekable = true + duration = 1139000 + getPosition(0) = [[timeUs=0, position=6106]] + getPosition(1) = [[timeUs=0, position=6106], [timeUs=67000, position=6106]] + getPosition(569500) = [[timeUs=67000, position=6106]] + getPosition(1139000) = [[timeUs=67000, position=6106]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 67000 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 134000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 100000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 267000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 200000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 167000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 234000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 400000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 334000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 300000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 367000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 500000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 467000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 434000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 634000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 567000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 534000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 600000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 767000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 700000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 667000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 734000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 900000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 834000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 800000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 867000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 1034000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 967000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 934000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 1000000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 129000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 163829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 198659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 233489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 268319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 303149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 337979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 372809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 408000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 442829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 477659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 512489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 547319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 582149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 616979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 651809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 687000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 721829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 756659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 791489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 826319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 861149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 895979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 930809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 965000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 999829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 1034659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1069489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1104319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1249 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/x-ssa + selectionFlags = [default] + language = und + initializationData: + data = length 90, hash A5E21974 + data = length 470, hash 40E7D996 + sample 0: + time = 0 + flags = 1 + data = length 1249, hash 6B21A04D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.0.dump new file mode 100644 index 0000000000..8f80ead618 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.0.dump @@ -0,0 +1,282 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=5661]] + getPosition(1) = [[timeUs=0, position=5661]] + getPosition(617000) = [[timeUs=0, position=5661]] + getPosition(1234000) = [[timeUs=0, position=5661]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 96829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 305809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 375829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 515149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 549979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 584809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 689659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 794149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 828979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 863809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 967659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1129 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/vtt + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 1129, hash 7CA6A835 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.1.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.1.dump new file mode 100644 index 0000000000..8f80ead618 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.1.dump @@ -0,0 +1,282 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=5661]] + getPosition(1) = [[timeUs=0, position=5661]] + getPosition(617000) = [[timeUs=0, position=5661]] + getPosition(1234000) = [[timeUs=0, position=5661]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 96829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 305809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 375829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 515149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 549979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 584809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 689659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 794149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 828979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 863809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 967659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1129 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/vtt + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 1129, hash 7CA6A835 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.2.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.2.dump new file mode 100644 index 0000000000..8f80ead618 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.2.dump @@ -0,0 +1,282 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=5661]] + getPosition(1) = [[timeUs=0, position=5661]] + getPosition(617000) = [[timeUs=0, position=5661]] + getPosition(1234000) = [[timeUs=0, position=5661]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 96829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 305809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 375829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 515149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 549979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 584809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 689659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 794149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 828979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 863809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 967659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1129 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/vtt + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 1129, hash 7CA6A835 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.3.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.3.dump new file mode 100644 index 0000000000..8f80ead618 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.3.dump @@ -0,0 +1,282 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=5661]] + getPosition(1) = [[timeUs=0, position=5661]] + getPosition(617000) = [[timeUs=0, position=5661]] + getPosition(1234000) = [[timeUs=0, position=5661]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 96829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 305809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 375829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 515149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 549979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 584809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 689659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 794149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 828979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 863809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 967659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1129 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/vtt + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 1129, hash 7CA6A835 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.unknown_length.dump new file mode 100644 index 0000000000..8f80ead618 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_null_terminated_vtt_subtitles.mkv.unknown_length.dump @@ -0,0 +1,282 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=5661]] + getPosition(1) = [[timeUs=0, position=5661]] + getPosition(617000) = [[timeUs=0, position=5661]] + getPosition(1234000) = [[timeUs=0, position=5661]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 96829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 305809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 375829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 515149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 549979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 584809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 689659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 794149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 828979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 863809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 967659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1129 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/vtt + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 1129, hash 7CA6A835 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_srt_in_mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.0.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_srt_in_mkv.0.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.0.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_srt_in_mkv.1.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.1.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_srt_in_mkv.1.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.1.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_srt_in_mkv.2.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.2.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_srt_in_mkv.2.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.2.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_srt_in_mkv.3.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.3.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_srt_in_mkv.3.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.3.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_srt_in_mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.unknown_length.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_srt_in_mkv.unknown_length.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_srt.mkv.unknown_length.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_ssa_in_mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.0.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_ssa_in_mkv.0.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.0.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_ssa_in_mkv.1.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.1.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_ssa_in_mkv.1.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.1.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_ssa_in_mkv.2.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.2.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_ssa_in_mkv.2.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.2.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_ssa_in_mkv.3.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.3.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_ssa_in_mkv.3.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.3.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_ssa_in_mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.unknown_length.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/overlapping_ssa_in_mkv.unknown_length.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_overlapping_ssa_subtitles.mkv.unknown_length.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/srt_in_mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_srt.mkv.0.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/srt_in_mkv.0.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_srt.mkv.0.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/srt_in_mkv.1.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_srt.mkv.1.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/srt_in_mkv.1.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_srt.mkv.1.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/srt_in_mkv.2.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_srt.mkv.2.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/srt_in_mkv.2.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_srt.mkv.2.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/srt_in_mkv.3.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_srt.mkv.3.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/srt_in_mkv.3.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_srt.mkv.3.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/srt_in_mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_srt.mkv.unknown_length.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/srt_in_mkv.unknown_length.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_srt.mkv.unknown_length.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/ssa_in_mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.0.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/ssa_in_mkv.0.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.0.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/ssa_in_mkv.1.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.1.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/ssa_in_mkv.1.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.1.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/ssa_in_mkv.2.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.2.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/ssa_in_mkv.2.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.2.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/ssa_in_mkv.3.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.3.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/ssa_in_mkv.3.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.3.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/ssa_in_mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.unknown_length.dump similarity index 100% rename from libraries/test_data/src/test/assets/extractordumps/subtitle_transcoding/ssa_in_mkv.unknown_length.dump rename to libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_ssa_subtitles.mkv.unknown_length.dump diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.0.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.0.dump new file mode 100644 index 0000000000..b98b89dbe3 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.0.dump @@ -0,0 +1,282 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=5661]] + getPosition(1) = [[timeUs=0, position=5661]] + getPosition(617000) = [[timeUs=0, position=5661]] + getPosition(1234000) = [[timeUs=0, position=5661]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 96829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 305809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 375829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 515149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 549979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 584809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 689659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 794149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 828979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 863809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 967659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1139 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/vtt + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 1139, hash 156F6F9D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.1.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.1.dump new file mode 100644 index 0000000000..b98b89dbe3 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.1.dump @@ -0,0 +1,282 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=5661]] + getPosition(1) = [[timeUs=0, position=5661]] + getPosition(617000) = [[timeUs=0, position=5661]] + getPosition(1234000) = [[timeUs=0, position=5661]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 96829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 305809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 375829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 515149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 549979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 584809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 689659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 794149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 828979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 863809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 967659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1139 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/vtt + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 1139, hash 156F6F9D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.2.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.2.dump new file mode 100644 index 0000000000..b98b89dbe3 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.2.dump @@ -0,0 +1,282 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=5661]] + getPosition(1) = [[timeUs=0, position=5661]] + getPosition(617000) = [[timeUs=0, position=5661]] + getPosition(1234000) = [[timeUs=0, position=5661]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 96829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 305809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 375829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 515149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 549979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 584809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 689659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 794149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 828979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 863809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 967659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1139 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/vtt + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 1139, hash 156F6F9D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.3.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.3.dump new file mode 100644 index 0000000000..b98b89dbe3 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.3.dump @@ -0,0 +1,282 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=5661]] + getPosition(1) = [[timeUs=0, position=5661]] + getPosition(617000) = [[timeUs=0, position=5661]] + getPosition(1234000) = [[timeUs=0, position=5661]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 96829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 305809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 375829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 515149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 549979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 584809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 689659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 794149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 828979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 863809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 967659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1139 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/vtt + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 1139, hash 156F6F9D +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.unknown_length.dump new file mode 100644 index 0000000000..b98b89dbe3 --- /dev/null +++ b/libraries/test_data/src/test/assets/extractordumps/mkv_subtitle_transcoding/sample_with_vtt_subtitles.mkv.unknown_length.dump @@ -0,0 +1,282 @@ +seekMap: + isSeekable = true + duration = 1234000 + getPosition(0) = [[timeUs=0, position=5661]] + getPosition(1) = [[timeUs=0, position=5661]] + getPosition(617000) = [[timeUs=0, position=5661]] + getPosition(1234000) = [[timeUs=0, position=5661]] +numberOfTracks = 3 +track 1: + total output bytes = 89502 + sample count = 30 + format 0: + id = 1 + sampleMimeType = video/avc + codecs = avc1.640034 + width = 1080 + height = 720 + selectionFlags = [default] + language = und + initializationData: + data = length 30, hash F6F3D010 + data = length 10, hash 7A0D0F2B + sample 0: + time = 0 + flags = 1 + data = length 36477, hash F0F36CFE + sample 1: + time = 67000 + flags = 0 + data = length 5341, hash 40B85E2 + sample 2: + time = 33000 + flags = 0 + data = length 596, hash 357B4D92 + sample 3: + time = 200000 + flags = 0 + data = length 7704, hash A39EDA06 + sample 4: + time = 133000 + flags = 0 + data = length 989, hash 2813C72D + sample 5: + time = 100000 + flags = 0 + data = length 721, hash C50D1C73 + sample 6: + time = 167000 + flags = 0 + data = length 519, hash 65FE1911 + sample 7: + time = 333000 + flags = 0 + data = length 6160, hash E1CAC0EC + sample 8: + time = 267000 + flags = 0 + data = length 953, hash 7160C661 + sample 9: + time = 233000 + flags = 0 + data = length 620, hash 7A7AE07C + sample 10: + time = 300000 + flags = 0 + data = length 405, hash 5CC7F4E7 + sample 11: + time = 433000 + flags = 0 + data = length 4852, hash 9DB6979D + sample 12: + time = 400000 + flags = 0 + data = length 547, hash E31A6979 + sample 13: + time = 367000 + flags = 0 + data = length 570, hash FEC40D00 + sample 14: + time = 567000 + flags = 0 + data = length 5525, hash 7C478F7E + sample 15: + time = 500000 + flags = 0 + data = length 1082, hash DA07059A + sample 16: + time = 467000 + flags = 0 + data = length 807, hash 93478E6B + sample 17: + time = 533000 + flags = 0 + data = length 744, hash 9A8E6026 + sample 18: + time = 700000 + flags = 0 + data = length 4732, hash C73B23C0 + sample 19: + time = 633000 + flags = 0 + data = length 1004, hash 8A19A228 + sample 20: + time = 600000 + flags = 0 + data = length 794, hash 8126022C + sample 21: + time = 667000 + flags = 0 + data = length 645, hash F08300E5 + sample 22: + time = 833000 + flags = 0 + data = length 2684, hash 727FE378 + sample 23: + time = 767000 + flags = 0 + data = length 787, hash 419A7821 + sample 24: + time = 733000 + flags = 0 + data = length 649, hash 5C159346 + sample 25: + time = 800000 + flags = 0 + data = length 509, hash F912D655 + sample 26: + time = 967000 + flags = 0 + data = length 1226, hash 29815C21 + sample 27: + time = 900000 + flags = 0 + data = length 898, hash D997AD0A + sample 28: + time = 867000 + flags = 0 + data = length 476, hash A0423645 + sample 29: + time = 933000 + flags = 0 + data = length 486, hash DDF32CBB +track 2: + total output bytes = 12120 + sample count = 29 + format 0: + id = 2 + sampleMimeType = audio/ac3 + channelCount = 1 + sampleRate = 44100 + selectionFlags = [default] + language = und + sample 0: + time = 62000 + flags = 1 + data = length 416, hash 211F2286 + sample 1: + time = 96829 + flags = 1 + data = length 418, hash 77425A86 + sample 2: + time = 131659 + flags = 1 + data = length 418, hash A0FE5CA1 + sample 3: + time = 166489 + flags = 1 + data = length 418, hash 2309B066 + sample 4: + time = 201319 + flags = 1 + data = length 418, hash 928A653B + sample 5: + time = 236149 + flags = 1 + data = length 418, hash 3422F0CB + sample 6: + time = 270979 + flags = 1 + data = length 418, hash EFF43D5B + sample 7: + time = 305809 + flags = 1 + data = length 418, hash FC8093C7 + sample 8: + time = 341000 + flags = 1 + data = length 418, hash CCC08A16 + sample 9: + time = 375829 + flags = 1 + data = length 418, hash 2A6EE863 + sample 10: + time = 410659 + flags = 1 + data = length 418, hash D69A9251 + sample 11: + time = 445489 + flags = 1 + data = length 418, hash BCFB758D + sample 12: + time = 480319 + flags = 1 + data = length 418, hash 11B66799 + sample 13: + time = 515149 + flags = 1 + data = length 418, hash C824D392 + sample 14: + time = 549979 + flags = 1 + data = length 418, hash C167D872 + sample 15: + time = 584809 + flags = 1 + data = length 418, hash 4221C855 + sample 16: + time = 620000 + flags = 1 + data = length 418, hash 4D4FF934 + sample 17: + time = 654829 + flags = 1 + data = length 418, hash 984AA025 + sample 18: + time = 689659 + flags = 1 + data = length 418, hash BB788B46 + sample 19: + time = 724489 + flags = 1 + data = length 418, hash 9EFBFD97 + sample 20: + time = 759319 + flags = 1 + data = length 418, hash DF1A460C + sample 21: + time = 794149 + flags = 1 + data = length 418, hash 2BDB56A + sample 22: + time = 828979 + flags = 1 + data = length 418, hash CA230060 + sample 23: + time = 863809 + flags = 1 + data = length 418, hash D2F19F41 + sample 24: + time = 898000 + flags = 1 + data = length 418, hash AF392D79 + sample 25: + time = 932829 + flags = 1 + data = length 418, hash C5D7F2A3 + sample 26: + time = 967659 + flags = 1 + data = length 418, hash 733A35AE + sample 27: + time = 1002489 + flags = 1 + data = length 418, hash DE46E5D3 + sample 28: + time = 1037319 + flags = 1 + data = length 418, hash 56AB8D37 +track 3: + total output bytes = 1139 + sample count = 1 + format 0: + id = 3 + sampleMimeType = application/x-media3-cues + codecs = text/vtt + selectionFlags = [default] + language = und + sample 0: + time = 0 + flags = 1 + data = length 1139, hash 156F6F9D +tracksEnded = true