From f181855c5e1577b2df2d61ca49b04e6a202679b0 Mon Sep 17 00:00:00 2001 From: sheenachhabra Date: Thu, 24 Oct 2024 06:11:16 -0700 Subject: [PATCH] Add an API to disable sample batching in Mp4Muxer Mp4Muxer caches the samples and then writes them in batches. The new API allows disabling the batching and writing sample immediately. PiperOrigin-RevId: 689352771 --- ...erEndToEndNonParameterizedAndroidTest.java | 59 + .../java/androidx/media3/muxer/Mp4Muxer.java | 34 +- .../java/androidx/media3/muxer/Mp4Writer.java | 25 +- ...amable_output_disabled_hdr10-720p.mp4.dump | 1336 +++++++++++++++++ ...mple_batching_disabled_hdr10-720p.mp4.dump | 1336 +++++++++++++++++ 5 files changed, 2784 insertions(+), 6 deletions(-) create mode 100644 libraries/test_data/src/test/assets/muxerdumps/sample_batching_and_attempt_streamable_output_disabled_hdr10-720p.mp4.dump create mode 100644 libraries/test_data/src/test/assets/muxerdumps/sample_batching_disabled_hdr10-720p.mp4.dump 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