Commit c642f811 by kimvde Committed by christosts

Fix sample interleaving

Whether to write a sample or not was based on the timestamp of the
previous sample, rather than the current sample.

PiperOrigin-RevId: 500195279
parent ee37b453
......@@ -177,7 +177,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
* {@linkplain #addTrackFormat(Format) received a format} for every {@linkplain
* #setTrackCount(int) track}, or if it should write samples of other track types first to
* ensure a good interleaving.
* @throws IllegalStateException If the muxer doesn't have any {@linkplain #endTrack(int)
* @throws IllegalArgumentException If the muxer doesn't have any {@linkplain #endTrack(int)
* non-ended} track of the given track type.
* @throws Muxer.MuxerException If the underlying muxer fails to write the sample.
*/
......@@ -189,7 +189,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
checkArgument(
trackInfo != null, "Could not write sample because there is no track of type " + trackType);
if (!canWriteSampleOfType(trackType)) {
if (!canWriteSample(trackType, presentationTimeUs)) {
return false;
}
......@@ -255,21 +255,16 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
}
/**
* Returns whether the muxer can write a sample of the given track type.
* Returns whether the muxer can write a sample.
*
* @param trackType The track type, defined by the {@code TRACK_TYPE_*} constants in {@link C}.
* @return Whether the muxer can write a sample of the given track type. This is {@code false} if
* the muxer hasn't {@link #addTrackFormat(Format) received a format} for every {@link
* #setTrackCount(int) track}, or if it should write samples of other track types first to
* ensure a good interleaving.
* @throws IllegalStateException If the muxer doesn't have any {@link #endTrack(int) non-ended}
* track of the given track type.
* @param trackType The sample track type.
* @param presentationTimeUs The sample presentation time, in microseconds.
* @return Whether the muxer can write a sample with the given track type and presentation time.
* This is {@code false} if the muxer hasn't {@link #addTrackFormat(Format) received a format}
* for every {@link #setTrackCount(int) track}, or if it should write samples of other track
* types first to ensure a good interleaving.
*/
private boolean canWriteSampleOfType(int trackType) {
@Nullable TrackInfo trackInfo = trackTypeToInfo.get(trackType);
// SparseArray.get() returns null by default if the value is not found.
checkArgument(trackInfo != null, "There is no track of type " + trackType);
private boolean canWriteSample(@C.TrackType int trackType, long presentationTimeUs) {
if (!isReady) {
return false;
}
......@@ -279,7 +274,7 @@ import org.checkerframework.checker.nullness.qual.RequiresNonNull;
if (trackType != previousTrackType) {
minTrackTimeUs = getMinTrackTimeUs(trackTypeToInfo);
}
return trackInfo.timeUs - minTrackTimeUs <= MAX_TRACK_WRITE_AHEAD_US;
return presentationTimeUs - minTrackTimeUs <= MAX_TRACK_WRITE_AHEAD_US;
}
@RequiresNonNull("muxer")
......
......@@ -165,12 +165,6 @@ sample:
isKeyFrame = false
presentationTimeUs = 367000
sample:
trackIndex = 1
dataHashCode = 2085064574
size = 5525
isKeyFrame = false
presentationTimeUs = 567000
sample:
trackIndex = 0
dataHashCode = -1124371059
size = 418
......@@ -202,10 +196,10 @@ sample:
presentationTimeUs = 71066
sample:
trackIndex = 1
dataHashCode = -637074022
size = 1082
dataHashCode = 2085064574
size = 5525
isKeyFrame = false
presentationTimeUs = 500000
presentationTimeUs = 567000
sample:
trackIndex = 0
dataHashCode = 1297086772
......@@ -286,6 +280,12 @@ sample:
presentationTimeUs = 132676
sample:
trackIndex = 1
dataHashCode = -637074022
size = 1082
isKeyFrame = false
presentationTimeUs = 500000
sample:
trackIndex = 1
dataHashCode = -1824027029
size = 807
isKeyFrame = false
......
......@@ -171,12 +171,6 @@ sample:
isKeyFrame = false
presentationTimeUs = 367033
sample:
trackIndex = 1
dataHashCode = -261176150
size = 5450
isKeyFrame = false
presentationTimeUs = 567233
sample:
trackIndex = 0
dataHashCode = -1536715689
size = 248
......@@ -286,10 +280,10 @@ sample:
presentationTimeUs = 67625
sample:
trackIndex = 1
dataHashCode = -1830836678
size = 1051
dataHashCode = -261176150
size = 5450
isKeyFrame = false
presentationTimeUs = 500500
presentationTimeUs = 567233
sample:
trackIndex = 0
dataHashCode = -1290952882
......@@ -382,6 +376,12 @@ sample:
presentationTimeUs = 107646
sample:
trackIndex = 1
dataHashCode = -1830836678
size = 1051
isKeyFrame = false
presentationTimeUs = 500500
sample:
trackIndex = 1
dataHashCode = 1767407540
size = 874
isKeyFrame = false
......@@ -393,12 +393,6 @@ sample:
isKeyFrame = false
presentationTimeUs = 533866
sample:
trackIndex = 1
dataHashCode = -1408463661
size = 4725
isKeyFrame = false
presentationTimeUs = 700700
sample:
trackIndex = 0
dataHashCode = -2065
size = 2
......@@ -406,6 +400,12 @@ sample:
presentationTimeUs = 107730
sample:
trackIndex = 1
dataHashCode = -1408463661
size = 4725
isKeyFrame = false
presentationTimeUs = 700700
sample:
trackIndex = 1
dataHashCode = 1569455924
size = 1022
isKeyFrame = false
......
......@@ -112,12 +112,6 @@ sample:
isKeyFrame = false
presentationTimeUs = 367033
sample:
trackIndex = 1
dataHashCode = -261176150
size = 5450
isKeyFrame = false
presentationTimeUs = 567233
sample:
trackIndex = 0
dataHashCode = 837571078
size = 6
......@@ -131,10 +125,10 @@ sample:
presentationTimeUs = 90439
sample:
trackIndex = 1
dataHashCode = -1830836678
size = 1051
dataHashCode = -261176150
size = 5450
isKeyFrame = false
presentationTimeUs = 500500
presentationTimeUs = 567233
sample:
trackIndex = 0
dataHashCode = -822987359
......@@ -262,6 +256,12 @@ sample:
isKeyFrame = true
presentationTimeUs = 578058
sample:
trackIndex = 1
dataHashCode = -1830836678
size = 1051
isKeyFrame = false
presentationTimeUs = 500500
sample:
trackIndex = 0
dataHashCode = 1606694497
size = 231
......@@ -274,12 +274,6 @@ sample:
isKeyFrame = false
presentationTimeUs = 467133
sample:
trackIndex = 0
dataHashCode = 1747388653
size = 217
isKeyFrame = true
presentationTimeUs = 624498
sample:
trackIndex = 1
dataHashCode = 918440283
size = 781
......@@ -359,6 +353,12 @@ sample:
presentationTimeUs = 934266
sample:
trackIndex = 0
dataHashCode = 1747388653
size = 217
isKeyFrame = true
presentationTimeUs = 624498
sample:
trackIndex = 0
dataHashCode = -734560004
size = 239
isKeyFrame = true
......
......@@ -147,12 +147,6 @@ sample:
isKeyFrame = true
presentationTimeUs = 487620
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 510840
sample:
trackIndex = 0
dataHashCode = -770308242
size = 36692
......@@ -169,19 +163,19 @@ sample:
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 534059
presentationTimeUs = 510840
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 557279
presentationTimeUs = 534059
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 580499
presentationTimeUs = 557279
sample:
trackIndex = 0
dataHashCode = 468156717
......@@ -199,37 +193,37 @@ sample:
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 603719
presentationTimeUs = 580499
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 626939
presentationTimeUs = 603719
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 650159
presentationTimeUs = 626939
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 673379
presentationTimeUs = 650159
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 696599
presentationTimeUs = 673379
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 719819
presentationTimeUs = 696599
sample:
trackIndex = 0
dataHashCode = 1443582006
......@@ -259,31 +253,31 @@ sample:
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 743039
presentationTimeUs = 719819
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 766259
presentationTimeUs = 743039
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 789479
presentationTimeUs = 766259
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 812699
presentationTimeUs = 789479
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 835919
presentationTimeUs = 812699
sample:
trackIndex = 0
dataHashCode = -32297181
......@@ -313,31 +307,31 @@ sample:
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 859139
presentationTimeUs = 835919
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 882359
presentationTimeUs = 859139
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 905579
presentationTimeUs = 882359
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 928799
presentationTimeUs = 905579
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 952019
presentationTimeUs = 928799
sample:
trackIndex = 0
dataHashCode = 1369083472
......@@ -361,6 +355,12 @@ sample:
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 952019
sample:
trackIndex = 1
dataHashCode = 1742602241
size = 4096
isKeyFrame = true
presentationTimeUs = 975239
sample:
trackIndex = 1
......
......@@ -190,12 +190,6 @@ sample:
isKeyFrame = false
presentationTimeUs = 434083
sample:
trackIndex = 1
dataHashCode = 2112365658
size = 1109
isKeyFrame = false
presentationTimeUs = 600750
sample:
trackIndex = 0
dataHashCode = 1580199067
size = 232
......@@ -281,6 +275,12 @@ sample:
presentationTimeUs = 84417
sample:
trackIndex = 1
dataHashCode = 2112365658
size = 1109
isKeyFrame = false
presentationTimeUs = 600750
sample:
trackIndex = 1
dataHashCode = -968901399
size = 250
isKeyFrame = false
......
......@@ -220,12 +220,6 @@ sample:
isKeyFrame = false
presentationTimeUs = 500000
sample:
trackIndex = 1
dataHashCode = 1120133924
size = 151
isKeyFrame = false
presentationTimeUs = 516666
sample:
trackIndex = 0
dataHashCode = 33931768
size = 504
......@@ -233,10 +227,10 @@ sample:
presentationTimeUs = 28354
sample:
trackIndex = 1
dataHashCode = 264118578
size = 2235
dataHashCode = 1120133924
size = 151
isKeyFrame = false
presentationTimeUs = 533333
presentationTimeUs = 516666
sample:
trackIndex = 0
dataHashCode = 800699278
......@@ -376,6 +370,12 @@ sample:
isKeyFrame = true
presentationTimeUs = 519020
sample:
trackIndex = 1
dataHashCode = 264118578
size = 2235
isKeyFrame = false
presentationTimeUs = 533333
sample:
trackIndex = 0
dataHashCode = 204379389
size = 504
......@@ -388,12 +388,6 @@ sample:
isKeyFrame = false
presentationTimeUs = 550000
sample:
trackIndex = 0
dataHashCode = 694913274
size = 508
isKeyFrame = true
presentationTimeUs = 561687
sample:
trackIndex = 1
dataHashCode = -1000078879
size = 2231
......@@ -568,30 +562,24 @@ sample:
isKeyFrame = false
presentationTimeUs = 1033333
sample:
trackIndex = 0
dataHashCode = 694913274
size = 508
isKeyFrame = true
presentationTimeUs = 561687
sample:
trackIndex = 1
dataHashCode = 65238903
size = 163
isKeyFrame = false
presentationTimeUs = 1050000
sample:
trackIndex = 1
dataHashCode = 1720840922
size = 2043
isKeyFrame = false
presentationTimeUs = 1066666
sample:
trackIndex = 0
dataHashCode = 289018778
size = 513
isKeyFrame = true
presentationTimeUs = 583020
sample:
trackIndex = 1
dataHashCode = -1006231050
size = 178
isKeyFrame = false
presentationTimeUs = 1083333
sample:
trackIndex = 0
dataHashCode = -693167785
size = 517
......@@ -724,17 +712,23 @@ sample:
isKeyFrame = true
presentationTimeUs = 1052354
sample:
trackIndex = 1
dataHashCode = 1720840922
size = 2043
isKeyFrame = false
presentationTimeUs = 1066666
sample:
trackIndex = 0
dataHashCode = -744850549
size = 511
isKeyFrame = true
presentationTimeUs = 1073687
sample:
trackIndex = 0
dataHashCode = 1457899387
size = 505
isKeyFrame = true
presentationTimeUs = 1095020
trackIndex = 1
dataHashCode = -1006231050
size = 178
isKeyFrame = false
presentationTimeUs = 1083333
sample:
trackIndex = 1
dataHashCode = 1742965952
......@@ -742,12 +736,6 @@ sample:
isKeyFrame = false
presentationTimeUs = 1100000
sample:
trackIndex = 0
dataHashCode = 168118808
size = 519
isKeyFrame = true
presentationTimeUs = 1116354
sample:
trackIndex = 1
dataHashCode = -971065365
size = 240
......@@ -887,6 +875,18 @@ sample:
presentationTimeUs = 1483333
sample:
trackIndex = 0
dataHashCode = 1457899387
size = 505
isKeyFrame = true
presentationTimeUs = 1095020
sample:
trackIndex = 0
dataHashCode = 168118808
size = 519
isKeyFrame = true
presentationTimeUs = 1116354
sample:
trackIndex = 0
dataHashCode = 896298799
size = 506
isKeyFrame = true
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment