diff --git a/libraries/muxer/src/androidTest/java/androidx/media3/muxer/Mp4MuxerEndToEndNonParameterizedAndroidTest.java b/libraries/muxer/src/androidTest/java/androidx/media3/muxer/Mp4MuxerEndToEndNonParameterizedAndroidTest.java index 4bf58117ea..3db14aced9 100644 --- a/libraries/muxer/src/androidTest/java/androidx/media3/muxer/Mp4MuxerEndToEndNonParameterizedAndroidTest.java +++ b/libraries/muxer/src/androidTest/java/androidx/media3/muxer/Mp4MuxerEndToEndNonParameterizedAndroidTest.java @@ -113,4 +113,63 @@ public class Mp4MuxerEndToEndNonParameterizedAndroidTest { /*DumpFileAsserts.assertOutput( context, fakeExtractorOutput, AndroidMuxerTestUtil.getExpectedDumpFilePath(vp9Mp4));*/ } + + @Test + public void createMp4File_withSampleBatchingDisabled_matchesExpected() throws Exception { + @Nullable Mp4Muxer mp4Muxer = null; + + try { + mp4Muxer = + new Mp4Muxer.Builder(checkNotNull(outputStream)).setSampleBatchingEnabled(false).build(); + mp4Muxer.addMetadataEntry( + new Mp4TimestampData( + /* creationTimestampSeconds= */ 100_000_000L, + /* modificationTimestampSeconds= */ 500_000_000L)); + feedInputDataToMuxer(context, mp4Muxer, checkNotNull(H265_HDR10_MP4)); + } finally { + if (mp4Muxer != null) { + mp4Muxer.close(); + } + } + + FakeExtractorOutput fakeExtractorOutput = + TestUtil.extractAllSamplesFromFilePath( + new Mp4Extractor(new DefaultSubtitleParserFactory()), checkNotNull(outputPath)); + DumpFileAsserts.assertOutput( + context, + fakeExtractorOutput, + AndroidMuxerTestUtil.getExpectedDumpFilePath("sample_batching_disabled_" + H265_HDR10_MP4)); + } + + @Test + public void createMp4File_withSampleBatchingAndAttemptStreamableOutputDisabled_matchesExpected() + throws Exception { + @Nullable Mp4Muxer mp4Muxer = null; + + try { + mp4Muxer = + new Mp4Muxer.Builder(checkNotNull(outputStream)) + .setSampleBatchingEnabled(false) + .setAttemptStreamableOutputEnabled(false) + .build(); + mp4Muxer.addMetadataEntry( + new Mp4TimestampData( + /* creationTimestampSeconds= */ 100_000_000L, + /* modificationTimestampSeconds= */ 500_000_000L)); + feedInputDataToMuxer(context, mp4Muxer, checkNotNull(H265_HDR10_MP4)); + } finally { + if (mp4Muxer != null) { + mp4Muxer.close(); + } + } + + FakeExtractorOutput fakeExtractorOutput = + TestUtil.extractAllSamplesFromFilePath( + new Mp4Extractor(new DefaultSubtitleParserFactory()), checkNotNull(outputPath)); + DumpFileAsserts.assertOutput( + context, + fakeExtractorOutput, + AndroidMuxerTestUtil.getExpectedDumpFilePath( + "sample_batching_and_attempt_streamable_output_disabled_" + H265_HDR10_MP4)); + } } diff --git a/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Muxer.java b/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Muxer.java index 7222971350..4e5af47d52 100644 --- a/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Muxer.java +++ b/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Muxer.java @@ -200,6 +200,7 @@ public final class Mp4Muxer implements Muxer { private @LastSampleDurationBehavior int lastSampleDurationBehavior; @Nullable private AnnexBToAvccConverter annexBToAvccConverter; private boolean sampleCopyEnabled; + private boolean sampleBatchingEnabled; private boolean attemptStreamableOutputEnabled; private @FileFormat int outputFileFormat; @Nullable private EditableVideoParameters editableVideoParameters; @@ -214,6 +215,7 @@ public final class Mp4Muxer implements Muxer { lastSampleDurationBehavior = LAST_SAMPLE_DURATION_BEHAVIOR_SET_FROM_END_OF_STREAM_BUFFER_OR_DUPLICATE_PREVIOUS; sampleCopyEnabled = true; + sampleBatchingEnabled = true; attemptStreamableOutputEnabled = true; outputFileFormat = FILE_FORMAT_DEFAULT; } @@ -260,6 +262,21 @@ public final class Mp4Muxer implements Muxer { return this; } + /** + * Sets whether to enable sample batching. + * + *

If sample batching is enabled, samples are {@linkplain #writeSampleData(TrackToken, + * ByteBuffer, BufferInfo) written} in batches for each track, otherwise samples are written as + * they arrive. + * + *

The default value is {@code true}. + */ + @CanIgnoreReturnValue + public Mp4Muxer.Builder setSampleBatchingEnabled(boolean enabled) { + this.sampleBatchingEnabled = enabled; + return this; + } + /** * Sets whether to attempt to write a file where the metadata is stored at the start, which can * make the file more efficient to read sequentially. @@ -309,6 +326,7 @@ public final class Mp4Muxer implements Muxer { lastSampleDurationBehavior, annexBToAvccConverter == null ? AnnexBToAvccConverter.DEFAULT : annexBToAvccConverter, sampleCopyEnabled, + sampleBatchingEnabled, attemptStreamableOutputEnabled, outputFileFormat, editableVideoParameters); @@ -322,6 +340,7 @@ public final class Mp4Muxer implements Muxer { private final @LastSampleDurationBehavior int lastSampleDurationBehavior; private final AnnexBToAvccConverter annexBToAvccConverter; private final boolean sampleCopyEnabled; + private final boolean sampleBatchingEnabled; private final boolean attemptStreamableOutputEnabled; private final @FileFormat int outputFileFormat; @Nullable private final EditableVideoParameters editableVideoParameters; @@ -339,6 +358,7 @@ public final class Mp4Muxer implements Muxer { @LastSampleDurationBehavior int lastFrameDurationBehavior, AnnexBToAvccConverter annexBToAvccConverter, boolean sampleCopyEnabled, + boolean sampleBatchingEnabled, boolean attemptStreamableOutputEnabled, @FileFormat int outputFileFormat, @Nullable EditableVideoParameters editableVideoParameters) { @@ -347,6 +367,7 @@ public final class Mp4Muxer implements Muxer { this.lastSampleDurationBehavior = lastFrameDurationBehavior; this.annexBToAvccConverter = annexBToAvccConverter; this.sampleCopyEnabled = sampleCopyEnabled; + this.sampleBatchingEnabled = sampleBatchingEnabled; this.attemptStreamableOutputEnabled = attemptStreamableOutputEnabled; this.outputFileFormat = outputFileFormat; this.editableVideoParameters = editableVideoParameters; @@ -358,6 +379,7 @@ public final class Mp4Muxer implements Muxer { annexBToAvccConverter, lastFrameDurationBehavior, sampleCopyEnabled, + sampleBatchingEnabled, attemptStreamableOutputEnabled); editableVideoTracks = new ArrayList<>(); } @@ -415,10 +437,13 @@ public final class Mp4Muxer implements Muxer { /** * {@inheritDoc} * - *

Samples are written to the file in batches. If {@link Builder#setSampleCopyEnabled(boolean) - * sample copying} is disabled, the {@code byteBuffer} and the {@code bufferInfo} must not be - * modified after calling this method. Otherwise, they are copied and it is safe to modify them - * after this method returns. + *

When sample batching is {@linkplain Mp4Muxer.Builder#setSampleBatchingEnabled(boolean) + * enabled}, provide sample data ({@link ByteBuffer}, {@link BufferInfo}) that won't be modified + * after calling the {@link #writeSampleData(TrackToken, ByteBuffer, BufferInfo)} method, unless + * sample copying is also {@linkplain Mp4Muxer.Builder#setSampleCopyEnabled(boolean) enabled}. + * This ensures data integrity within the batch. If sample copying is {@linkplain + * Mp4Muxer.Builder#setSampleCopyEnabled(boolean) enabled}, it's safe to modify the data after the + * method returns, as the muxer internally creates a sample copy. * * @param trackToken The {@link TrackToken} for which this sample is being written. * @param byteBuffer The encoded sample. The muxer takes ownership of the buffer if {@link @@ -522,6 +547,7 @@ public final class Mp4Muxer implements Muxer { annexBToAvccConverter, lastSampleDurationBehavior, sampleCopyEnabled, + sampleBatchingEnabled, attemptStreamableOutputEnabled); } } diff --git a/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Writer.java b/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Writer.java index 2a5639c39d..6fd67dd2d6 100644 --- a/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Writer.java +++ b/libraries/muxer/src/main/java/androidx/media3/muxer/Mp4Writer.java @@ -43,6 +43,8 @@ import java.util.concurrent.atomic.AtomicBoolean; /** Writes all media samples into a single mdat box. */ /* package */ final class Mp4Writer { private static final long INTERLEAVE_DURATION_US = 1_000_000L; + // Used for updating the moov box periodically when sample batching is disabled. + private static final long MOOV_BOX_UPDATE_INTERVAL_US = 1_000_000L; private static final int DEFAULT_MOOV_BOX_SIZE_BYTES = 400_000; private static final String FREE_BOX_TYPE = "free"; @@ -51,6 +53,7 @@ import java.util.concurrent.atomic.AtomicBoolean; private final AnnexBToAvccConverter annexBToAvccConverter; private final @Mp4Muxer.LastSampleDurationBehavior int lastSampleDurationBehavior; private final boolean sampleCopyEnabled; + private final boolean sampleBatchingEnabled; private final List tracks; private final List editableVideoTracks; private final AtomicBoolean hasWrittenSamples; @@ -63,9 +66,10 @@ import java.util.concurrent.atomic.AtomicBoolean; private long mdatStart; private long mdatEnd; private long mdatDataEnd; // Always <= mdatEnd - // Typically written from the end of the mdat box to the end of the file. private Range lastMoovWritten; + // Used for writing moov box periodically when sample batching is disabled. + private long lastMoovWrittenAtSampleTimestampUs; /** * Creates an instance. @@ -79,6 +83,7 @@ import java.util.concurrent.atomic.AtomicBoolean; * AVCC format (which uses length prefixes). * @param lastSampleDurationBehavior The {@link Mp4Muxer.LastSampleDurationBehavior}. * @param sampleCopyEnabled Whether sample copying is enabled. + * @param sampleBatchingEnabled Whether sample batching is enabled. * @param attemptStreamableOutputEnabled Whether to attempt to write a streamable output. */ public Mp4Writer( @@ -87,17 +92,20 @@ import java.util.concurrent.atomic.AtomicBoolean; AnnexBToAvccConverter annexBToAvccConverter, @Mp4Muxer.LastSampleDurationBehavior int lastSampleDurationBehavior, boolean sampleCopyEnabled, + boolean sampleBatchingEnabled, boolean attemptStreamableOutputEnabled) { this.outputFileChannel = fileChannel; this.metadataCollector = metadataCollector; this.annexBToAvccConverter = annexBToAvccConverter; this.lastSampleDurationBehavior = lastSampleDurationBehavior; this.sampleCopyEnabled = sampleCopyEnabled; + this.sampleBatchingEnabled = sampleBatchingEnabled; tracks = new ArrayList<>(); editableVideoTracks = new ArrayList<>(); hasWrittenSamples = new AtomicBoolean(false); canWriteMoovAtStart = attemptStreamableOutputEnabled; lastMoovWritten = Range.closed(0L, 0L); + lastMoovWrittenAtSampleTimestampUs = 0L; } /** @@ -141,7 +149,20 @@ import java.util.concurrent.atomic.AtomicBoolean; public void writeSampleData(Track track, ByteBuffer byteBuffer, BufferInfo bufferInfo) throws IOException { track.writeSampleData(byteBuffer, bufferInfo); - doInterleave(); + if (sampleBatchingEnabled) { + doInterleave(); + } else { + writePendingTrackSamples(track); + boolean primaryTrackSampleWritten = tracks.contains(track); + long currentSampleTimestampUs = bufferInfo.presentationTimeUs; + if (primaryTrackSampleWritten + && canWriteMoovAtStart + && (currentSampleTimestampUs - lastMoovWrittenAtSampleTimestampUs + >= MOOV_BOX_UPDATE_INTERVAL_US)) { + maybeWriteMoovAtStart(); + lastMoovWrittenAtSampleTimestampUs = currentSampleTimestampUs; + } + } } /** diff --git a/libraries/test_data/src/test/assets/muxerdumps/sample_batching_and_attempt_streamable_output_disabled_hdr10-720p.mp4.dump b/libraries/test_data/src/test/assets/muxerdumps/sample_batching_and_attempt_streamable_output_disabled_hdr10-720p.mp4.dump new file mode 100644 index 0000000000..ed88c911d8 --- /dev/null +++ b/libraries/test_data/src/test/assets/muxerdumps/sample_batching_and_attempt_streamable_output_disabled_hdr10-720p.mp4.dump @@ -0,0 +1,1336 @@ +seekMap: + isSeekable = true + duration = 4236600 + getPosition(0) = [[timeUs=0, position=44]] + getPosition(1) = [[timeUs=0, position=44], [timeUs=1002955, position=1913587]] + getPosition(2118300) = [[timeUs=2003566, position=3814151], [timeUs=3003444, position=5711758]] + getPosition(4236600) = [[timeUs=4003277, position=7609538]] +numberOfTracks = 2 +track 0: + total output bytes = 7944083 + sample count = 127 + track duration = 4236600 + format 0: + id = 1 + sampleMimeType = video/hevc + codecs = hvc1.2.4.L153 + maxInputSize = 157952 + maxNumReorderSamples = 0 + width = 1280 + height = 720 + frameRate = 29.98 + colorInfo: + colorSpace = 6 + colorRange = 2 + colorTransfer = 6 + lumaBitdepth = 10 + chromaBitdepth = 10 + metadata = entries=[Mp4Timestamp: creation time=100000000, modification time=500000000, timescale=10000] + initializationData: + data = length 99, hash 99842E5A + sample 0: + time = 0 + flags = 1 + data = length 31784, hash F88A0ADA + sample 1: + time = 33333 + flags = 0 + data = length 9972, hash 25C1DE50 + sample 2: + time = 67233 + flags = 0 + data = length 28744, hash 8B1B2A8A + sample 3: + time = 99988 + flags = 0 + data = length 54040, hash 4B286B44 + sample 4: + time = 133311 + flags = 0 + data = length 63348, hash F7F91966 + sample 5: + time = 166644 + flags = 0 + data = length 56969, hash FE4DDEF2 + sample 6: + time = 199966 + flags = 0 + data = length 66511, hash BE7EF815 + sample 7: + time = 233355 + flags = 0 + data = length 72550, hash 8028BAF0 + sample 8: + time = 266766 + flags = 0 + data = length 66999, hash CA2B154E + sample 9: + time = 300188 + flags = 0 + data = length 70365, hash C1E81317 + sample 10: + time = 333633 + flags = 0 + data = length 65657, hash 5196D8EE + sample 11: + time = 367077 + flags = 0 + data = length 56166, hash 3A67C0F2 + sample 12: + time = 400544 + flags = 0 + data = length 54535, hash 8916E14F + sample 13: + time = 434011 + flags = 0 + data = length 60809, hash 30F11073 + sample 14: + time = 467477 + flags = 0 + data = length 73105, hash 2BDB6A1A + sample 15: + time = 500944 + flags = 0 + data = length 74843, hash 885F9563 + sample 16: + time = 534388 + flags = 0 + data = length 75645, hash 37DBCF31 + sample 17: + time = 567833 + flags = 0 + data = length 75659, hash 8E9E5330 + sample 18: + time = 601288 + flags = 0 + data = length 75569, hash DCC63D7C + sample 19: + time = 634766 + flags = 0 + data = length 76181, hash BD6BE82B + sample 20: + time = 668266 + flags = 0 + data = length 88354, hash 73E3B994 + sample 21: + time = 701766 + flags = 0 + data = length 75573, hash 7A99EEEB + sample 22: + time = 735277 + flags = 0 + data = length 80617, hash 4988E1AF + sample 23: + time = 768777 + flags = 0 + data = length 69367, hash 58EE9A3C + sample 24: + time = 802266 + flags = 0 + data = length 74534, hash 3E5FC997 + sample 25: + time = 835744 + flags = 0 + data = length 67594, hash DEAFD3CF + sample 26: + time = 869211 + flags = 0 + data = length 67960, hash C21D9BD2 + sample 27: + time = 902666 + flags = 0 + data = length 62461, hash 2DBFA365 + sample 28: + time = 936122 + flags = 0 + data = length 45621, hash 4B60D3B3 + sample 29: + time = 969544 + flags = 0 + data = length 41886, hash F69594F + sample 30: + time = 1002955 + flags = 1 + data = length 157922, hash 5D2DED48 + sample 31: + time = 1036366 + flags = 0 + data = length 59055, hash 3EC0D10F + sample 32: + time = 1069777 + flags = 0 + data = length 70362, hash 81D6533C + sample 33: + time = 1103166 + flags = 0 + data = length 69276, hash 1A5E3B7F + sample 34: + time = 1136555 + flags = 0 + data = length 66796, hash 6B26749E + sample 35: + time = 1169944 + flags = 0 + data = length 69426, hash 42939F73 + sample 36: + time = 1203311 + flags = 0 + data = length 53495, hash 47917D51 + sample 37: + time = 1236677 + flags = 0 + data = length 65041, hash C82B74C1 + sample 38: + time = 1270044 + flags = 0 + data = length 65539, hash EE34C22 + sample 39: + time = 1303411 + flags = 0 + data = length 70441, hash 61A63884 + sample 40: + time = 1336777 + flags = 0 + data = length 60140, hash C99A10E7 + sample 41: + time = 1370144 + flags = 0 + data = length 56647, hash 4E0D6F5E + sample 42: + time = 1403500 + flags = 0 + data = length 56195, hash FCA1A4FE + sample 43: + time = 1436855 + flags = 0 + data = length 59142, hash 778A6DDD + sample 44: + time = 1470211 + flags = 0 + data = length 59930, hash 3AF0685F + sample 45: + time = 1503555 + flags = 0 + data = length 42885, hash 77BCAE9D + sample 46: + time = 1536933 + flags = 0 + data = length 52167, hash 9FCE82F2 + sample 47: + time = 1570277 + flags = 0 + data = length 47566, hash 9F63D6AD + sample 48: + time = 1603577 + flags = 0 + data = length 50422, hash 83A948C8 + sample 49: + time = 1636922 + flags = 0 + data = length 49230, hash 39307D4 + sample 50: + time = 1670255 + flags = 0 + data = length 49503, hash A882BA5C + sample 51: + time = 1703588 + flags = 0 + data = length 49103, hash C43B39DA + sample 52: + time = 1736922 + flags = 0 + data = length 62007, hash 9B604007 + sample 53: + time = 1770244 + flags = 0 + data = length 60107, hash EF52B8FA + sample 54: + time = 1803577 + flags = 0 + data = length 58932, hash 18B2AB80 + sample 55: + time = 1836911 + flags = 0 + data = length 59795, hash A2DEF758 + sample 56: + time = 1870233 + flags = 0 + data = length 56216, hash 2669E720 + sample 57: + time = 1903566 + flags = 0 + data = length 59850, hash B1B411C + sample 58: + time = 1936888 + flags = 0 + data = length 58022, hash B4F0AA9E + sample 59: + time = 1970222 + flags = 0 + data = length 73111, hash 249DC0F7 + sample 60: + time = 2003566 + flags = 1 + data = length 121871, hash E158BA4C + sample 61: + time = 2036877 + flags = 0 + data = length 58917, hash A4E35D6C + sample 62: + time = 2070200 + flags = 0 + data = length 57435, hash B7E918BC + sample 63: + time = 2103533 + flags = 0 + data = length 60018, hash 79A48F55 + sample 64: + time = 2136866 + flags = 0 + data = length 56421, hash 7B2FBB9 + sample 65: + time = 2170200 + flags = 0 + data = length 57080, hash BF9E1AB4 + sample 66: + time = 2203522 + flags = 0 + data = length 59033, hash 2F75A2D7 + sample 67: + time = 2236855 + flags = 0 + data = length 55988, hash 6FB02EE1 + sample 68: + time = 2270188 + flags = 0 + data = length 59010, hash 7E315397 + sample 69: + time = 2303511 + flags = 0 + data = length 53968, hash 1E69F007 + sample 70: + time = 2336844 + flags = 0 + data = length 54754, hash 29D81885 + sample 71: + time = 2370166 + flags = 0 + data = length 54825, hash 360D7650 + sample 72: + time = 2403500 + flags = 0 + data = length 57683, hash 6B1C8F74 + sample 73: + time = 2436833 + flags = 0 + data = length 58820, hash D640752F + sample 74: + time = 2470155 + flags = 0 + data = length 55979, hash 72AA3662 + sample 75: + time = 2503488 + flags = 0 + data = length 53372, hash 188F88DB + sample 76: + time = 2536822 + flags = 0 + data = length 56082, hash AE587B34 + sample 77: + time = 2570155 + flags = 0 + data = length 55031, hash F2A1D185 + sample 78: + time = 2603488 + flags = 0 + data = length 51234, hash E258D5F0 + sample 79: + time = 2636811 + flags = 0 + data = length 69294, hash 56D53FB7 + sample 80: + time = 2670144 + flags = 0 + data = length 63400, hash D6E7AC33 + sample 81: + time = 2703477 + flags = 0 + data = length 61711, hash 3DD7E6B0 + sample 82: + time = 2736800 + flags = 0 + data = length 60393, hash FF7BDC39 + sample 83: + time = 2770133 + flags = 0 + data = length 74625, hash CB685A54 + sample 84: + time = 2803466 + flags = 0 + data = length 61453, hash A48659E6 + sample 85: + time = 2836800 + flags = 0 + data = length 59662, hash 879501DF + sample 86: + time = 2870133 + flags = 0 + data = length 68564, hash 68EEF64C + sample 87: + time = 2903455 + flags = 0 + data = length 69549, hash 26CA4587 + sample 88: + time = 2936788 + flags = 0 + data = length 71190, hash A64362A6 + sample 89: + time = 2970111 + flags = 0 + data = length 68276, hash 4587AAB6 + sample 90: + time = 3003444 + flags = 1 + data = length 115575, hash 8DDA331B + sample 91: + time = 3036777 + flags = 0 + data = length 56416, hash 3CB6F5AD + sample 92: + time = 3070100 + flags = 0 + data = length 54110, hash 7B27C656 + sample 93: + time = 3103422 + flags = 0 + data = length 68308, hash C7F4AE80 + sample 94: + time = 3136755 + flags = 0 + data = length 67629, hash 48E625B6 + sample 95: + time = 3170111 + flags = 0 + data = length 66968, hash D46F0E01 + sample 96: + time = 3203411 + flags = 0 + data = length 53022, hash 91852F32 + sample 97: + time = 3236733 + flags = 0 + data = length 66729, hash 12CA7617 + sample 98: + time = 3270066 + flags = 0 + data = length 53556, hash 904B00CF + sample 99: + time = 3303388 + flags = 0 + data = length 63459, hash AB813676 + sample 100: + time = 3336722 + flags = 0 + data = length 63637, hash 8B0750F6 + sample 101: + time = 3370044 + flags = 0 + data = length 64700, hash 8922E5BE + sample 102: + time = 3403377 + flags = 0 + data = length 54680, hash 4F49EB3D + sample 103: + time = 3436700 + flags = 0 + data = length 62600, hash 9DF2F9F5 + sample 104: + time = 3470033 + flags = 0 + data = length 69506, hash DB702311 + sample 105: + time = 3503366 + flags = 0 + data = length 50277, hash 1034F0A6 + sample 106: + time = 3536722 + flags = 0 + data = length 52100, hash 33745B51 + sample 107: + time = 3570011 + flags = 0 + data = length 65067, hash F73FE2C7 + sample 108: + time = 3603344 + flags = 0 + data = length 68940, hash 4331DA16 + sample 109: + time = 3636677 + flags = 0 + data = length 55215, hash 68087A40 + sample 110: + time = 3670011 + flags = 0 + data = length 56090, hash 2F483911 + sample 111: + time = 3703333 + flags = 0 + data = length 58356, hash D7D190C6 + sample 112: + time = 3736655 + flags = 0 + data = length 57368, hash 2F6B7918 + sample 113: + time = 3769988 + flags = 0 + data = length 56591, hash 19B696D2 + sample 114: + time = 3803311 + flags = 0 + data = length 54748, hash 7E0CE70E + sample 115: + time = 3836633 + flags = 0 + data = length 73133, hash CFA46EE4 + sample 116: + time = 3869966 + flags = 0 + data = length 52577, hash 5E174B5 + sample 117: + time = 3903300 + flags = 0 + data = length 74756, hash 5A571060 + sample 118: + time = 3936622 + flags = 0 + data = length 67171, hash 6F13FB2C + sample 119: + time = 3969944 + flags = 0 + data = length 42130, hash DAE94DB2 + sample 120: + time = 4003277 + flags = 1 + data = length 120199, hash 32DEA792 + sample 121: + time = 4036600 + flags = 0 + data = length 51028, hash FC7AF64F + sample 122: + time = 4069922 + flags = 0 + data = length 51879, hash 74852E0E + sample 123: + time = 4103255 + flags = 0 + data = length 51443, hash B735512A + sample 124: + time = 4137455 + flags = 0 + data = length 65012, hash DB29A2CD + sample 125: + time = 4169900 + flags = 0 + data = length 59318, hash 24AF2123 + sample 126: + time = 4203244 + flags = 536870912 + data = length 62411, hash 6CAE0387 +track 1: + total output bytes = 133209 + sample count = 195 + track duration = 4159900 + format 0: + averageBitrate = 256000 + peakBitrate = 256000 + id = 2 + sampleMimeType = audio/mp4a-latm + codecs = mp4a.40.2 + maxInputSize = 877 + channelCount = 2 + sampleRate = 48000 + language = ``` + metadata = entries=[Mp4Timestamp: creation time=100000000, modification time=500000000, timescale=10000] + initializationData: + data = length 2, hash 560 + sample 0: + time = 43000 + flags = 1 + data = length 682, hash 34C58E7C + sample 1: + time = 64333 + flags = 1 + data = length 846, hash 22FB31EF + sample 2: + time = 85666 + flags = 1 + data = length 757, hash F55DC63E + sample 3: + time = 107000 + flags = 1 + data = length 690, hash BD26CD74 + sample 4: + time = 128333 + flags = 1 + data = length 660, hash 5713CCCB + sample 5: + time = 149666 + flags = 1 + data = length 646, hash 74C2D10F + sample 6: + time = 171000 + flags = 1 + data = length 652, hash B49BACA1 + sample 7: + time = 192333 + flags = 1 + data = length 658, hash BF36BC46 + sample 8: + time = 213666 + flags = 1 + data = length 666, hash 69CBADD8 + sample 9: + time = 235000 + flags = 1 + data = length 668, hash 99204158 + sample 10: + time = 256333 + flags = 1 + data = length 671, hash AE181AC8 + sample 11: + time = 277666 + flags = 1 + data = length 678, hash C432ACF0 + sample 12: + time = 299000 + flags = 1 + data = length 682, hash C23E1F17 + sample 13: + time = 320333 + flags = 1 + data = length 685, hash B22AB49 + sample 14: + time = 341666 + flags = 1 + data = length 683, hash B073F447 + sample 15: + time = 363000 + flags = 1 + data = length 675, hash C7614E26 + sample 16: + time = 384333 + flags = 1 + data = length 679, hash 5B075ADF + sample 17: + time = 405666 + flags = 1 + data = length 687, hash E260C35B + sample 18: + time = 427000 + flags = 1 + data = length 687, hash 3C316334 + sample 19: + time = 448333 + flags = 1 + data = length 680, hash BCD8469 + sample 20: + time = 469666 + flags = 1 + data = length 681, hash CBD0BF0F + sample 21: + time = 491000 + flags = 1 + data = length 719, hash F7594265 + sample 22: + time = 512333 + flags = 1 + data = length 699, hash 4975812A + sample 23: + time = 533666 + flags = 1 + data = length 723, hash 11C7327E + sample 24: + time = 555000 + flags = 1 + data = length 765, hash DED05454 + sample 25: + time = 576333 + flags = 1 + data = length 785, hash 9E7C3FDD + sample 26: + time = 597666 + flags = 1 + data = length 728, hash B433E15E + sample 27: + time = 619000 + flags = 1 + data = length 708, hash ED0B3337 + sample 28: + time = 640333 + flags = 1 + data = length 642, hash 6B447435 + sample 29: + time = 661666 + flags = 1 + data = length 628, hash D59CB28F + sample 30: + time = 683000 + flags = 1 + data = length 594, hash BCC990B5 + sample 31: + time = 704333 + flags = 1 + data = length 622, hash C9AE9991 + sample 32: + time = 725645 + flags = 1 + data = length 633, hash 4B7D59B8 + sample 33: + time = 746979 + flags = 1 + data = length 661, hash A98CE814 + sample 34: + time = 768312 + flags = 1 + data = length 662, hash 9A3E0D79 + sample 35: + time = 789645 + flags = 1 + data = length 669, hash 2A0B67AC + sample 36: + time = 810979 + flags = 1 + data = length 691, hash C339C4EE + sample 37: + time = 832312 + flags = 1 + data = length 678, hash CF770B8C + sample 38: + time = 853645 + flags = 1 + data = length 678, hash 685F97BC + sample 39: + time = 874979 + flags = 1 + data = length 688, hash 7DC1FBD3 + sample 40: + time = 896312 + flags = 1 + data = length 684, hash F7D9FE89 + sample 41: + time = 917645 + flags = 1 + data = length 683, hash 5E3EA281 + sample 42: + time = 938979 + flags = 1 + data = length 675, hash F576AE6 + sample 43: + time = 960312 + flags = 1 + data = length 697, hash B0EBE204 + sample 44: + time = 981645 + flags = 1 + data = length 675, hash 3C928CCA + sample 45: + time = 1002979 + flags = 1 + data = length 680, hash 34650DF5 + sample 46: + time = 1024312 + flags = 1 + data = length 685, hash 564F62A + sample 47: + time = 1045645 + flags = 1 + data = length 691, hash 71BBA88D + sample 48: + time = 1066979 + flags = 1 + data = length 736, hash C8F0D575 + sample 49: + time = 1088312 + flags = 1 + data = length 718, hash 2F13561A + sample 50: + time = 1109645 + flags = 1 + data = length 692, hash CF153F84 + sample 51: + time = 1130979 + flags = 1 + data = length 673, hash 30357B83 + sample 52: + time = 1152312 + flags = 1 + data = length 690, hash 5FB65B72 + sample 53: + time = 1173645 + flags = 1 + data = length 769, hash F5E1AAEA + sample 54: + time = 1194979 + flags = 1 + data = length 733, hash 9327D738 + sample 55: + time = 1216312 + flags = 1 + data = length 627, hash 203CFA24 + sample 56: + time = 1237645 + flags = 1 + data = length 697, hash 1FCE39D0 + sample 57: + time = 1258979 + flags = 1 + data = length 585, hash B53A076B + sample 58: + time = 1280312 + flags = 1 + data = length 650, hash FDFCA752 + sample 59: + time = 1301645 + flags = 1 + data = length 725, hash 4D4FA788 + sample 60: + time = 1322979 + flags = 1 + data = length 788, hash 6D883F0B + sample 61: + time = 1344312 + flags = 1 + data = length 649, hash 9125CC1A + sample 62: + time = 1365645 + flags = 1 + data = length 616, hash C02AB7EA + sample 63: + time = 1386979 + flags = 1 + data = length 624, hash D49000E1 + sample 64: + time = 1408312 + flags = 1 + data = length 664, hash 482C9994 + sample 65: + time = 1429645 + flags = 1 + data = length 656, hash A234172A + sample 66: + time = 1450979 + flags = 1 + data = length 649, hash BCCAD04D + sample 67: + time = 1472312 + flags = 1 + data = length 655, hash B961E395 + sample 68: + time = 1493645 + flags = 1 + data = length 673, hash 5BD56013 + sample 69: + time = 1514979 + flags = 1 + data = length 700, hash FE25D834 + sample 70: + time = 1536312 + flags = 1 + data = length 668, hash 45203245 + sample 71: + time = 1557645 + flags = 1 + data = length 672, hash F9269558 + sample 72: + time = 1578979 + flags = 1 + data = length 682, hash C205B4DF + sample 73: + time = 1600312 + flags = 1 + data = length 686, hash A4632474 + sample 74: + time = 1621645 + flags = 1 + data = length 747, hash B2F3AA1D + sample 75: + time = 1642979 + flags = 1 + data = length 711, hash B3A33D80 + sample 76: + time = 1664312 + flags = 1 + data = length 652, hash 37A9B9BF + sample 77: + time = 1685645 + flags = 1 + data = length 675, hash F6BE4CAC + sample 78: + time = 1706979 + flags = 1 + data = length 672, hash 22A12DFC + sample 79: + time = 1728312 + flags = 1 + data = length 674, hash E740F44 + sample 80: + time = 1749645 + flags = 1 + data = length 680, hash A065804 + sample 81: + time = 1770979 + flags = 1 + data = length 663, hash 805CE20 + sample 82: + time = 1792312 + flags = 1 + data = length 688, hash C2E28B22 + sample 83: + time = 1813645 + flags = 1 + data = length 672, hash BF738F27 + sample 84: + time = 1834979 + flags = 1 + data = length 673, hash AFE85361 + sample 85: + time = 1856312 + flags = 1 + data = length 679, hash C9D68F4F + sample 86: + time = 1877645 + flags = 1 + data = length 676, hash 42C67933 + sample 87: + time = 1898979 + flags = 1 + data = length 748, hash 16944018 + sample 88: + time = 1920312 + flags = 1 + data = length 730, hash D592050C + sample 89: + time = 1941645 + flags = 1 + data = length 785, hash DB11A4E8 + sample 90: + time = 1962979 + flags = 1 + data = length 708, hash 445F4443 + sample 91: + time = 1984312 + flags = 1 + data = length 630, hash BD57EF90 + sample 92: + time = 2005645 + flags = 1 + data = length 621, hash FB977F1F + sample 93: + time = 2026979 + flags = 1 + data = length 656, hash 53E25FBE + sample 94: + time = 2048291 + flags = 1 + data = length 664, hash A9D0717 + sample 95: + time = 2069625 + flags = 1 + data = length 672, hash 6F2663EA + sample 96: + time = 2090958 + flags = 1 + data = length 677, hash 6EBB686B + sample 97: + time = 2112291 + flags = 1 + data = length 679, hash BF29A1EC + sample 98: + time = 2133625 + flags = 1 + data = length 683, hash 69F6750D + sample 99: + time = 2154958 + flags = 1 + data = length 691, hash A79A804F + sample 100: + time = 2176291 + flags = 1 + data = length 734, hash 31FB39E8 + sample 101: + time = 2197625 + flags = 1 + data = length 657, hash F99E1ADC + sample 102: + time = 2218958 + flags = 1 + data = length 659, hash FDC16724 + sample 103: + time = 2240291 + flags = 1 + data = length 795, hash 23302539 + sample 104: + time = 2261625 + flags = 1 + data = length 691, hash 5AA01A0 + sample 105: + time = 2282958 + flags = 1 + data = length 640, hash A9A214AB + sample 106: + time = 2304291 + flags = 1 + data = length 651, hash F3253A0E + sample 107: + time = 2325625 + flags = 1 + data = length 652, hash 2D4DE02 + sample 108: + time = 2346958 + flags = 1 + data = length 772, hash 16817D3A + sample 109: + time = 2368291 + flags = 1 + data = length 756, hash 738E4C8D + sample 110: + time = 2389625 + flags = 1 + data = length 781, hash 61372EAE + sample 111: + time = 2410958 + flags = 1 + data = length 658, hash 83B5A955 + sample 112: + time = 2432291 + flags = 1 + data = length 667, hash C3CF8AEF + sample 113: + time = 2453625 + flags = 1 + data = length 768, hash C6534483 + sample 114: + time = 2474958 + flags = 1 + data = length 688, hash 1C14B263 + sample 115: + time = 2496291 + flags = 1 + data = length 599, hash 51CF483 + sample 116: + time = 2517625 + flags = 1 + data = length 594, hash F290D460 + sample 117: + time = 2538958 + flags = 1 + data = length 633, hash 262E26E6 + sample 118: + time = 2560291 + flags = 1 + data = length 656, hash 9158E6A1 + sample 119: + time = 2581625 + flags = 1 + data = length 668, hash 3AC6C8DF + sample 120: + time = 2602958 + flags = 1 + data = length 667, hash DB111C93 + sample 121: + time = 2624291 + flags = 1 + data = length 670, hash 5EA45C5E + sample 122: + time = 2645625 + flags = 1 + data = length 663, hash 1CF1EC34 + sample 123: + time = 2666958 + flags = 1 + data = length 673, hash 9609104 + sample 124: + time = 2688291 + flags = 1 + data = length 704, hash D274E425 + sample 125: + time = 2709625 + flags = 1 + data = length 681, hash 4D720ACE + sample 126: + time = 2730958 + flags = 1 + data = length 682, hash C49E4619 + sample 127: + time = 2752291 + flags = 1 + data = length 680, hash 1AB4733A + sample 128: + time = 2773625 + flags = 1 + data = length 675, hash BA047E60 + sample 129: + time = 2794958 + flags = 1 + data = length 688, hash 9679B8E9 + sample 130: + time = 2816291 + flags = 1 + data = length 687, hash 57DBCD4 + sample 131: + time = 2837625 + flags = 1 + data = length 680, hash 91BA9BF2 + sample 132: + time = 2858958 + flags = 1 + data = length 757, hash 741D6330 + sample 133: + time = 2880291 + flags = 1 + data = length 651, hash 60508D7D + sample 134: + time = 2901625 + flags = 1 + data = length 679, hash 7A32FD22 + sample 135: + time = 2922958 + flags = 1 + data = length 666, hash 98C3F963 + sample 136: + time = 2944291 + flags = 1 + data = length 694, hash 59D9B67B + sample 137: + time = 2965625 + flags = 1 + data = length 680, hash 6FA356DD + sample 138: + time = 2986958 + flags = 1 + data = length 665, hash 3D7E32D9 + sample 139: + time = 3008291 + flags = 1 + data = length 681, hash 2592B0DF + sample 140: + time = 3029625 + flags = 1 + data = length 680, hash 2BA659D7 + sample 141: + time = 3050958 + flags = 1 + data = length 667, hash 1E21B749 + sample 142: + time = 3072291 + flags = 1 + data = length 683, hash 57E1A624 + sample 143: + time = 3093625 + flags = 1 + data = length 673, hash B7216D34 + sample 144: + time = 3114958 + flags = 1 + data = length 684, hash 2FDBEB3A + sample 145: + time = 3136291 + flags = 1 + data = length 707, hash 1D528F18 + sample 146: + time = 3157625 + flags = 1 + data = length 693, hash 24148721 + sample 147: + time = 3178958 + flags = 1 + data = length 660, hash C89F9451 + sample 148: + time = 3200291 + flags = 1 + data = length 679, hash 67C16179 + sample 149: + time = 3221625 + flags = 1 + data = length 685, hash 6EF9DD57 + sample 150: + time = 3242958 + flags = 1 + data = length 672, hash CFF4E296 + sample 151: + time = 3264291 + flags = 1 + data = length 681, hash 994F630 + sample 152: + time = 3285625 + flags = 1 + data = length 684, hash 3118D2E9 + sample 153: + time = 3306958 + flags = 1 + data = length 677, hash 3628592F + sample 154: + time = 3328291 + flags = 1 + data = length 689, hash 309E58A0 + sample 155: + time = 3349625 + flags = 1 + data = length 677, hash D1F3255B + sample 156: + time = 3370958 + flags = 1 + data = length 689, hash B3E864BA + sample 157: + time = 3392270 + flags = 1 + data = length 680, hash 469FA2FF + sample 158: + time = 3413604 + flags = 1 + data = length 688, hash DC9FC31B + sample 159: + time = 3434937 + flags = 1 + data = length 675, hash E2396CC7 + sample 160: + time = 3456270 + flags = 1 + data = length 738, hash C1B7A30A + sample 161: + time = 3477604 + flags = 1 + data = length 723, hash CEABDA70 + sample 162: + time = 3498937 + flags = 1 + data = length 698, hash 59E1B5D8 + sample 163: + time = 3520270 + flags = 1 + data = length 671, hash 71CD7BFA + sample 164: + time = 3541604 + flags = 1 + data = length 652, hash 45894636 + sample 165: + time = 3562937 + flags = 1 + data = length 667, hash E98A528A + sample 166: + time = 3584270 + flags = 1 + data = length 682, hash 8AA9E761 + sample 167: + time = 3605604 + flags = 1 + data = length 670, hash 7D071859 + sample 168: + time = 3626937 + flags = 1 + data = length 672, hash 4FA7BDBB + sample 169: + time = 3648270 + flags = 1 + data = length 779, hash 85D8FF74 + sample 170: + time = 3669604 + flags = 1 + data = length 699, hash CABC0AF6 + sample 171: + time = 3690937 + flags = 1 + data = length 635, hash 35BD0FED + sample 172: + time = 3712270 + flags = 1 + data = length 646, hash D4960FAC + sample 173: + time = 3733604 + flags = 1 + data = length 669, hash 4DAC2897 + sample 174: + time = 3754937 + flags = 1 + data = length 675, hash FD60998A + sample 175: + time = 3776270 + flags = 1 + data = length 677, hash FED0180B + sample 176: + time = 3797604 + flags = 1 + data = length 668, hash C6183862 + sample 177: + time = 3818937 + flags = 1 + data = length 671, hash EBA9EF22 + sample 178: + time = 3840270 + flags = 1 + data = length 668, hash CF88A2FF + sample 179: + time = 3861604 + flags = 1 + data = length 727, hash A9311311 + sample 180: + time = 3882937 + flags = 1 + data = length 701, hash C6351159 + sample 181: + time = 3904270 + flags = 1 + data = length 847, hash 1864F774 + sample 182: + time = 3925604 + flags = 1 + data = length 765, hash 616DD2EA + sample 183: + time = 3946937 + flags = 1 + data = length 674, hash 671D4342 + sample 184: + time = 3968270 + flags = 1 + data = length 723, hash 567566A2 + sample 185: + time = 3989604 + flags = 1 + data = length 580, hash B38C9C63 + sample 186: + time = 4010937 + flags = 1 + data = length 583, hash 5668BFCE + sample 187: + time = 4032270 + flags = 1 + data = length 631, hash 7E86C98E + sample 188: + time = 4053604 + flags = 1 + data = length 656, hash 95A41C9B + sample 189: + time = 4074937 + flags = 1 + data = length 822, hash 2A045560 + sample 190: + time = 4096270 + flags = 1 + data = length 643, hash 551E7C72 + sample 191: + time = 4117604 + flags = 1 + data = length 617, hash 463482D9 + sample 192: + time = 4138937 + flags = 1 + data = length 640, hash E714454F + sample 193: + time = 4160270 + flags = 1 + data = length 646, hash 6DD5E81B + sample 194: + time = 4181604 + flags = 536870913 + data = length 690, hash 407EC299 +tracksEnded = true diff --git a/libraries/test_data/src/test/assets/muxerdumps/sample_batching_disabled_hdr10-720p.mp4.dump b/libraries/test_data/src/test/assets/muxerdumps/sample_batching_disabled_hdr10-720p.mp4.dump new file mode 100644 index 0000000000..27303edf04 --- /dev/null +++ b/libraries/test_data/src/test/assets/muxerdumps/sample_batching_disabled_hdr10-720p.mp4.dump @@ -0,0 +1,1336 @@ +seekMap: + isSeekable = true + duration = 4236600 + getPosition(0) = [[timeUs=0, position=400052]] + getPosition(1) = [[timeUs=0, position=400052], [timeUs=1002955, position=2313595]] + getPosition(2118300) = [[timeUs=2003566, position=4214159], [timeUs=3003444, position=6111766]] + getPosition(4236600) = [[timeUs=4003277, position=8009546]] +numberOfTracks = 2 +track 0: + total output bytes = 7944083 + sample count = 127 + track duration = 4236600 + format 0: + id = 1 + sampleMimeType = video/hevc + codecs = hvc1.2.4.L153 + maxInputSize = 157952 + maxNumReorderSamples = 0 + width = 1280 + height = 720 + frameRate = 29.98 + colorInfo: + colorSpace = 6 + colorRange = 2 + colorTransfer = 6 + lumaBitdepth = 10 + chromaBitdepth = 10 + metadata = entries=[Mp4Timestamp: creation time=100000000, modification time=500000000, timescale=10000] + initializationData: + data = length 99, hash 99842E5A + sample 0: + time = 0 + flags = 1 + data = length 31784, hash F88A0ADA + sample 1: + time = 33333 + flags = 0 + data = length 9972, hash 25C1DE50 + sample 2: + time = 67233 + flags = 0 + data = length 28744, hash 8B1B2A8A + sample 3: + time = 99988 + flags = 0 + data = length 54040, hash 4B286B44 + sample 4: + time = 133311 + flags = 0 + data = length 63348, hash F7F91966 + sample 5: + time = 166644 + flags = 0 + data = length 56969, hash FE4DDEF2 + sample 6: + time = 199966 + flags = 0 + data = length 66511, hash BE7EF815 + sample 7: + time = 233355 + flags = 0 + data = length 72550, hash 8028BAF0 + sample 8: + time = 266766 + flags = 0 + data = length 66999, hash CA2B154E + sample 9: + time = 300188 + flags = 0 + data = length 70365, hash C1E81317 + sample 10: + time = 333633 + flags = 0 + data = length 65657, hash 5196D8EE + sample 11: + time = 367077 + flags = 0 + data = length 56166, hash 3A67C0F2 + sample 12: + time = 400544 + flags = 0 + data = length 54535, hash 8916E14F + sample 13: + time = 434011 + flags = 0 + data = length 60809, hash 30F11073 + sample 14: + time = 467477 + flags = 0 + data = length 73105, hash 2BDB6A1A + sample 15: + time = 500944 + flags = 0 + data = length 74843, hash 885F9563 + sample 16: + time = 534388 + flags = 0 + data = length 75645, hash 37DBCF31 + sample 17: + time = 567833 + flags = 0 + data = length 75659, hash 8E9E5330 + sample 18: + time = 601288 + flags = 0 + data = length 75569, hash DCC63D7C + sample 19: + time = 634766 + flags = 0 + data = length 76181, hash BD6BE82B + sample 20: + time = 668266 + flags = 0 + data = length 88354, hash 73E3B994 + sample 21: + time = 701766 + flags = 0 + data = length 75573, hash 7A99EEEB + sample 22: + time = 735277 + flags = 0 + data = length 80617, hash 4988E1AF + sample 23: + time = 768777 + flags = 0 + data = length 69367, hash 58EE9A3C + sample 24: + time = 802266 + flags = 0 + data = length 74534, hash 3E5FC997 + sample 25: + time = 835744 + flags = 0 + data = length 67594, hash DEAFD3CF + sample 26: + time = 869211 + flags = 0 + data = length 67960, hash C21D9BD2 + sample 27: + time = 902666 + flags = 0 + data = length 62461, hash 2DBFA365 + sample 28: + time = 936122 + flags = 0 + data = length 45621, hash 4B60D3B3 + sample 29: + time = 969544 + flags = 0 + data = length 41886, hash F69594F + sample 30: + time = 1002955 + flags = 1 + data = length 157922, hash 5D2DED48 + sample 31: + time = 1036366 + flags = 0 + data = length 59055, hash 3EC0D10F + sample 32: + time = 1069777 + flags = 0 + data = length 70362, hash 81D6533C + sample 33: + time = 1103166 + flags = 0 + data = length 69276, hash 1A5E3B7F + sample 34: + time = 1136555 + flags = 0 + data = length 66796, hash 6B26749E + sample 35: + time = 1169944 + flags = 0 + data = length 69426, hash 42939F73 + sample 36: + time = 1203311 + flags = 0 + data = length 53495, hash 47917D51 + sample 37: + time = 1236677 + flags = 0 + data = length 65041, hash C82B74C1 + sample 38: + time = 1270044 + flags = 0 + data = length 65539, hash EE34C22 + sample 39: + time = 1303411 + flags = 0 + data = length 70441, hash 61A63884 + sample 40: + time = 1336777 + flags = 0 + data = length 60140, hash C99A10E7 + sample 41: + time = 1370144 + flags = 0 + data = length 56647, hash 4E0D6F5E + sample 42: + time = 1403500 + flags = 0 + data = length 56195, hash FCA1A4FE + sample 43: + time = 1436855 + flags = 0 + data = length 59142, hash 778A6DDD + sample 44: + time = 1470211 + flags = 0 + data = length 59930, hash 3AF0685F + sample 45: + time = 1503555 + flags = 0 + data = length 42885, hash 77BCAE9D + sample 46: + time = 1536933 + flags = 0 + data = length 52167, hash 9FCE82F2 + sample 47: + time = 1570277 + flags = 0 + data = length 47566, hash 9F63D6AD + sample 48: + time = 1603577 + flags = 0 + data = length 50422, hash 83A948C8 + sample 49: + time = 1636922 + flags = 0 + data = length 49230, hash 39307D4 + sample 50: + time = 1670255 + flags = 0 + data = length 49503, hash A882BA5C + sample 51: + time = 1703588 + flags = 0 + data = length 49103, hash C43B39DA + sample 52: + time = 1736922 + flags = 0 + data = length 62007, hash 9B604007 + sample 53: + time = 1770244 + flags = 0 + data = length 60107, hash EF52B8FA + sample 54: + time = 1803577 + flags = 0 + data = length 58932, hash 18B2AB80 + sample 55: + time = 1836911 + flags = 0 + data = length 59795, hash A2DEF758 + sample 56: + time = 1870233 + flags = 0 + data = length 56216, hash 2669E720 + sample 57: + time = 1903566 + flags = 0 + data = length 59850, hash B1B411C + sample 58: + time = 1936888 + flags = 0 + data = length 58022, hash B4F0AA9E + sample 59: + time = 1970222 + flags = 0 + data = length 73111, hash 249DC0F7 + sample 60: + time = 2003566 + flags = 1 + data = length 121871, hash E158BA4C + sample 61: + time = 2036877 + flags = 0 + data = length 58917, hash A4E35D6C + sample 62: + time = 2070200 + flags = 0 + data = length 57435, hash B7E918BC + sample 63: + time = 2103533 + flags = 0 + data = length 60018, hash 79A48F55 + sample 64: + time = 2136866 + flags = 0 + data = length 56421, hash 7B2FBB9 + sample 65: + time = 2170200 + flags = 0 + data = length 57080, hash BF9E1AB4 + sample 66: + time = 2203522 + flags = 0 + data = length 59033, hash 2F75A2D7 + sample 67: + time = 2236855 + flags = 0 + data = length 55988, hash 6FB02EE1 + sample 68: + time = 2270188 + flags = 0 + data = length 59010, hash 7E315397 + sample 69: + time = 2303511 + flags = 0 + data = length 53968, hash 1E69F007 + sample 70: + time = 2336844 + flags = 0 + data = length 54754, hash 29D81885 + sample 71: + time = 2370166 + flags = 0 + data = length 54825, hash 360D7650 + sample 72: + time = 2403500 + flags = 0 + data = length 57683, hash 6B1C8F74 + sample 73: + time = 2436833 + flags = 0 + data = length 58820, hash D640752F + sample 74: + time = 2470155 + flags = 0 + data = length 55979, hash 72AA3662 + sample 75: + time = 2503488 + flags = 0 + data = length 53372, hash 188F88DB + sample 76: + time = 2536822 + flags = 0 + data = length 56082, hash AE587B34 + sample 77: + time = 2570155 + flags = 0 + data = length 55031, hash F2A1D185 + sample 78: + time = 2603488 + flags = 0 + data = length 51234, hash E258D5F0 + sample 79: + time = 2636811 + flags = 0 + data = length 69294, hash 56D53FB7 + sample 80: + time = 2670144 + flags = 0 + data = length 63400, hash D6E7AC33 + sample 81: + time = 2703477 + flags = 0 + data = length 61711, hash 3DD7E6B0 + sample 82: + time = 2736800 + flags = 0 + data = length 60393, hash FF7BDC39 + sample 83: + time = 2770133 + flags = 0 + data = length 74625, hash CB685A54 + sample 84: + time = 2803466 + flags = 0 + data = length 61453, hash A48659E6 + sample 85: + time = 2836800 + flags = 0 + data = length 59662, hash 879501DF + sample 86: + time = 2870133 + flags = 0 + data = length 68564, hash 68EEF64C + sample 87: + time = 2903455 + flags = 0 + data = length 69549, hash 26CA4587 + sample 88: + time = 2936788 + flags = 0 + data = length 71190, hash A64362A6 + sample 89: + time = 2970111 + flags = 0 + data = length 68276, hash 4587AAB6 + sample 90: + time = 3003444 + flags = 1 + data = length 115575, hash 8DDA331B + sample 91: + time = 3036777 + flags = 0 + data = length 56416, hash 3CB6F5AD + sample 92: + time = 3070100 + flags = 0 + data = length 54110, hash 7B27C656 + sample 93: + time = 3103422 + flags = 0 + data = length 68308, hash C7F4AE80 + sample 94: + time = 3136755 + flags = 0 + data = length 67629, hash 48E625B6 + sample 95: + time = 3170111 + flags = 0 + data = length 66968, hash D46F0E01 + sample 96: + time = 3203411 + flags = 0 + data = length 53022, hash 91852F32 + sample 97: + time = 3236733 + flags = 0 + data = length 66729, hash 12CA7617 + sample 98: + time = 3270066 + flags = 0 + data = length 53556, hash 904B00CF + sample 99: + time = 3303388 + flags = 0 + data = length 63459, hash AB813676 + sample 100: + time = 3336722 + flags = 0 + data = length 63637, hash 8B0750F6 + sample 101: + time = 3370044 + flags = 0 + data = length 64700, hash 8922E5BE + sample 102: + time = 3403377 + flags = 0 + data = length 54680, hash 4F49EB3D + sample 103: + time = 3436700 + flags = 0 + data = length 62600, hash 9DF2F9F5 + sample 104: + time = 3470033 + flags = 0 + data = length 69506, hash DB702311 + sample 105: + time = 3503366 + flags = 0 + data = length 50277, hash 1034F0A6 + sample 106: + time = 3536722 + flags = 0 + data = length 52100, hash 33745B51 + sample 107: + time = 3570011 + flags = 0 + data = length 65067, hash F73FE2C7 + sample 108: + time = 3603344 + flags = 0 + data = length 68940, hash 4331DA16 + sample 109: + time = 3636677 + flags = 0 + data = length 55215, hash 68087A40 + sample 110: + time = 3670011 + flags = 0 + data = length 56090, hash 2F483911 + sample 111: + time = 3703333 + flags = 0 + data = length 58356, hash D7D190C6 + sample 112: + time = 3736655 + flags = 0 + data = length 57368, hash 2F6B7918 + sample 113: + time = 3769988 + flags = 0 + data = length 56591, hash 19B696D2 + sample 114: + time = 3803311 + flags = 0 + data = length 54748, hash 7E0CE70E + sample 115: + time = 3836633 + flags = 0 + data = length 73133, hash CFA46EE4 + sample 116: + time = 3869966 + flags = 0 + data = length 52577, hash 5E174B5 + sample 117: + time = 3903300 + flags = 0 + data = length 74756, hash 5A571060 + sample 118: + time = 3936622 + flags = 0 + data = length 67171, hash 6F13FB2C + sample 119: + time = 3969944 + flags = 0 + data = length 42130, hash DAE94DB2 + sample 120: + time = 4003277 + flags = 1 + data = length 120199, hash 32DEA792 + sample 121: + time = 4036600 + flags = 0 + data = length 51028, hash FC7AF64F + sample 122: + time = 4069922 + flags = 0 + data = length 51879, hash 74852E0E + sample 123: + time = 4103255 + flags = 0 + data = length 51443, hash B735512A + sample 124: + time = 4137455 + flags = 0 + data = length 65012, hash DB29A2CD + sample 125: + time = 4169900 + flags = 0 + data = length 59318, hash 24AF2123 + sample 126: + time = 4203244 + flags = 536870912 + data = length 62411, hash 6CAE0387 +track 1: + total output bytes = 133209 + sample count = 195 + track duration = 4159900 + format 0: + averageBitrate = 256000 + peakBitrate = 256000 + id = 2 + sampleMimeType = audio/mp4a-latm + codecs = mp4a.40.2 + maxInputSize = 877 + channelCount = 2 + sampleRate = 48000 + language = ``` + metadata = entries=[Mp4Timestamp: creation time=100000000, modification time=500000000, timescale=10000] + initializationData: + data = length 2, hash 560 + sample 0: + time = 43000 + flags = 1 + data = length 682, hash 34C58E7C + sample 1: + time = 64333 + flags = 1 + data = length 846, hash 22FB31EF + sample 2: + time = 85666 + flags = 1 + data = length 757, hash F55DC63E + sample 3: + time = 107000 + flags = 1 + data = length 690, hash BD26CD74 + sample 4: + time = 128333 + flags = 1 + data = length 660, hash 5713CCCB + sample 5: + time = 149666 + flags = 1 + data = length 646, hash 74C2D10F + sample 6: + time = 171000 + flags = 1 + data = length 652, hash B49BACA1 + sample 7: + time = 192333 + flags = 1 + data = length 658, hash BF36BC46 + sample 8: + time = 213666 + flags = 1 + data = length 666, hash 69CBADD8 + sample 9: + time = 235000 + flags = 1 + data = length 668, hash 99204158 + sample 10: + time = 256333 + flags = 1 + data = length 671, hash AE181AC8 + sample 11: + time = 277666 + flags = 1 + data = length 678, hash C432ACF0 + sample 12: + time = 299000 + flags = 1 + data = length 682, hash C23E1F17 + sample 13: + time = 320333 + flags = 1 + data = length 685, hash B22AB49 + sample 14: + time = 341666 + flags = 1 + data = length 683, hash B073F447 + sample 15: + time = 363000 + flags = 1 + data = length 675, hash C7614E26 + sample 16: + time = 384333 + flags = 1 + data = length 679, hash 5B075ADF + sample 17: + time = 405666 + flags = 1 + data = length 687, hash E260C35B + sample 18: + time = 427000 + flags = 1 + data = length 687, hash 3C316334 + sample 19: + time = 448333 + flags = 1 + data = length 680, hash BCD8469 + sample 20: + time = 469666 + flags = 1 + data = length 681, hash CBD0BF0F + sample 21: + time = 491000 + flags = 1 + data = length 719, hash F7594265 + sample 22: + time = 512333 + flags = 1 + data = length 699, hash 4975812A + sample 23: + time = 533666 + flags = 1 + data = length 723, hash 11C7327E + sample 24: + time = 555000 + flags = 1 + data = length 765, hash DED05454 + sample 25: + time = 576333 + flags = 1 + data = length 785, hash 9E7C3FDD + sample 26: + time = 597666 + flags = 1 + data = length 728, hash B433E15E + sample 27: + time = 619000 + flags = 1 + data = length 708, hash ED0B3337 + sample 28: + time = 640333 + flags = 1 + data = length 642, hash 6B447435 + sample 29: + time = 661666 + flags = 1 + data = length 628, hash D59CB28F + sample 30: + time = 683000 + flags = 1 + data = length 594, hash BCC990B5 + sample 31: + time = 704333 + flags = 1 + data = length 622, hash C9AE9991 + sample 32: + time = 725645 + flags = 1 + data = length 633, hash 4B7D59B8 + sample 33: + time = 746979 + flags = 1 + data = length 661, hash A98CE814 + sample 34: + time = 768312 + flags = 1 + data = length 662, hash 9A3E0D79 + sample 35: + time = 789645 + flags = 1 + data = length 669, hash 2A0B67AC + sample 36: + time = 810979 + flags = 1 + data = length 691, hash C339C4EE + sample 37: + time = 832312 + flags = 1 + data = length 678, hash CF770B8C + sample 38: + time = 853645 + flags = 1 + data = length 678, hash 685F97BC + sample 39: + time = 874979 + flags = 1 + data = length 688, hash 7DC1FBD3 + sample 40: + time = 896312 + flags = 1 + data = length 684, hash F7D9FE89 + sample 41: + time = 917645 + flags = 1 + data = length 683, hash 5E3EA281 + sample 42: + time = 938979 + flags = 1 + data = length 675, hash F576AE6 + sample 43: + time = 960312 + flags = 1 + data = length 697, hash B0EBE204 + sample 44: + time = 981645 + flags = 1 + data = length 675, hash 3C928CCA + sample 45: + time = 1002979 + flags = 1 + data = length 680, hash 34650DF5 + sample 46: + time = 1024312 + flags = 1 + data = length 685, hash 564F62A + sample 47: + time = 1045645 + flags = 1 + data = length 691, hash 71BBA88D + sample 48: + time = 1066979 + flags = 1 + data = length 736, hash C8F0D575 + sample 49: + time = 1088312 + flags = 1 + data = length 718, hash 2F13561A + sample 50: + time = 1109645 + flags = 1 + data = length 692, hash CF153F84 + sample 51: + time = 1130979 + flags = 1 + data = length 673, hash 30357B83 + sample 52: + time = 1152312 + flags = 1 + data = length 690, hash 5FB65B72 + sample 53: + time = 1173645 + flags = 1 + data = length 769, hash F5E1AAEA + sample 54: + time = 1194979 + flags = 1 + data = length 733, hash 9327D738 + sample 55: + time = 1216312 + flags = 1 + data = length 627, hash 203CFA24 + sample 56: + time = 1237645 + flags = 1 + data = length 697, hash 1FCE39D0 + sample 57: + time = 1258979 + flags = 1 + data = length 585, hash B53A076B + sample 58: + time = 1280312 + flags = 1 + data = length 650, hash FDFCA752 + sample 59: + time = 1301645 + flags = 1 + data = length 725, hash 4D4FA788 + sample 60: + time = 1322979 + flags = 1 + data = length 788, hash 6D883F0B + sample 61: + time = 1344312 + flags = 1 + data = length 649, hash 9125CC1A + sample 62: + time = 1365645 + flags = 1 + data = length 616, hash C02AB7EA + sample 63: + time = 1386979 + flags = 1 + data = length 624, hash D49000E1 + sample 64: + time = 1408312 + flags = 1 + data = length 664, hash 482C9994 + sample 65: + time = 1429645 + flags = 1 + data = length 656, hash A234172A + sample 66: + time = 1450979 + flags = 1 + data = length 649, hash BCCAD04D + sample 67: + time = 1472312 + flags = 1 + data = length 655, hash B961E395 + sample 68: + time = 1493645 + flags = 1 + data = length 673, hash 5BD56013 + sample 69: + time = 1514979 + flags = 1 + data = length 700, hash FE25D834 + sample 70: + time = 1536312 + flags = 1 + data = length 668, hash 45203245 + sample 71: + time = 1557645 + flags = 1 + data = length 672, hash F9269558 + sample 72: + time = 1578979 + flags = 1 + data = length 682, hash C205B4DF + sample 73: + time = 1600312 + flags = 1 + data = length 686, hash A4632474 + sample 74: + time = 1621645 + flags = 1 + data = length 747, hash B2F3AA1D + sample 75: + time = 1642979 + flags = 1 + data = length 711, hash B3A33D80 + sample 76: + time = 1664312 + flags = 1 + data = length 652, hash 37A9B9BF + sample 77: + time = 1685645 + flags = 1 + data = length 675, hash F6BE4CAC + sample 78: + time = 1706979 + flags = 1 + data = length 672, hash 22A12DFC + sample 79: + time = 1728312 + flags = 1 + data = length 674, hash E740F44 + sample 80: + time = 1749645 + flags = 1 + data = length 680, hash A065804 + sample 81: + time = 1770979 + flags = 1 + data = length 663, hash 805CE20 + sample 82: + time = 1792312 + flags = 1 + data = length 688, hash C2E28B22 + sample 83: + time = 1813645 + flags = 1 + data = length 672, hash BF738F27 + sample 84: + time = 1834979 + flags = 1 + data = length 673, hash AFE85361 + sample 85: + time = 1856312 + flags = 1 + data = length 679, hash C9D68F4F + sample 86: + time = 1877645 + flags = 1 + data = length 676, hash 42C67933 + sample 87: + time = 1898979 + flags = 1 + data = length 748, hash 16944018 + sample 88: + time = 1920312 + flags = 1 + data = length 730, hash D592050C + sample 89: + time = 1941645 + flags = 1 + data = length 785, hash DB11A4E8 + sample 90: + time = 1962979 + flags = 1 + data = length 708, hash 445F4443 + sample 91: + time = 1984312 + flags = 1 + data = length 630, hash BD57EF90 + sample 92: + time = 2005645 + flags = 1 + data = length 621, hash FB977F1F + sample 93: + time = 2026979 + flags = 1 + data = length 656, hash 53E25FBE + sample 94: + time = 2048291 + flags = 1 + data = length 664, hash A9D0717 + sample 95: + time = 2069625 + flags = 1 + data = length 672, hash 6F2663EA + sample 96: + time = 2090958 + flags = 1 + data = length 677, hash 6EBB686B + sample 97: + time = 2112291 + flags = 1 + data = length 679, hash BF29A1EC + sample 98: + time = 2133625 + flags = 1 + data = length 683, hash 69F6750D + sample 99: + time = 2154958 + flags = 1 + data = length 691, hash A79A804F + sample 100: + time = 2176291 + flags = 1 + data = length 734, hash 31FB39E8 + sample 101: + time = 2197625 + flags = 1 + data = length 657, hash F99E1ADC + sample 102: + time = 2218958 + flags = 1 + data = length 659, hash FDC16724 + sample 103: + time = 2240291 + flags = 1 + data = length 795, hash 23302539 + sample 104: + time = 2261625 + flags = 1 + data = length 691, hash 5AA01A0 + sample 105: + time = 2282958 + flags = 1 + data = length 640, hash A9A214AB + sample 106: + time = 2304291 + flags = 1 + data = length 651, hash F3253A0E + sample 107: + time = 2325625 + flags = 1 + data = length 652, hash 2D4DE02 + sample 108: + time = 2346958 + flags = 1 + data = length 772, hash 16817D3A + sample 109: + time = 2368291 + flags = 1 + data = length 756, hash 738E4C8D + sample 110: + time = 2389625 + flags = 1 + data = length 781, hash 61372EAE + sample 111: + time = 2410958 + flags = 1 + data = length 658, hash 83B5A955 + sample 112: + time = 2432291 + flags = 1 + data = length 667, hash C3CF8AEF + sample 113: + time = 2453625 + flags = 1 + data = length 768, hash C6534483 + sample 114: + time = 2474958 + flags = 1 + data = length 688, hash 1C14B263 + sample 115: + time = 2496291 + flags = 1 + data = length 599, hash 51CF483 + sample 116: + time = 2517625 + flags = 1 + data = length 594, hash F290D460 + sample 117: + time = 2538958 + flags = 1 + data = length 633, hash 262E26E6 + sample 118: + time = 2560291 + flags = 1 + data = length 656, hash 9158E6A1 + sample 119: + time = 2581625 + flags = 1 + data = length 668, hash 3AC6C8DF + sample 120: + time = 2602958 + flags = 1 + data = length 667, hash DB111C93 + sample 121: + time = 2624291 + flags = 1 + data = length 670, hash 5EA45C5E + sample 122: + time = 2645625 + flags = 1 + data = length 663, hash 1CF1EC34 + sample 123: + time = 2666958 + flags = 1 + data = length 673, hash 9609104 + sample 124: + time = 2688291 + flags = 1 + data = length 704, hash D274E425 + sample 125: + time = 2709625 + flags = 1 + data = length 681, hash 4D720ACE + sample 126: + time = 2730958 + flags = 1 + data = length 682, hash C49E4619 + sample 127: + time = 2752291 + flags = 1 + data = length 680, hash 1AB4733A + sample 128: + time = 2773625 + flags = 1 + data = length 675, hash BA047E60 + sample 129: + time = 2794958 + flags = 1 + data = length 688, hash 9679B8E9 + sample 130: + time = 2816291 + flags = 1 + data = length 687, hash 57DBCD4 + sample 131: + time = 2837625 + flags = 1 + data = length 680, hash 91BA9BF2 + sample 132: + time = 2858958 + flags = 1 + data = length 757, hash 741D6330 + sample 133: + time = 2880291 + flags = 1 + data = length 651, hash 60508D7D + sample 134: + time = 2901625 + flags = 1 + data = length 679, hash 7A32FD22 + sample 135: + time = 2922958 + flags = 1 + data = length 666, hash 98C3F963 + sample 136: + time = 2944291 + flags = 1 + data = length 694, hash 59D9B67B + sample 137: + time = 2965625 + flags = 1 + data = length 680, hash 6FA356DD + sample 138: + time = 2986958 + flags = 1 + data = length 665, hash 3D7E32D9 + sample 139: + time = 3008291 + flags = 1 + data = length 681, hash 2592B0DF + sample 140: + time = 3029625 + flags = 1 + data = length 680, hash 2BA659D7 + sample 141: + time = 3050958 + flags = 1 + data = length 667, hash 1E21B749 + sample 142: + time = 3072291 + flags = 1 + data = length 683, hash 57E1A624 + sample 143: + time = 3093625 + flags = 1 + data = length 673, hash B7216D34 + sample 144: + time = 3114958 + flags = 1 + data = length 684, hash 2FDBEB3A + sample 145: + time = 3136291 + flags = 1 + data = length 707, hash 1D528F18 + sample 146: + time = 3157625 + flags = 1 + data = length 693, hash 24148721 + sample 147: + time = 3178958 + flags = 1 + data = length 660, hash C89F9451 + sample 148: + time = 3200291 + flags = 1 + data = length 679, hash 67C16179 + sample 149: + time = 3221625 + flags = 1 + data = length 685, hash 6EF9DD57 + sample 150: + time = 3242958 + flags = 1 + data = length 672, hash CFF4E296 + sample 151: + time = 3264291 + flags = 1 + data = length 681, hash 994F630 + sample 152: + time = 3285625 + flags = 1 + data = length 684, hash 3118D2E9 + sample 153: + time = 3306958 + flags = 1 + data = length 677, hash 3628592F + sample 154: + time = 3328291 + flags = 1 + data = length 689, hash 309E58A0 + sample 155: + time = 3349625 + flags = 1 + data = length 677, hash D1F3255B + sample 156: + time = 3370958 + flags = 1 + data = length 689, hash B3E864BA + sample 157: + time = 3392270 + flags = 1 + data = length 680, hash 469FA2FF + sample 158: + time = 3413604 + flags = 1 + data = length 688, hash DC9FC31B + sample 159: + time = 3434937 + flags = 1 + data = length 675, hash E2396CC7 + sample 160: + time = 3456270 + flags = 1 + data = length 738, hash C1B7A30A + sample 161: + time = 3477604 + flags = 1 + data = length 723, hash CEABDA70 + sample 162: + time = 3498937 + flags = 1 + data = length 698, hash 59E1B5D8 + sample 163: + time = 3520270 + flags = 1 + data = length 671, hash 71CD7BFA + sample 164: + time = 3541604 + flags = 1 + data = length 652, hash 45894636 + sample 165: + time = 3562937 + flags = 1 + data = length 667, hash E98A528A + sample 166: + time = 3584270 + flags = 1 + data = length 682, hash 8AA9E761 + sample 167: + time = 3605604 + flags = 1 + data = length 670, hash 7D071859 + sample 168: + time = 3626937 + flags = 1 + data = length 672, hash 4FA7BDBB + sample 169: + time = 3648270 + flags = 1 + data = length 779, hash 85D8FF74 + sample 170: + time = 3669604 + flags = 1 + data = length 699, hash CABC0AF6 + sample 171: + time = 3690937 + flags = 1 + data = length 635, hash 35BD0FED + sample 172: + time = 3712270 + flags = 1 + data = length 646, hash D4960FAC + sample 173: + time = 3733604 + flags = 1 + data = length 669, hash 4DAC2897 + sample 174: + time = 3754937 + flags = 1 + data = length 675, hash FD60998A + sample 175: + time = 3776270 + flags = 1 + data = length 677, hash FED0180B + sample 176: + time = 3797604 + flags = 1 + data = length 668, hash C6183862 + sample 177: + time = 3818937 + flags = 1 + data = length 671, hash EBA9EF22 + sample 178: + time = 3840270 + flags = 1 + data = length 668, hash CF88A2FF + sample 179: + time = 3861604 + flags = 1 + data = length 727, hash A9311311 + sample 180: + time = 3882937 + flags = 1 + data = length 701, hash C6351159 + sample 181: + time = 3904270 + flags = 1 + data = length 847, hash 1864F774 + sample 182: + time = 3925604 + flags = 1 + data = length 765, hash 616DD2EA + sample 183: + time = 3946937 + flags = 1 + data = length 674, hash 671D4342 + sample 184: + time = 3968270 + flags = 1 + data = length 723, hash 567566A2 + sample 185: + time = 3989604 + flags = 1 + data = length 580, hash B38C9C63 + sample 186: + time = 4010937 + flags = 1 + data = length 583, hash 5668BFCE + sample 187: + time = 4032270 + flags = 1 + data = length 631, hash 7E86C98E + sample 188: + time = 4053604 + flags = 1 + data = length 656, hash 95A41C9B + sample 189: + time = 4074937 + flags = 1 + data = length 822, hash 2A045560 + sample 190: + time = 4096270 + flags = 1 + data = length 643, hash 551E7C72 + sample 191: + time = 4117604 + flags = 1 + data = length 617, hash 463482D9 + sample 192: + time = 4138937 + flags = 1 + data = length 640, hash E714454F + sample 193: + time = 4160270 + flags = 1 + data = length 646, hash 6DD5E81B + sample 194: + time = 4181604 + flags = 536870913 + data = length 690, hash 407EC299 +tracksEnded = true