MidiExtractor: mark only the first sample as key-frame

This change fixes a bug with seeking forward in MIDI. When seeking forward,
the progressive media period attempts to seek within the sample queue, if a
key-frame exists before the seeking position. With MIDI, however, we can
only skip Note-On and Note-Off samples and all other samples must be sent
to the MIDI decoder.

When seeking outside the sample queue, the MidiExtractor already
instructs the player to start from the beginning of the MIDI input. With
this change, only the first output sample is a key-frame, thus the
progressive media period can no longer seek within the sample queue and
is forced to seek from the MIDI input start always.

Issue: androidx/media#704

PiperOrigin-RevId: 584321443
(cherry picked from commit ec08db458e6cedcb79a42f10eaac7f8da7e7bcdb)
This commit is contained in:
christosts 2023-11-21 07:36:48 -08:00 committed by microkatz
parent c9f6ad0398
commit 124eb31fd2
9 changed files with 340 additions and 294 deletions

View File

@ -44,6 +44,8 @@
* Smooth Streaming Extension: * Smooth Streaming Extension:
* RTSP Extension: * RTSP Extension:
* Decoder Extensions (FFmpeg, VP9, AV1, MIDI, etc.): * Decoder Extensions (FFmpeg, VP9, AV1, MIDI, etc.):
* MIDI: Fix issue where seeking forward skips the Program Change events
([#704](https://github.com/androidx/media/issues/704).
* Leanback extension: * Leanback extension:
* Cast Extension: * Cast Extension:
* Sanitize creation of a `Timeline` to not crash the app when loading * Sanitize creation of a `Timeline` to not crash the app when loading

View File

@ -17,17 +17,19 @@ package androidx.media3.decoder.midi;
import static androidx.media3.common.util.Assertions.checkNotNull; import static androidx.media3.common.util.Assertions.checkNotNull;
import static androidx.media3.common.util.Assertions.checkState; import static androidx.media3.common.util.Assertions.checkState;
import static androidx.media3.common.util.Assertions.checkStateNotNull;
import static java.lang.annotation.ElementType.TYPE_USE; import static java.lang.annotation.ElementType.TYPE_USE;
import androidx.annotation.IntDef; import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import androidx.media3.common.C; import androidx.media3.common.C;
import androidx.media3.common.DataReader;
import androidx.media3.common.Format; import androidx.media3.common.Format;
import androidx.media3.common.MimeTypes; import androidx.media3.common.MimeTypes;
import androidx.media3.common.ParserException; import androidx.media3.common.ParserException;
import androidx.media3.common.util.ParsableByteArray; import androidx.media3.common.util.ParsableByteArray;
import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.UnstableApi;
import androidx.media3.common.util.Util; import androidx.media3.common.util.Util;
import androidx.media3.extractor.DummyTrackOutput;
import androidx.media3.extractor.Extractor; import androidx.media3.extractor.Extractor;
import androidx.media3.extractor.ExtractorInput; import androidx.media3.extractor.ExtractorInput;
import androidx.media3.extractor.ExtractorOutput; import androidx.media3.extractor.ExtractorOutput;
@ -43,6 +45,7 @@ import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target; import java.lang.annotation.Target;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.PriorityQueue; import java.util.PriorityQueue;
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
/** Extracts data from MIDI containers. */ /** Extracts data from MIDI containers. */
@UnstableApi @UnstableApi
@ -99,14 +102,13 @@ public final class MidiExtractor implements Extractor, SeekMap {
private int ticksPerQuarterNote; private int ticksPerQuarterNote;
private long currentTimestampUs; private long currentTimestampUs;
private long startTimeUs; private long startTimeUs;
private TrackOutput trackOutput; private @MonotonicNonNull SingleKeyFrameTrackOutput trackOutput;
public MidiExtractor() { public MidiExtractor() {
state = STATE_INITIALIZED; state = STATE_INITIALIZED;
trackChunkList = new ArrayList<>(); trackChunkList = new ArrayList<>();
trackPriorityQueue = new PriorityQueue<>(); trackPriorityQueue = new PriorityQueue<>();
midiFileData = new ParsableByteArray(/* limit= */ 512); midiFileData = new ParsableByteArray(/* limit= */ 512);
trackOutput = new DummyTrackOutput();
} }
// Extractor implementation. // Extractor implementation.
@ -117,7 +119,7 @@ public final class MidiExtractor implements Extractor, SeekMap {
throw new IllegalStateException(); throw new IllegalStateException();
} }
trackOutput = output.track(0, C.TRACK_TYPE_AUDIO); trackOutput = new SingleKeyFrameTrackOutput(output.track(0, C.TRACK_TYPE_AUDIO));
trackOutput.format( trackOutput.format(
new Format.Builder() new Format.Builder()
.setCodecs(MimeTypes.AUDIO_MIDI) .setCodecs(MimeTypes.AUDIO_MIDI)
@ -140,6 +142,9 @@ public final class MidiExtractor implements Extractor, SeekMap {
public void seek(long position, long timeUs) { public void seek(long position, long timeUs) {
checkState(state != STATE_RELEASED); checkState(state != STATE_RELEASED);
startTimeUs = timeUs; startTimeUs = timeUs;
if (trackOutput != null) {
trackOutput.reset();
}
if (state == STATE_LOADING) { if (state == STATE_LOADING) {
midiFileData.setPosition(0); midiFileData.setPosition(0);
bytesRead = 0; bytesRead = 0;
@ -211,7 +216,8 @@ public final class MidiExtractor implements Extractor, SeekMap {
outputEmptySample(); outputEmptySample();
} else { // Event time is sooner than the maximum threshold. } else { // Event time is sooner than the maximum threshold.
currentTimestampUs = nextCommandTimestampUs; currentTimestampUs = nextCommandTimestampUs;
nextChunk.outputFrontSample(trackOutput); nextChunk.outputFrontSample(
checkStateNotNull(trackOutput), /* skipNoteEvents= */ false);
nextChunk.populateFrontTrackEvent(); nextChunk.populateFrontTrackEvent();
} }
@ -223,9 +229,8 @@ public final class MidiExtractor implements Extractor, SeekMap {
return result; return result;
case STATE_INITIALIZED: case STATE_INITIALIZED:
case STATE_RELEASED: case STATE_RELEASED:
throw new IllegalStateException();
default: default:
throw new IllegalStateException(); // Should never happen. throw new IllegalStateException();
} }
} }
@ -333,12 +338,13 @@ public final class MidiExtractor implements Extractor, SeekMap {
} }
private void outputEmptySample() { private void outputEmptySample() {
trackOutput.sampleMetadata( checkStateNotNull(trackOutput)
currentTimestampUs, .sampleMetadata(
/* flags= */ C.BUFFER_FLAG_KEY_FRAME, currentTimestampUs,
/* size= */ 0, /* flags= */ 0,
/* offset= */ 0, /* size= */ 0,
/* cryptoData= */ null); /* offset= */ 0,
/* cryptoData= */ null);
} }
private void seekChunksTo(long seekTimeUs) throws ParserException { private void seekChunksTo(long seekTimeUs) throws ParserException {
@ -347,12 +353,64 @@ public final class MidiExtractor implements Extractor, SeekMap {
long nextTimestampUs = nextChunk.peekNextTimestampUs(); long nextTimestampUs = nextChunk.peekNextTimestampUs();
if (nextTimestampUs != C.TIME_UNSET && nextTimestampUs < seekTimeUs) { if (nextTimestampUs != C.TIME_UNSET && nextTimestampUs < seekTimeUs) {
nextChunk.outputFrontSample( nextChunk.outputFrontSample(checkStateNotNull(trackOutput), /* skipNoteEvents= */ true);
trackOutput, C.BUFFER_FLAG_KEY_FRAME, /* skipNoteEvents= */ true);
nextChunk.populateFrontTrackEvent(); nextChunk.populateFrontTrackEvent();
trackPriorityQueue.add(nextChunk); trackPriorityQueue.add(nextChunk);
} }
} }
trackPriorityQueue.addAll(trackChunkList); trackPriorityQueue.addAll(trackChunkList);
} }
/**
* A {@link TrackOutput} wrapper that marks only the first sample as a key-frame.
*
* <p>Only the first sample is marked as a key-frame so that seeking requires the player to seek
* to the beginning of the MIDI input and output all non Note-On and Note-Off events to the {@link
* MidiDecoder}.
*/
private static final class SingleKeyFrameTrackOutput implements TrackOutput {
private final TrackOutput trackOutput;
private int outputSampleCount;
private SingleKeyFrameTrackOutput(TrackOutput trackOutput) {
this.trackOutput = trackOutput;
}
@Override
public void format(Format format) {
trackOutput.format(format);
}
@Override
public int sampleData(
DataReader input, int length, boolean allowEndOfInput, @SampleDataPart int sampleDataPart)
throws IOException {
return trackOutput.sampleData(input, length, allowEndOfInput, sampleDataPart);
}
@Override
public void sampleData(ParsableByteArray data, int length, @SampleDataPart int sampleDataPart) {
trackOutput.sampleData(data, length, sampleDataPart);
}
@Override
public void sampleMetadata(
long timeUs,
@C.BufferFlags int flags,
int size,
int offset,
@Nullable CryptoData cryptoData) {
// No MIDI sample should be marked as key-frame
checkState((flags & C.BUFFER_FLAG_KEY_FRAME) == 0);
if (outputSampleCount == 0) {
flags |= C.BUFFER_FLAG_KEY_FRAME;
}
trackOutput.sampleMetadata(timeUs, flags, size, offset, cryptoData);
outputSampleCount++;
}
public void reset() {
outputSampleCount = 0;
}
}
} }

View File

@ -90,25 +90,13 @@ import java.util.ArrayList;
ticksPerQuarterNote); ticksPerQuarterNote);
} }
/**
* Outputs the front sample to {@code trackOutput}, flagged as a {@linkplain
* C#BUFFER_FLAG_KEY_FRAME key frame}.
*/
public void outputFrontSample(TrackOutput trackOutput) {
outputFrontSample(
/* trackOutput= */ trackOutput,
/* flags= */ C.BUFFER_FLAG_KEY_FRAME,
/* skipNoteEvents= */ false);
}
/** /**
* Outputs the current track event to {@code trackOutput}. * Outputs the current track event to {@code trackOutput}.
* *
* @param trackOutput The {@link TrackOutput} to output samples to. * @param trackOutput The {@link TrackOutput} to output samples to.
* @param flags {@link C.BufferFlags} to mark the buffer with.
* @param skipNoteEvents Whether note events should be skipped. * @param skipNoteEvents Whether note events should be skipped.
*/ */
public void outputFrontSample(TrackOutput trackOutput, int flags, boolean skipNoteEvents) { public void outputFrontSample(TrackOutput trackOutput, boolean skipNoteEvents) {
if (!currentTrackEvent.isPopulated()) { if (!currentTrackEvent.isPopulated()) {
return; return;
} }
@ -149,7 +137,7 @@ import java.util.ArrayList;
trackOutput.sampleData(sampleData, sampleSize); trackOutput.sampleData(sampleData, sampleSize);
trackOutput.sampleMetadata( trackOutput.sampleMetadata(
lastOutputEventTimestampUs, lastOutputEventTimestampUs,
/* flags= */ flags, /* flags= */ 0,
/* size= */ sampleSize, /* size= */ sampleSize,
/* offset= */ 0, /* offset= */ 0,
/* cryptoData= */ null); /* cryptoData= */ null);
@ -207,10 +195,8 @@ import java.util.ArrayList;
return 1; return 1;
} else if (otherTimestampUs == C.TIME_UNSET) { } else if (otherTimestampUs == C.TIME_UNSET) {
return -1; return -1;
} else if (thisTimestampUs < otherTimestampUs) {
return -1;
} else { } else {
return 1; return Long.compare(thisTimestampUs, otherTimestampUs);
} }
} }

View File

@ -52,7 +52,7 @@ public class TrackChunkTest {
/* tempoListener= */ mock(TrackChunk.TempoChangedListener.class)); /* tempoListener= */ mock(TrackChunk.TempoChangedListener.class));
trackChunk.populateFrontTrackEvent(); trackChunk.populateFrontTrackEvent();
trackChunk.outputFrontSample(fakeTrackOutput); trackChunk.outputFrontSample(fakeTrackOutput, /* skipNoteEvents= */ false);
assertThat(fakeTrackOutput.getSampleTimeUs(/* index= */ 0)).isEqualTo(/* expected= */ 0); assertThat(fakeTrackOutput.getSampleTimeUs(/* index= */ 0)).isEqualTo(/* expected= */ 0);
trackChunk.addTempoChange(/* tempoBpm= */ 180, /* ticks= */ 480); trackChunk.addTempoChange(/* tempoBpm= */ 180, /* ticks= */ 480);
@ -60,7 +60,7 @@ public class TrackChunkTest {
trackChunk.addTempoChange(/* tempoBpm= */ 300, /* ticks= */ 1440); trackChunk.addTempoChange(/* tempoBpm= */ 300, /* ticks= */ 1440);
trackChunk.populateFrontTrackEvent(); trackChunk.populateFrontTrackEvent();
trackChunk.outputFrontSample(fakeTrackOutput); trackChunk.outputFrontSample(fakeTrackOutput, /* skipNoteEvents= */ false);
assertThat(fakeTrackOutput.getSampleTimeUs(/* index= */ 1)).isEqualTo(/* expected= */ 1283333); assertThat(fakeTrackOutput.getSampleTimeUs(/* index= */ 1)).isEqualTo(/* expected= */ 1283333);
} }
} }

View File

@ -16,382 +16,382 @@ track 0:
data = length 7, hash C95FA520 data = length 7, hash C95FA520
sample 1: sample 1:
time = 0 time = 0
flags = 1 flags = 0
data = length 5, hash 1CF3DA7 data = length 5, hash 1CF3DA7
sample 2: sample 2:
time = 0 time = 0
flags = 1 flags = 0
data = length 3, hash FFFED75B data = length 3, hash FFFED75B
sample 3: sample 3:
time = 100000 time = 100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 4: sample 4:
time = 200000 time = 200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 5: sample 5:
time = 300000 time = 300000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 6: sample 6:
time = 400000 time = 400000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 7: sample 7:
time = 500000 time = 500000
flags = 1 flags = 0
data = length 3, hash FFFED733 data = length 3, hash FFFED733
sample 8: sample 8:
time = 500000 time = 500000
flags = 1 flags = 0
data = length 3, hash FFFED751 data = length 3, hash FFFED751
sample 9: sample 9:
time = 600000 time = 600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 10: sample 10:
time = 700000 time = 700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 11: sample 11:
time = 800000 time = 800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 12: sample 12:
time = 900000 time = 900000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 13: sample 13:
time = 1000000 time = 1000000
flags = 1 flags = 0
data = length 3, hash FFFED733 data = length 3, hash FFFED733
sample 14: sample 14:
time = 1000000 time = 1000000
flags = 1 flags = 0
data = length 3, hash FFFED839 data = length 3, hash FFFED839
sample 15: sample 15:
time = 1100000 time = 1100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 16: sample 16:
time = 1200000 time = 1200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 17: sample 17:
time = 1300000 time = 1300000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 18: sample 18:
time = 1400000 time = 1400000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 19: sample 19:
time = 1500000 time = 1500000
flags = 1 flags = 0
data = length 3, hash FFFED80C data = length 3, hash FFFED80C
sample 20: sample 20:
time = 1500000 time = 1500000
flags = 1 flags = 0
data = length 3, hash FFFED83E data = length 3, hash FFFED83E
sample 21: sample 21:
time = 1600000 time = 1600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 22: sample 22:
time = 1700000 time = 1700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 23: sample 23:
time = 1800000 time = 1800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 24: sample 24:
time = 1900000 time = 1900000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 25: sample 25:
time = 2000000 time = 2000000
flags = 1 flags = 0
data = length 3, hash FFFED80C data = length 3, hash FFFED80C
sample 26: sample 26:
time = 2000000 time = 2000000
flags = 1 flags = 0
data = length 3, hash FFFED877 data = length 3, hash FFFED877
sample 27: sample 27:
time = 2100000 time = 2100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 28: sample 28:
time = 2200000 time = 2200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 29: sample 29:
time = 2300000 time = 2300000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 30: sample 30:
time = 2400000 time = 2400000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 31: sample 31:
time = 2500000 time = 2500000
flags = 1 flags = 0
data = length 3, hash FFFED84A data = length 3, hash FFFED84A
sample 32: sample 32:
time = 2500000 time = 2500000
flags = 1 flags = 0
data = length 3, hash FFFED87C data = length 3, hash FFFED87C
sample 33: sample 33:
time = 2600000 time = 2600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 34: sample 34:
time = 2700000 time = 2700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 35: sample 35:
time = 2800000 time = 2800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 36: sample 36:
time = 2900000 time = 2900000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 37: sample 37:
time = 3000000 time = 3000000
flags = 1 flags = 0
data = length 3, hash FFFED84A data = length 3, hash FFFED84A
sample 38: sample 38:
time = 3000000 time = 3000000
flags = 1 flags = 0
data = length 3, hash FFFED82F data = length 3, hash FFFED82F
sample 39: sample 39:
time = 3100000 time = 3100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 40: sample 40:
time = 3200000 time = 3200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 41: sample 41:
time = 3300000 time = 3300000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 42: sample 42:
time = 3400000 time = 3400000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 43: sample 43:
time = 3500000 time = 3500000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 44: sample 44:
time = 3600000 time = 3600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 45: sample 45:
time = 3700000 time = 3700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 46: sample 46:
time = 3800000 time = 3800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 47: sample 47:
time = 3900000 time = 3900000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 48: sample 48:
time = 4000000 time = 4000000
flags = 1 flags = 0
data = length 3, hash FFFED80C data = length 3, hash FFFED80C
sample 49: sample 49:
time = 4000000 time = 4000000
flags = 1 flags = 0
data = length 3, hash FFFED800 data = length 3, hash FFFED800
sample 50: sample 50:
time = 4100000 time = 4100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 51: sample 51:
time = 4200000 time = 4200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 52: sample 52:
time = 4300000 time = 4300000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 53: sample 53:
time = 4400000 time = 4400000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 54: sample 54:
time = 4500000 time = 4500000
flags = 1 flags = 0
data = length 3, hash FFFED7CE data = length 3, hash FFFED7CE
sample 55: sample 55:
time = 4500000 time = 4500000
flags = 1 flags = 0
data = length 3, hash FFFED7FB data = length 3, hash FFFED7FB
sample 56: sample 56:
time = 4600000 time = 4600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 57: sample 57:
time = 4700000 time = 4700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 58: sample 58:
time = 4800000 time = 4800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 59: sample 59:
time = 4900000 time = 4900000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 60: sample 60:
time = 5000000 time = 5000000
flags = 1 flags = 0
data = length 3, hash FFFED7CE data = length 3, hash FFFED7CE
sample 61: sample 61:
time = 5000000 time = 5000000
flags = 1 flags = 0
data = length 3, hash FFFED7E1 data = length 3, hash FFFED7E1
sample 62: sample 62:
time = 5100000 time = 5100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 63: sample 63:
time = 5200000 time = 5200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 64: sample 64:
time = 5250000 time = 5250000
flags = 1 flags = 0
data = length 3, hash FFFED7AF data = length 3, hash FFFED7AF
sample 65: sample 65:
time = 5350000 time = 5350000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 66: sample 66:
time = 5450000 time = 5450000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 67: sample 67:
time = 5500000 time = 5500000
flags = 1 flags = 0
data = length 3, hash FFFED7D7 data = length 3, hash FFFED7D7
sample 68: sample 68:
time = 5600000 time = 5600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 69: sample 69:
time = 5700000 time = 5700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 70: sample 70:
time = 5750000 time = 5750000
flags = 1 flags = 0
data = length 3, hash FFFED7AF data = length 3, hash FFFED7AF
sample 71: sample 71:
time = 5850000 time = 5850000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 72: sample 72:
time = 5950000 time = 5950000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 73: sample 73:
time = 6000000 time = 6000000
flags = 1 flags = 0
data = length 3, hash FFFED79E data = length 3, hash FFFED79E
sample 74: sample 74:
time = 6100000 time = 6100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 75: sample 75:
time = 6200000 time = 6200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 76: sample 76:
time = 6250000 time = 6250000
flags = 1 flags = 0
data = length 3, hash FFFED771 data = length 3, hash FFFED771
sample 77: sample 77:
time = 6350000 time = 6350000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 78: sample 78:
time = 6450000 time = 6450000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 79: sample 79:
time = 6500000 time = 6500000
flags = 1 flags = 0
data = length 3, hash FFFED7A3 data = length 3, hash FFFED7A3
sample 80: sample 80:
time = 6600000 time = 6600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 81: sample 81:
time = 6700000 time = 6700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 82: sample 82:
time = 6750000 time = 6750000
flags = 1 flags = 0
data = length 3, hash FFFED771 data = length 3, hash FFFED771
sample 83: sample 83:
time = 6850000 time = 6850000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 84: sample 84:
time = 6950000 time = 6950000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 85: sample 85:
time = 7000000 time = 7000000
flags = 1 flags = 0
data = length 3, hash FFFED751 data = length 3, hash FFFED751
sample 86: sample 86:
time = 7100000 time = 7100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 87: sample 87:
time = 7200000 time = 7200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 88: sample 88:
time = 7300000 time = 7300000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 89: sample 89:
time = 7400000 time = 7400000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 90: sample 90:
time = 7500000 time = 7500000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 91: sample 91:
time = 7600000 time = 7600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 92: sample 92:
time = 7700000 time = 7700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 93: sample 93:
time = 7800000 time = 7800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 94: sample 94:
time = 7900000 time = 7900000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 95: sample 95:
time = 8000000 time = 8000000
flags = 1 flags = 0
data = length 3, hash FFFED733 data = length 3, hash FFFED733
tracksEnded = true tracksEnded = true

View File

@ -16,382 +16,382 @@ track 0:
data = length 7, hash C95FA520 data = length 7, hash C95FA520
sample 1: sample 1:
time = 0 time = 0
flags = 1 flags = 0
data = length 5, hash 1CF3DA7 data = length 5, hash 1CF3DA7
sample 2: sample 2:
time = 0 time = 0
flags = 1 flags = 0
data = length 3, hash FFFED75B data = length 3, hash FFFED75B
sample 3: sample 3:
time = 100000 time = 100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 4: sample 4:
time = 200000 time = 200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 5: sample 5:
time = 300000 time = 300000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 6: sample 6:
time = 400000 time = 400000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 7: sample 7:
time = 500000 time = 500000
flags = 1 flags = 0
data = length 3, hash FFFED733 data = length 3, hash FFFED733
sample 8: sample 8:
time = 500000 time = 500000
flags = 1 flags = 0
data = length 3, hash FFFED751 data = length 3, hash FFFED751
sample 9: sample 9:
time = 600000 time = 600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 10: sample 10:
time = 700000 time = 700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 11: sample 11:
time = 800000 time = 800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 12: sample 12:
time = 900000 time = 900000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 13: sample 13:
time = 1000000 time = 1000000
flags = 1 flags = 0
data = length 3, hash FFFED733 data = length 3, hash FFFED733
sample 14: sample 14:
time = 1000000 time = 1000000
flags = 1 flags = 0
data = length 3, hash FFFED839 data = length 3, hash FFFED839
sample 15: sample 15:
time = 1100000 time = 1100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 16: sample 16:
time = 1200000 time = 1200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 17: sample 17:
time = 1300000 time = 1300000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 18: sample 18:
time = 1400000 time = 1400000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 19: sample 19:
time = 1500000 time = 1500000
flags = 1 flags = 0
data = length 3, hash FFFED80C data = length 3, hash FFFED80C
sample 20: sample 20:
time = 1500000 time = 1500000
flags = 1 flags = 0
data = length 3, hash FFFED83E data = length 3, hash FFFED83E
sample 21: sample 21:
time = 1600000 time = 1600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 22: sample 22:
time = 1700000 time = 1700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 23: sample 23:
time = 1800000 time = 1800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 24: sample 24:
time = 1900000 time = 1900000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 25: sample 25:
time = 2000000 time = 2000000
flags = 1 flags = 0
data = length 3, hash FFFED80C data = length 3, hash FFFED80C
sample 26: sample 26:
time = 2000000 time = 2000000
flags = 1 flags = 0
data = length 3, hash FFFED877 data = length 3, hash FFFED877
sample 27: sample 27:
time = 2100000 time = 2100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 28: sample 28:
time = 2200000 time = 2200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 29: sample 29:
time = 2300000 time = 2300000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 30: sample 30:
time = 2400000 time = 2400000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 31: sample 31:
time = 2500000 time = 2500000
flags = 1 flags = 0
data = length 3, hash FFFED84A data = length 3, hash FFFED84A
sample 32: sample 32:
time = 2500000 time = 2500000
flags = 1 flags = 0
data = length 3, hash FFFED87C data = length 3, hash FFFED87C
sample 33: sample 33:
time = 2600000 time = 2600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 34: sample 34:
time = 2700000 time = 2700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 35: sample 35:
time = 2800000 time = 2800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 36: sample 36:
time = 2900000 time = 2900000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 37: sample 37:
time = 3000000 time = 3000000
flags = 1 flags = 0
data = length 3, hash FFFED84A data = length 3, hash FFFED84A
sample 38: sample 38:
time = 3000000 time = 3000000
flags = 1 flags = 0
data = length 3, hash FFFED82F data = length 3, hash FFFED82F
sample 39: sample 39:
time = 3100000 time = 3100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 40: sample 40:
time = 3200000 time = 3200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 41: sample 41:
time = 3300000 time = 3300000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 42: sample 42:
time = 3400000 time = 3400000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 43: sample 43:
time = 3500000 time = 3500000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 44: sample 44:
time = 3600000 time = 3600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 45: sample 45:
time = 3700000 time = 3700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 46: sample 46:
time = 3800000 time = 3800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 47: sample 47:
time = 3900000 time = 3900000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 48: sample 48:
time = 4000000 time = 4000000
flags = 1 flags = 0
data = length 3, hash FFFED80C data = length 3, hash FFFED80C
sample 49: sample 49:
time = 4000000 time = 4000000
flags = 1 flags = 0
data = length 3, hash FFFED800 data = length 3, hash FFFED800
sample 50: sample 50:
time = 4100000 time = 4100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 51: sample 51:
time = 4200000 time = 4200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 52: sample 52:
time = 4300000 time = 4300000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 53: sample 53:
time = 4400000 time = 4400000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 54: sample 54:
time = 4500000 time = 4500000
flags = 1 flags = 0
data = length 3, hash FFFED7CE data = length 3, hash FFFED7CE
sample 55: sample 55:
time = 4500000 time = 4500000
flags = 1 flags = 0
data = length 3, hash FFFED7FB data = length 3, hash FFFED7FB
sample 56: sample 56:
time = 4600000 time = 4600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 57: sample 57:
time = 4700000 time = 4700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 58: sample 58:
time = 4800000 time = 4800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 59: sample 59:
time = 4900000 time = 4900000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 60: sample 60:
time = 5000000 time = 5000000
flags = 1 flags = 0
data = length 3, hash FFFED7CE data = length 3, hash FFFED7CE
sample 61: sample 61:
time = 5000000 time = 5000000
flags = 1 flags = 0
data = length 3, hash FFFED7E1 data = length 3, hash FFFED7E1
sample 62: sample 62:
time = 5100000 time = 5100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 63: sample 63:
time = 5200000 time = 5200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 64: sample 64:
time = 5250000 time = 5250000
flags = 1 flags = 0
data = length 3, hash FFFED7AF data = length 3, hash FFFED7AF
sample 65: sample 65:
time = 5350000 time = 5350000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 66: sample 66:
time = 5450000 time = 5450000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 67: sample 67:
time = 5500000 time = 5500000
flags = 1 flags = 0
data = length 3, hash FFFED7D7 data = length 3, hash FFFED7D7
sample 68: sample 68:
time = 5600000 time = 5600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 69: sample 69:
time = 5700000 time = 5700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 70: sample 70:
time = 5750000 time = 5750000
flags = 1 flags = 0
data = length 3, hash FFFED7AF data = length 3, hash FFFED7AF
sample 71: sample 71:
time = 5850000 time = 5850000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 72: sample 72:
time = 5950000 time = 5950000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 73: sample 73:
time = 6000000 time = 6000000
flags = 1 flags = 0
data = length 3, hash FFFED79E data = length 3, hash FFFED79E
sample 74: sample 74:
time = 6100000 time = 6100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 75: sample 75:
time = 6200000 time = 6200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 76: sample 76:
time = 6250000 time = 6250000
flags = 1 flags = 0
data = length 3, hash FFFED771 data = length 3, hash FFFED771
sample 77: sample 77:
time = 6350000 time = 6350000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 78: sample 78:
time = 6450000 time = 6450000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 79: sample 79:
time = 6500000 time = 6500000
flags = 1 flags = 0
data = length 3, hash FFFED7A3 data = length 3, hash FFFED7A3
sample 80: sample 80:
time = 6600000 time = 6600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 81: sample 81:
time = 6700000 time = 6700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 82: sample 82:
time = 6750000 time = 6750000
flags = 1 flags = 0
data = length 3, hash FFFED771 data = length 3, hash FFFED771
sample 83: sample 83:
time = 6850000 time = 6850000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 84: sample 84:
time = 6950000 time = 6950000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 85: sample 85:
time = 7000000 time = 7000000
flags = 1 flags = 0
data = length 3, hash FFFED751 data = length 3, hash FFFED751
sample 86: sample 86:
time = 7100000 time = 7100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 87: sample 87:
time = 7200000 time = 7200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 88: sample 88:
time = 7300000 time = 7300000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 89: sample 89:
time = 7400000 time = 7400000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 90: sample 90:
time = 7500000 time = 7500000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 91: sample 91:
time = 7600000 time = 7600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 92: sample 92:
time = 7700000 time = 7700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 93: sample 93:
time = 7800000 time = 7800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 94: sample 94:
time = 7900000 time = 7900000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 95: sample 95:
time = 8000000 time = 8000000
flags = 1 flags = 0
data = length 3, hash FFFED733 data = length 3, hash FFFED733
tracksEnded = true tracksEnded = true

View File

@ -16,74 +16,74 @@ track 0:
data = length 3, hash 70FB data = length 3, hash 70FB
sample 1: sample 1:
time = 0 time = 0
flags = 1 flags = 0
data = length 3, hash FFFEDCE7 data = length 3, hash FFFEDCE7
sample 2: sample 2:
time = 0 time = 0
flags = 1 flags = 0
data = length 7, hash C95FA238 data = length 7, hash C95FA238
sample 3: sample 3:
time = 0 time = 0
flags = 1 flags = 0
data = length 6, hash 37A83E76 data = length 6, hash 37A83E76
sample 4: sample 4:
time = 100000 time = 100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 5: sample 5:
time = 200000 time = 200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 6: sample 6:
time = 300000 time = 300000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 7: sample 7:
time = 400000 time = 400000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 8: sample 8:
time = 500000 time = 500000
flags = 1 flags = 0
data = length 6, hash 37A84514 data = length 6, hash 37A84514
sample 9: sample 9:
time = 600000 time = 600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 10: sample 10:
time = 700000 time = 700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 11: sample 11:
time = 800000 time = 800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 12: sample 12:
time = 833333 time = 833333
flags = 1 flags = 0
data = length 6, hash 37A83493 data = length 6, hash 37A83493
sample 13: sample 13:
time = 933333 time = 933333
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 14: sample 14:
time = 1033333 time = 1033333
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 15: sample 15:
time = 1083333 time = 1083333
flags = 1 flags = 0
data = length 6, hash 37A83CA6 data = length 6, hash 37A83CA6
sample 16: sample 16:
time = 1183333 time = 1183333
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 17: sample 17:
time = 1283333 time = 1283333
flags = 1 flags = 0
data = length 3, hash FFFEA058 data = length 3, hash FFFEA058
sample 18: sample 18:
time = 1283333 time = 1283333
flags = 1 flags = 0
data = length 3, hash FFFF4CA9 data = length 3, hash FFFF4CA9
tracksEnded = true tracksEnded = true

View File

@ -16,122 +16,122 @@ track 0:
data = length 3, hash 70FB data = length 3, hash 70FB
sample 1: sample 1:
time = 0 time = 0
flags = 1 flags = 0
data = length 3, hash FFFF5A77 data = length 3, hash FFFF5A77
sample 2: sample 2:
time = 0 time = 0
flags = 1 flags = 0
data = length 7, hash C95FA238 data = length 7, hash C95FA238
sample 3: sample 3:
time = 0 time = 0
flags = 1 flags = 0
data = length 3, hash 70FB data = length 3, hash 70FB
sample 4: sample 4:
time = 0 time = 0
flags = 1 flags = 0
data = length 6, hash 37A83E76 data = length 6, hash 37A83E76
sample 5: sample 5:
time = 0 time = 0
flags = 1 flags = 0
data = length 3, hash FFFF4D46 data = length 3, hash FFFF4D46
sample 6: sample 6:
time = 0 time = 0
flags = 1 flags = 0
data = length 3, hash FFFF4D0D data = length 3, hash FFFF4D0D
sample 7: sample 7:
time = 0 time = 0
flags = 1 flags = 0
data = length 3, hash FFFF4DA4 data = length 3, hash FFFF4DA4
sample 8: sample 8:
time = 0 time = 0
flags = 1 flags = 0
data = length 3, hash 40 data = length 3, hash 40
sample 9: sample 9:
time = 0 time = 0
flags = 1 flags = 0
data = length 2, hash FFFFFC20 data = length 2, hash FFFFFC20
sample 10: sample 10:
time = 0 time = 0
flags = 1 flags = 0
data = length 3, hash FFFEDCE7 data = length 3, hash FFFEDCE7
sample 11: sample 11:
time = 100000 time = 100000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 12: sample 12:
time = 200000 time = 200000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 13: sample 13:
time = 300000 time = 300000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 14: sample 14:
time = 400000 time = 400000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 15: sample 15:
time = 500000 time = 500000
flags = 1 flags = 0
data = length 6, hash 37A84514 data = length 6, hash 37A84514
sample 16: sample 16:
time = 500000 time = 500000
flags = 1 flags = 0
data = length 3, hash FFFEDD63 data = length 3, hash FFFEDD63
sample 17: sample 17:
time = 600000 time = 600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 18: sample 18:
time = 700000 time = 700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 19: sample 19:
time = 800000 time = 800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 20: sample 20:
time = 833333 time = 833333
flags = 1 flags = 0
data = length 3, hash FFFEA0D4 data = length 3, hash FFFEA0D4
sample 21: sample 21:
time = 833333 time = 833333
flags = 1 flags = 0
data = length 6, hash 37A83493 data = length 6, hash 37A83493
sample 22: sample 22:
time = 833333 time = 833333
flags = 1 flags = 0
data = length 3, hash FFFEDDC0 data = length 3, hash FFFEDDC0
sample 23: sample 23:
time = 933333 time = 933333
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 24: sample 24:
time = 1033333 time = 1033333
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 25: sample 25:
time = 1083333 time = 1083333
flags = 1 flags = 0
data = length 6, hash 37A83CA6 data = length 6, hash 37A83CA6
sample 26: sample 26:
time = 1083333 time = 1083333
flags = 1 flags = 0
data = length 3, hash FFFEA131 data = length 3, hash FFFEA131
sample 27: sample 27:
time = 1083333 time = 1083333
flags = 1 flags = 0
data = length 3, hash FFFEDE1D data = length 3, hash FFFEDE1D
sample 28: sample 28:
time = 1183333 time = 1183333
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 29: sample 29:
time = 1283333 time = 1283333
flags = 1 flags = 0
data = length 3, hash FFFEA058 data = length 3, hash FFFEA058
sample 30: sample 30:
time = 1283333 time = 1283333
flags = 1 flags = 0
data = length 3, hash FFFEA18E data = length 3, hash FFFEA18E
tracksEnded = true tracksEnded = true

View File

@ -16,90 +16,90 @@ track 0:
data = length 3, hash 70FB data = length 3, hash 70FB
sample 1: sample 1:
time = 0 time = 0
flags = 1 flags = 0
data = length 3, hash FFFF56B6 data = length 3, hash FFFF56B6
sample 2: sample 2:
time = 0 time = 0
flags = 1 flags = 0
data = length 7, hash C95FA238 data = length 7, hash C95FA238
sample 3: sample 3:
time = 0 time = 0
flags = 1 flags = 0
data = length 3, hash FFFF494C data = length 3, hash FFFF494C
sample 4: sample 4:
time = 0 time = 0
flags = 1 flags = 0
data = length 6, hash 37A83E76 data = length 6, hash 37A83E76
sample 5: sample 5:
time = 4999999 time = 4999999
flags = 1 flags = 0
data = length 3, hash 8DE data = length 3, hash 8DE
sample 6: sample 6:
time = 5500000 time = 5500000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 7: sample 7:
time = 5600000 time = 5600000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 8: sample 8:
time = 5700000 time = 5700000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 9: sample 9:
time = 5800000 time = 5800000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 10: sample 10:
time = 5900000 time = 5900000
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 11: sample 11:
time = 5999999 time = 5999999
flags = 1 flags = 0
data = length 3, hash FFFED7B2 data = length 3, hash FFFED7B2
sample 12: sample 12:
time = 6099999 time = 6099999
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 13: sample 13:
time = 6199999 time = 6199999
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 14: sample 14:
time = 6299999 time = 6299999
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 15: sample 15:
time = 6399999 time = 6399999
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 16: sample 16:
time = 6499999 time = 6499999
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 17: sample 17:
time = 6599999 time = 6599999
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 18: sample 18:
time = 6699999 time = 6699999
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 19: sample 19:
time = 6799999 time = 6799999
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 20: sample 20:
time = 6899999 time = 6899999
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 21: sample 21:
time = 6999999 time = 6999999
flags = 1 flags = 0
data = length 0, hash 1 data = length 0, hash 1
sample 22: sample 22:
time = 7041665 time = 7041665
flags = 1 flags = 0
data = length 3, hash FFFE9B23 data = length 3, hash FFFE9B23
tracksEnded = true tracksEnded = true