diff --git a/RELEASENOTES.md b/RELEASENOTES.md
index 8e452b6372..c3754557e9 100644
--- a/RELEASENOTES.md
+++ b/RELEASENOTES.md
@@ -20,6 +20,13 @@
count constraints as they only apply for playback.
* Track Selection:
* Extractors:
+ * MPEG-TS: Roll forward the change ensuring the last frame is rendered by
+ passing the last access unit of a stream to the sample queue
+ ([#7909](https://github.com/google/ExoPlayer/issues/7909)).
+ Incorporating fixes to resolve the issues that emerged in I-frame only
+ HLS streams([#1150](https://github.com/google/ExoPlayer/issues/1150))
+ and H.262 HLS streams
+ ([#1126](https://github.com/google/ExoPlayer/issues/1126)).
* Audio:
* Video:
* Text:
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/Ac3Reader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/Ac3Reader.java
index c92b3b83f4..e0fd72e6f0 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/Ac3Reader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/Ac3Reader.java
@@ -159,7 +159,7 @@ public final class Ac3Reader implements ElementaryStreamReader {
}
@Override
- public void packetFinished() {
+ public void packetFinished(boolean isEndOfInput) {
// Do nothing.
}
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/Ac4Reader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/Ac4Reader.java
index 6b41d7b00a..c9b6773b51 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/Ac4Reader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/Ac4Reader.java
@@ -161,7 +161,7 @@ public final class Ac4Reader implements ElementaryStreamReader {
}
@Override
- public void packetFinished() {
+ public void packetFinished(boolean isEndOfInput) {
// Do nothing.
}
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/AdtsReader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/AdtsReader.java
index 3cb40a5323..a9b8f7d303 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/AdtsReader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/AdtsReader.java
@@ -194,7 +194,7 @@ public final class AdtsReader implements ElementaryStreamReader {
}
@Override
- public void packetFinished() {
+ public void packetFinished(boolean isEndOfInput) {
// Do nothing.
}
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/DtsReader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/DtsReader.java
index b536086b50..6f9968936e 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/DtsReader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/DtsReader.java
@@ -215,7 +215,7 @@ public final class DtsReader implements ElementaryStreamReader {
}
@Override
- public void packetFinished() {
+ public void packetFinished(boolean isEndOfInput) {
// Do nothing.
}
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/DvbSubtitleReader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/DvbSubtitleReader.java
index 73cdf785fa..02d111c855 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/DvbSubtitleReader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/DvbSubtitleReader.java
@@ -86,7 +86,7 @@ public final class DvbSubtitleReader implements ElementaryStreamReader {
}
@Override
- public void packetFinished() {
+ public void packetFinished(boolean isEndOfInput) {
if (writingSample) {
// packetStarted method must be called before reading sample.
checkState(sampleTimeUs != C.TIME_UNSET);
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/ElementaryStreamReader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/ElementaryStreamReader.java
index 0aaadf2d60..a6decc12a2 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/ElementaryStreamReader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/ElementaryStreamReader.java
@@ -31,7 +31,7 @@ import androidx.media3.extractor.TrackOutput;
*
{@link #seek()} (optional, to reset the state)
* {@link #packetStarted(long, int)} (to signal the start of a new packet)
* {@link #consume(ParsableByteArray)} (zero or more times, to provide packet data)
- * {@link #packetFinished()} (to signal the end of the current packet)
+ * {@link #packetFinished(boolean)} (to signal the end of the current packet)
* Repeat steps 3-5 for subsequent packets
*
*/
@@ -67,5 +67,5 @@ public interface ElementaryStreamReader {
void consume(ParsableByteArray data) throws ParserException;
/** Called when a packet ends. */
- void packetFinished();
+ void packetFinished(boolean isEndOfInput);
}
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H262Reader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H262Reader.java
index 11b301d1ff..1358dbaf42 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H262Reader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H262Reader.java
@@ -217,8 +217,13 @@ public final class H262Reader implements ElementaryStreamReader {
}
@Override
- public void packetFinished() {
- // Do nothing.
+ public void packetFinished(boolean isEndOfInput) {
+ checkStateNotNull(output); // Asserts that createTracks has been called.
+ if (isEndOfInput) {
+ @C.BufferFlags int flags = sampleIsKeyframe ? C.BUFFER_FLAG_KEY_FRAME : 0;
+ int size = (int) (totalBytesWritten - samplePosition);
+ output.sampleMetadata(sampleTimeUs, flags, size, /* offset= */ 0, /* cryptoData= */ null);
+ }
}
/**
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H263Reader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H263Reader.java
index 80b3197bee..5c9d03eab9 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H263Reader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H263Reader.java
@@ -216,8 +216,13 @@ public final class H263Reader implements ElementaryStreamReader {
}
@Override
- public void packetFinished() {
- // Do nothing.
+ public void packetFinished(boolean isEndOfInput) {
+ // Assert that createTracks has been called.
+ checkStateNotNull(sampleReader);
+ if (isEndOfInput) {
+ sampleReader.onDataEnd(totalBytesWritten, /* bytesWrittenPastPosition= */ 0, hasOutputFormat);
+ sampleReader.reset();
+ }
}
/**
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H264Reader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H264Reader.java
index 826f4a3b34..3990ae0486 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H264Reader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H264Reader.java
@@ -167,8 +167,11 @@ public final class H264Reader implements ElementaryStreamReader {
}
@Override
- public void packetFinished() {
- // Do nothing.
+ public void packetFinished(boolean isEndOfInput) {
+ assertTracksCreated();
+ if (isEndOfInput) {
+ sampleReader.end(totalBytesWritten);
+ }
}
@RequiresNonNull("sampleReader")
@@ -491,12 +494,24 @@ public final class H264Reader implements ElementaryStreamReader {
sampleIsKeyframe = false;
readingSample = true;
}
+ setSampleIsKeyframe();
+ return sampleIsKeyframe;
+ }
+
+ public void end(long position) {
+ setSampleIsKeyframe();
+ // Output a final sample with the NAL units currently held
+ nalUnitStartPosition = position;
+ outputSample(/* offset= */ 0);
+ readingSample = false;
+ }
+
+ private void setSampleIsKeyframe() {
boolean treatIFrameAsKeyframe =
allowNonIdrKeyframes ? sliceHeader.isISlice() : randomAccessIndicator;
sampleIsKeyframe |=
nalUnitType == NalUnitUtil.NAL_UNIT_TYPE_IDR
|| (treatIFrameAsKeyframe && nalUnitType == NalUnitUtil.NAL_UNIT_TYPE_NON_IDR);
- return sampleIsKeyframe;
}
private void outputSample(int offset) {
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H265Reader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H265Reader.java
index f00c4e6667..3363ecc012 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H265Reader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/H265Reader.java
@@ -172,8 +172,11 @@ public final class H265Reader implements ElementaryStreamReader {
}
@Override
- public void packetFinished() {
- // Do nothing.
+ public void packetFinished(boolean isEndOfInput) {
+ assertTracksCreated();
+ if (isEndOfInput) {
+ sampleReader.end(totalBytesWritten);
+ }
}
@RequiresNonNull("sampleReader")
@@ -374,6 +377,17 @@ public final class H265Reader implements ElementaryStreamReader {
}
}
+ public void end(long position) {
+ sampleIsKeyframe = nalUnitHasKeyframeData;
+ // Output a sample with the NAL units since the current nalUnitPosition
+ outputSample(/* offset= */ (int) (position - nalUnitPosition));
+ // Output a final sample with the remaining NAL units up to the passed position
+ samplePosition = nalUnitPosition;
+ nalUnitPosition = position;
+ outputSample(/* offset= */ 0);
+ readingSample = false;
+ }
+
private void outputSample(int offset) {
if (sampleTimeUs == C.TIME_UNSET) {
return;
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/Id3Reader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/Id3Reader.java
index 100f2026ea..002dd33657 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/Id3Reader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/Id3Reader.java
@@ -120,7 +120,7 @@ public final class Id3Reader implements ElementaryStreamReader {
}
@Override
- public void packetFinished() {
+ public void packetFinished(boolean isEndOfInput) {
Assertions.checkStateNotNull(output); // Asserts that createTracks has been called.
if (!writingSample || sampleSize == 0 || sampleBytesRead != sampleSize) {
return;
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/LatmReader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/LatmReader.java
index 9eeac6cdfa..ae3a4ae386 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/LatmReader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/LatmReader.java
@@ -153,7 +153,7 @@ public final class LatmReader implements ElementaryStreamReader {
}
@Override
- public void packetFinished() {
+ public void packetFinished(boolean isEndOfInput) {
// Do nothing.
}
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/MpegAudioReader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/MpegAudioReader.java
index 552bfcab55..928f9d1a65 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/MpegAudioReader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/MpegAudioReader.java
@@ -119,7 +119,7 @@ public final class MpegAudioReader implements ElementaryStreamReader {
}
@Override
- public void packetFinished() {
+ public void packetFinished(boolean isEndOfInput) {
// Do nothing.
}
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/MpeghReader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/MpeghReader.java
index 8851cc8348..d2dd1a3b4a 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/MpeghReader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/MpeghReader.java
@@ -214,7 +214,7 @@ public final class MpeghReader implements ElementaryStreamReader {
}
@Override
- public void packetFinished() {
+ public void packetFinished(boolean isEndOfInput) {
// Do nothing.
}
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/PesReader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/PesReader.java
index acae00b030..447c8509a1 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/PesReader.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/PesReader.java
@@ -107,7 +107,8 @@ public final class PesReader implements TsPayloadReader {
Log.w(TAG, "Unexpected start indicator: expected " + payloadSize + " more bytes");
}
// Either way, notify the reader that it has now finished.
- reader.packetFinished();
+ boolean isEndOfInput = (data.limit() == 0);
+ reader.packetFinished(isEndOfInput);
break;
default:
throw new IllegalStateException();
@@ -147,7 +148,8 @@ public final class PesReader implements TsPayloadReader {
if (payloadSize != C.LENGTH_UNSET) {
payloadSize -= readLength;
if (payloadSize == 0) {
- reader.packetFinished();
+ // There are bytes left in data, see above, so this is not the end of input
+ reader.packetFinished(/* isEndOfInput= */ false);
setState(STATE_READING_HEADER);
}
}
@@ -158,6 +160,22 @@ public final class PesReader implements TsPayloadReader {
}
}
+ /**
+ * Determines if the parser can consume a synthesized empty pusi.
+ *
+ * @param isModeHls {@code True} if operating in HLS (HTTP Live Streaming) mode, {@code false}
+ * otherwise.
+ */
+ public boolean canConsumeSynthesizedEmptyPusi(boolean isModeHls) {
+ // Pusi only payload to trigger end of sample data is only applicable if
+ // pes does not have a length field and body is being read, another exclusion
+ // is due to H262 streams possibly having, in HLS mode, a pes across more than one segment
+ // which would trigger committing an unfinished sample in the middle of the access unit
+ return state == STATE_READING_BODY
+ && payloadSize == C.LENGTH_UNSET
+ && !(isModeHls && reader instanceof H262Reader);
+ }
+
private void setState(int state) {
this.state = state;
bytesRead = 0;
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/PsExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/PsExtractor.java
index 5d1a26b1dc..eb3a4418fe 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/PsExtractor.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/PsExtractor.java
@@ -357,7 +357,7 @@ public final class PsExtractor implements Extractor {
pesPayloadReader.packetStarted(timeUs, TsPayloadReader.FLAG_DATA_ALIGNMENT_INDICATOR);
pesPayloadReader.consume(data);
// We always have complete PES packets with program stream.
- pesPayloadReader.packetFinished();
+ pesPayloadReader.packetFinished(/* isEndOfInput= */ false);
}
private void parseHeader() {
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/TsExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/TsExtractor.java
index 53cea741cd..73b75e1ac1 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/TsExtractor.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/TsExtractor.java
@@ -425,8 +425,9 @@ public final class TsExtractor implements Extractor {
public @ReadResult int read(ExtractorInput input, PositionHolder seekPosition)
throws IOException {
long inputLength = input.getLength();
+ boolean isModeHls = mode == MODE_HLS;
if (tracksEnded) {
- boolean canReadDuration = inputLength != C.LENGTH_UNSET && mode != MODE_HLS;
+ boolean canReadDuration = inputLength != C.LENGTH_UNSET && !isModeHls;
if (canReadDuration && !durationReader.isDurationReadFinished()) {
return durationReader.readDuration(input, seekPosition, pcrPid);
}
@@ -447,6 +448,16 @@ public final class TsExtractor implements Extractor {
}
if (!fillBufferWithAtLeastOnePacket(input)) {
+ // Send a synthesized empty pusi to allow for packetFinished to be triggered on the last unit.
+ for (int i = 0; i < tsPayloadReaders.size(); i++) {
+ TsPayloadReader payloadReader = tsPayloadReaders.valueAt(i);
+ if (payloadReader instanceof PesReader) {
+ PesReader pesReader = (PesReader) payloadReader;
+ if (pesReader.canConsumeSynthesizedEmptyPusi(isModeHls)) {
+ pesReader.consume(new ParsableByteArray(), FLAG_PAYLOAD_UNIT_START_INDICATOR);
+ }
+ }
+ }
return RESULT_END_OF_INPUT;
}
diff --git a/libraries/extractor/src/test/java/androidx/media3/extractor/ts/TsExtractorTest.java b/libraries/extractor/src/test/java/androidx/media3/extractor/ts/TsExtractorTest.java
index 2c1655f22a..12b3289234 100644
--- a/libraries/extractor/src/test/java/androidx/media3/extractor/ts/TsExtractorTest.java
+++ b/libraries/extractor/src/test/java/androidx/media3/extractor/ts/TsExtractorTest.java
@@ -545,7 +545,7 @@ public final class TsExtractorTest {
public void consume(ParsableByteArray data) {}
@Override
- public void packetFinished() {
+ public void packetFinished(boolean isEndOfInput) {
packetsRead++;
}
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.0.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.0.dump
index d7e09a7fc8..4acc09c7f8 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.0.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.0.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 39002
- sample count = 24
+ sample count = 25
format 0:
id = 1/256
sampleMimeType = video/mp4v-es
@@ -112,4 +112,8 @@ track 256:
time = 920000
flags = 0
data = length 222, hash 7E77BF79
+ sample 24:
+ time = 960000
+ flags = 1
+ data = length 11769, hash D94C80C0
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.1.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.1.dump
index e67426081b..068d08fae8 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.1.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.1.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 27354
- sample count = 18
+ sample count = 19
format 0:
id = 1/256
sampleMimeType = video/mp4v-es
@@ -88,4 +88,8 @@ track 256:
time = 920000
flags = 0
data = length 222, hash 7E77BF79
+ sample 18:
+ time = 960000
+ flags = 1
+ data = length 11769, hash D94C80C0
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.2.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.2.dump
index 396584d608..beabaa70f5 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.2.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.2.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 13592
- sample count = 8
+ sample count = 9
format 0:
id = 1/256
sampleMimeType = video/mp4v-es
@@ -48,4 +48,8 @@ track 256:
time = 920000
flags = 0
data = length 222, hash 7E77BF79
+ sample 8:
+ time = 960000
+ flags = 1
+ data = length 11769, hash D94C80C0
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.unknown_length.dump
index 0dbb32e7a1..3a4f911622 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.unknown_length.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h263.ts.unknown_length.dump
@@ -5,7 +5,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 39002
- sample count = 24
+ sample count = 25
format 0:
id = 1/256
sampleMimeType = video/mp4v-es
@@ -109,4 +109,8 @@ track 256:
time = 920000
flags = 0
data = length 222, hash 7E77BF79
+ sample 24:
+ time = 960000
+ flags = 1
+ data = length 11769, hash D94C80C0
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.0.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.0.dump
index e5267ce7e0..366338fe96 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.0.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.0.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 41614
- sample count = 29
+ sample count = 30
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -137,4 +137,8 @@ track 256:
time = 966666
flags = 0
data = length 93, hash B6B6263C
+ sample 29:
+ time = 1033333
+ flags = 0
+ data = length 234, hash A48D3D90
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.1.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.1.dump
index 5355585faa..afbcb23e5d 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.1.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.1.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 25812
- sample count = 20
+ sample count = 21
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -101,4 +101,8 @@ track 256:
time = 966666
flags = 0
data = length 93, hash B6B6263C
+ sample 20:
+ time = 1033333
+ flags = 0
+ data = length 234, hash A48D3D90
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.2.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.2.dump
index 49ff7f1a56..ce18263dd8 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.2.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.2.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 13114
- sample count = 11
+ sample count = 12
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -65,4 +65,8 @@ track 256:
time = 966666
flags = 0
data = length 93, hash B6B6263C
+ sample 11:
+ time = 1033333
+ flags = 0
+ data = length 234, hash A48D3D90
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.3.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.3.dump
index e47af7088d..f8372491d6 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.3.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.3.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 412
- sample count = 2
+ sample count = 3
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -29,4 +29,8 @@ track 256:
time = 966666
flags = 0
data = length 93, hash B6B6263C
+ sample 2:
+ time = 1033333
+ flags = 0
+ data = length 234, hash A48D3D90
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.unknown_length.dump
index f162217769..8406fb34de 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.unknown_length.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264.ts.unknown_length.dump
@@ -5,7 +5,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 41614
- sample count = 29
+ sample count = 30
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -134,4 +134,8 @@ track 256:
time = 966666
flags = 0
data = length 93, hash B6B6263C
+ sample 29:
+ time = 1033333
+ flags = 0
+ data = length 234, hash A48D3D90
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_dts_audio.ts.0.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_dts_audio.ts.0.dump
index 0145c3572e..88149be1a2 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_dts_audio.ts.0.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_dts_audio.ts.0.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 2
track 256:
total output bytes = 13650
- sample count = 2
+ sample count = 3
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -29,6 +29,10 @@ track 256:
time = 100100
flags = 0
data = length 813, hash 99F7B4FA
+ sample 2:
+ time = 133466
+ flags = 0
+ data = length 442, hash A7367ECF
track 257:
total output bytes = 18432
sample count = 9
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_dts_audio.ts.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_dts_audio.ts.unknown_length.dump
index 43ff3cfaa9..82dc922fa3 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_dts_audio.ts.unknown_length.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_dts_audio.ts.unknown_length.dump
@@ -5,7 +5,7 @@ seekMap:
numberOfTracks = 2
track 256:
total output bytes = 13650
- sample count = 2
+ sample count = 3
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -26,6 +26,10 @@ track 256:
time = 100100
flags = 0
data = length 813, hash 99F7B4FA
+ sample 2:
+ time = 133466
+ flags = 0
+ data = length 442, hash A7367ECF
track 257:
total output bytes = 18432
sample count = 9
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.0.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.0.dump
index 53c260629c..3d73ae8573 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.0.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.0.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 207313
- sample count = 29
+ sample count = 30
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -137,4 +137,8 @@ track 256:
time = 933333
flags = 1
data = length 7334, hash 614FA397
+ sample 29:
+ time = 966666
+ flags = 1
+ data = length 7287, hash A67CBA0A
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.1.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.1.dump
index dba6260300..4ade0bd62e 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.1.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.1.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 153789
- sample count = 20
+ sample count = 21
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -101,4 +101,8 @@ track 256:
time = 933333
flags = 1
data = length 7334, hash 614FA397
+ sample 20:
+ time = 966666
+ flags = 1
+ data = length 7287, hash A67CBA0A
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.2.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.2.dump
index 6c9e31fc73..f23fcce89b 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.2.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.2.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 87806
- sample count = 11
+ sample count = 12
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -65,4 +65,8 @@ track 256:
time = 933333
flags = 1
data = length 7334, hash 614FA397
+ sample 11:
+ time = 966666
+ flags = 1
+ data = length 7287, hash A67CBA0A
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.3.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.3.dump
index 2ee6d90e32..5cc82cff03 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.3.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.3.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 7288
- sample count = 0
+ sample count = 1
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -21,4 +21,8 @@ track 256:
initializationData:
data = length 25, hash 8F89F820
data = length 8, hash 9BAAE288
+ sample 0:
+ time = 966666
+ flags = 1
+ data = length 7287, hash A67CBA0A
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.unknown_length.dump
index 1aa2502d19..c92a997083 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.unknown_length.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_iframes_only.ts.unknown_length.dump
@@ -5,7 +5,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 207313
- sample count = 29
+ sample count = 30
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -134,4 +134,8 @@ track 256:
time = 933333
flags = 1
data = length 7334, hash 614FA397
+ sample 29:
+ time = 966666
+ flags = 1
+ data = length 7287, hash A67CBA0A
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.0.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.0.dump
index c1aa54cd6c..14fdeb2b08 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.0.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.0.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 2
track 256:
total output bytes = 13650
- sample count = 2
+ sample count = 3
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -29,6 +29,10 @@ track 256:
time = 100100
flags = 0
data = length 813, hash 99F7B4FA
+ sample 2:
+ time = 133466
+ flags = 0
+ data = length 442, hash A7367ECF
track 257:
total output bytes = 5015
sample count = 4
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.1.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.1.dump
index c1aa54cd6c..14fdeb2b08 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.1.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.1.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 2
track 256:
total output bytes = 13650
- sample count = 2
+ sample count = 3
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -29,6 +29,10 @@ track 256:
time = 100100
flags = 0
data = length 813, hash 99F7B4FA
+ sample 2:
+ time = 133466
+ flags = 0
+ data = length 442, hash A7367ECF
track 257:
total output bytes = 5015
sample count = 4
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.2.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.2.dump
index c1aa54cd6c..14fdeb2b08 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.2.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.2.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 2
track 256:
total output bytes = 13650
- sample count = 2
+ sample count = 3
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -29,6 +29,10 @@ track 256:
time = 100100
flags = 0
data = length 813, hash 99F7B4FA
+ sample 2:
+ time = 133466
+ flags = 0
+ data = length 442, hash A7367ECF
track 257:
total output bytes = 5015
sample count = 4
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.unknown_length.dump
index 80cd8196ef..1d9e0d4154 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.unknown_length.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_mpeg_audio.ts.unknown_length.dump
@@ -5,7 +5,7 @@ seekMap:
numberOfTracks = 2
track 256:
total output bytes = 13650
- sample count = 2
+ sample count = 3
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -26,6 +26,10 @@ track 256:
time = 100100
flags = 0
data = length 813, hash 99F7B4FA
+ sample 2:
+ time = 133466
+ flags = 0
+ data = length 442, hash A7367ECF
track 257:
total output bytes = 5015
sample count = 4
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.0.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.0.dump
index af8d33818c..efc4982d76 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.0.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.0.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 12451
- sample count = 4
+ sample count = 5
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -37,4 +37,8 @@ track 256:
time = 133466
flags = 0
data = length 518, hash 546C177
+ sample 4:
+ time = 100100
+ flags = 0
+ data = length 254, hash 36EBDA1
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.1.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.1.dump
index af8d33818c..efc4982d76 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.1.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.1.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 12451
- sample count = 4
+ sample count = 5
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -37,4 +37,8 @@ track 256:
time = 133466
flags = 0
data = length 518, hash 546C177
+ sample 4:
+ time = 100100
+ flags = 0
+ data = length 254, hash 36EBDA1
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.2.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.2.dump
index af8d33818c..efc4982d76 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.2.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.2.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 12451
- sample count = 4
+ sample count = 5
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -37,4 +37,8 @@ track 256:
time = 133466
flags = 0
data = length 518, hash 546C177
+ sample 4:
+ time = 100100
+ flags = 0
+ data = length 254, hash 36EBDA1
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.3.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.3.dump
index d85d264d45..8f744992d8 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.3.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.3.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 255
- sample count = 0
+ sample count = 1
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -21,4 +21,8 @@ track 256:
initializationData:
data = length 29, hash 4C2CAE9C
data = length 9, hash D971CD89
+ sample 0:
+ time = 100100
+ flags = 0
+ data = length 254, hash 36EBDA1
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.unknown_length.dump
index 1bd3989f30..938a3dcffc 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.unknown_length.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h264_no_access_unit_delimiters.ts.unknown_length.dump
@@ -5,7 +5,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 12451
- sample count = 4
+ sample count = 5
format 0:
id = 1/256
sampleMimeType = video/avc
@@ -34,4 +34,8 @@ track 256:
time = 133466
flags = 0
data = length 518, hash 546C177
+ sample 4:
+ time = 100100
+ flags = 0
+ data = length 254, hash 36EBDA1
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.0.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.0.dump
index 5ec4a66af0..45887e7d8f 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.0.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.0.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 19364
- sample count = 29
+ sample count = 31
format 0:
id = 1/256
sampleMimeType = video/hevc
@@ -137,4 +137,12 @@ track 256:
time = 933333
flags = 0
data = length 87, hash EEC4D98C
+ sample 29:
+ time = 1000000
+ flags = 0
+ data = length 7, hash 680F23CB
+ sample 30:
+ time = 1000000
+ flags = 0
+ data = length 160, hash 11EC03D0
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.1.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.1.dump
index 596214fd00..f588f2beca 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.1.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.1.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 3806
- sample count = 20
+ sample count = 22
format 0:
id = 1/256
sampleMimeType = video/hevc
@@ -101,4 +101,12 @@ track 256:
time = 933333
flags = 0
data = length 87, hash EEC4D98C
+ sample 20:
+ time = 1000000
+ flags = 0
+ data = length 7, hash 680F23CB
+ sample 21:
+ time = 1000000
+ flags = 0
+ data = length 160, hash 11EC03D0
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.2.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.2.dump
index 96e619ae78..5e8329c924 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.2.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.2.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 1796
- sample count = 11
+ sample count = 13
format 0:
id = 1/256
sampleMimeType = video/hevc
@@ -65,4 +65,12 @@ track 256:
time = 933333
flags = 0
data = length 87, hash EEC4D98C
+ sample 11:
+ time = 1000000
+ flags = 0
+ data = length 7, hash 680F23CB
+ sample 12:
+ time = 1000000
+ flags = 0
+ data = length 160, hash 11EC03D0
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.3.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.3.dump
index 6664dd6e5a..08a626b54c 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.3.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.3.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 396
- sample count = 2
+ sample count = 4
format 0:
id = 1/256
sampleMimeType = video/hevc
@@ -29,4 +29,12 @@ track 256:
time = 933333
flags = 0
data = length 87, hash EEC4D98C
+ sample 2:
+ time = 1000000
+ flags = 0
+ data = length 7, hash 680F23CB
+ sample 3:
+ time = 1000000
+ flags = 0
+ data = length 160, hash 11EC03D0
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.unknown_length.dump
index 3d8153a7e9..2080994316 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.unknown_length.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265.ts.unknown_length.dump
@@ -5,7 +5,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 19364
- sample count = 29
+ sample count = 31
format 0:
id = 1/256
sampleMimeType = video/hevc
@@ -134,4 +134,12 @@ track 256:
time = 933333
flags = 0
data = length 87, hash EEC4D98C
+ sample 29:
+ time = 1000000
+ flags = 0
+ data = length 7, hash 680F23CB
+ sample 30:
+ time = 1000000
+ flags = 0
+ data = length 160, hash 11EC03D0
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.0.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.0.dump
index 87e44ae05a..02463f0ca7 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.0.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.0.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 10004
- sample count = 15
+ sample count = 17
format 0:
id = 1/256
sampleMimeType = video/hevc
@@ -81,4 +81,12 @@ track 256:
time = 1133333
flags = 0
data = length 46, hash CE770A40
+ sample 15:
+ time = 1266666
+ flags = 0
+ data = length 7, hash 680F23CB
+ sample 16:
+ time = 1266666
+ flags = 0
+ data = length 92, hash 531EE3AD
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.1.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.1.dump
index b07c3b0c80..2480556f0e 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.1.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.1.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 856
- sample count = 11
+ sample count = 13
format 0:
id = 1/256
sampleMimeType = video/hevc
@@ -65,4 +65,12 @@ track 256:
time = 1133333
flags = 0
data = length 46, hash CE770A40
+ sample 11:
+ time = 1266666
+ flags = 0
+ data = length 7, hash 680F23CB
+ sample 12:
+ time = 1266666
+ flags = 0
+ data = length 92, hash 531EE3AD
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.2.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.2.dump
index c1481fc0be..b065c49391 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.2.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.2.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 563
- sample count = 6
+ sample count = 8
format 0:
id = 1/256
sampleMimeType = video/hevc
@@ -45,4 +45,12 @@ track 256:
time = 1133333
flags = 0
data = length 46, hash CE770A40
+ sample 6:
+ time = 1266666
+ flags = 0
+ data = length 7, hash 680F23CB
+ sample 7:
+ time = 1266666
+ flags = 0
+ data = length 92, hash 531EE3AD
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.3.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.3.dump
index accd73847b..f06a9bd3ff 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.3.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.3.dump
@@ -8,7 +8,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 146
- sample count = 1
+ sample count = 3
format 0:
id = 1/256
sampleMimeType = video/hevc
@@ -25,4 +25,12 @@ track 256:
time = 1133333
flags = 0
data = length 46, hash CE770A40
+ sample 1:
+ time = 1266666
+ flags = 0
+ data = length 7, hash 680F23CB
+ sample 2:
+ time = 1266666
+ flags = 0
+ data = length 92, hash 531EE3AD
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.unknown_length.dump b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.unknown_length.dump
index 7e18985e7b..746b08b182 100644
--- a/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.unknown_length.dump
+++ b/libraries/test_data/src/test/assets/extractordumps/ts/sample_h265_rps_pred.ts.unknown_length.dump
@@ -5,7 +5,7 @@ seekMap:
numberOfTracks = 1
track 256:
total output bytes = 10004
- sample count = 15
+ sample count = 17
format 0:
id = 1/256
sampleMimeType = video/hevc
@@ -78,4 +78,12 @@ track 256:
time = 1133333
flags = 0
data = length 46, hash CE770A40
+ sample 15:
+ time = 1266666
+ flags = 0
+ data = length 7, hash 680F23CB
+ sample 16:
+ time = 1266666
+ flags = 0
+ data = length 92, hash 531EE3AD
tracksEnded = true
diff --git a/libraries/test_data/src/test/assets/playbackdumps/hls/cea608.dump b/libraries/test_data/src/test/assets/playbackdumps/hls/cea608.dump
index 66d93a45ac..ee16dd071e 100644
--- a/libraries/test_data/src/test/assets/playbackdumps/hls/cea608.dump
+++ b/libraries/test_data/src/test/assets/playbackdumps/hls/cea608.dump
@@ -807,7 +807,7 @@ MediaCodecAdapter (exotest.audio.aac):
rendered = false
MediaCodecAdapter (exotest.video.avc):
inputBuffers:
- count = 58
+ count = 59
input buffer #0:
timeUs = 1000000000000
contents = length 427, hash 45C53469
@@ -980,11 +980,14 @@ MediaCodecAdapter (exotest.video.avc):
timeUs = 1000002416666
contents = length 1035, hash 324B27D0
input buffer #57:
+ timeUs = 1000002458322
+ contents = length 787, hash 1111D81C
+ input buffer #58:
timeUs = 0
flags = 4
contents = length 0, hash 1
outputBuffers:
- count = 57
+ count = 58
output buffer #0:
timeUs = 1000000000000
size = 427
@@ -1213,6 +1216,10 @@ MediaCodecAdapter (exotest.video.avc):
timeUs = 1000002416666
size = 1035
rendered = true
+ output buffer #57:
+ timeUs = 1000002458322
+ size = 787
+ rendered = true
AudioSink:
buffer count = 114
config:
diff --git a/libraries/test_data/src/test/assets/playbackdumps/ts/bbb_2500ms.ts.dump b/libraries/test_data/src/test/assets/playbackdumps/ts/bbb_2500ms.ts.dump
index b33a3085e5..7c9693e1bd 100644
--- a/libraries/test_data/src/test/assets/playbackdumps/ts/bbb_2500ms.ts.dump
+++ b/libraries/test_data/src/test/assets/playbackdumps/ts/bbb_2500ms.ts.dump
@@ -660,7 +660,7 @@ MediaCodecAdapter (exotest.audio.mpegl2):
rendered = false
MediaCodecAdapter (exotest.video.mpeg2):
inputBuffers:
- count = 58
+ count = 59
input buffer #0:
timeUs = 1000000125000
contents = length 32732, hash 7B7C01FD
@@ -833,11 +833,14 @@ MediaCodecAdapter (exotest.video.mpeg2):
timeUs = 1000002541666
contents = length 2738, hash 8F8FDE0A
input buffer #57:
+ timeUs = 1000002583333
+ contents = length 2970, hash 78651B41
+ input buffer #58:
timeUs = 0
flags = 4
contents = length 0, hash 1
outputBuffers:
- count = 57
+ count = 58
output buffer #0:
timeUs = 1000000125000
size = 32732
@@ -1066,6 +1069,10 @@ MediaCodecAdapter (exotest.video.mpeg2):
timeUs = 1000002541666
size = 2738
rendered = true
+ output buffer #57:
+ timeUs = 1000002583333
+ size = 2970
+ rendered = true
AudioSink:
buffer count = 93
config:
diff --git a/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h264_dts_audio.ts.dump b/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h264_dts_audio.ts.dump
index 34b4d19750..e68e9f59a9 100644
--- a/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h264_dts_audio.ts.dump
+++ b/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h264_dts_audio.ts.dump
@@ -1,6 +1,6 @@
MediaCodecAdapter (exotest.video.avc):
inputBuffers:
- count = 3
+ count = 4
input buffer #0:
timeUs = 1000000066733
contents = length 12394, hash A39F5311
@@ -8,11 +8,14 @@ MediaCodecAdapter (exotest.video.avc):
timeUs = 1000000100100
contents = length 813, hash 99F7B4FA
input buffer #2:
+ timeUs = 1000000133466
+ contents = length 442, hash A7367ECF
+ input buffer #3:
timeUs = 0
flags = 4
contents = length 0, hash 1
outputBuffers:
- count = 2
+ count = 3
output buffer #0:
timeUs = 1000000066733
size = 12394
@@ -21,3 +24,7 @@ MediaCodecAdapter (exotest.video.avc):
timeUs = 1000000100100
size = 813
rendered = true
+ output buffer #2:
+ timeUs = 1000000133466
+ size = 442
+ rendered = true
diff --git a/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h264_mpeg_audio.ts.dump b/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h264_mpeg_audio.ts.dump
index 4aae982e35..7f9607151a 100644
--- a/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h264_mpeg_audio.ts.dump
+++ b/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h264_mpeg_audio.ts.dump
@@ -37,7 +37,7 @@ MediaCodecAdapter (exotest.audio.mpegl2):
rendered = false
MediaCodecAdapter (exotest.video.avc):
inputBuffers:
- count = 3
+ count = 4
input buffer #0:
timeUs = 1000000066733
contents = length 12394, hash A39F5311
@@ -45,11 +45,14 @@ MediaCodecAdapter (exotest.video.avc):
timeUs = 1000000100100
contents = length 813, hash 99F7B4FA
input buffer #2:
+ timeUs = 1000000133466
+ contents = length 442, hash A7367ECF
+ input buffer #3:
timeUs = 0
flags = 4
contents = length 0, hash 1
outputBuffers:
- count = 2
+ count = 3
output buffer #0:
timeUs = 1000000066733
size = 12394
@@ -58,6 +61,10 @@ MediaCodecAdapter (exotest.video.avc):
timeUs = 1000000100100
size = 813
rendered = true
+ output buffer #2:
+ timeUs = 1000000133466
+ size = 442
+ rendered = true
AudioSink:
buffer count = 4
config:
diff --git a/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h264_no_access_unit_delimiters.ts.dump b/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h264_no_access_unit_delimiters.ts.dump
index a83a82169c..bbd8851e79 100644
--- a/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h264_no_access_unit_delimiters.ts.dump
+++ b/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h264_no_access_unit_delimiters.ts.dump
@@ -1,6 +1,6 @@
MediaCodecAdapter (exotest.video.avc):
inputBuffers:
- count = 3
+ count = 4
input buffer #0:
timeUs = 1000000066733
contents = length 11672, hash 476AEFF9
@@ -8,11 +8,14 @@ MediaCodecAdapter (exotest.video.avc):
timeUs = 1000000133466
contents = length 524, hash 184416EF
input buffer #2:
+ timeUs = 1000000100100
+ contents = length 254, hash 36EBDA1
+ input buffer #3:
timeUs = 0
flags = 4
contents = length 0, hash 1
outputBuffers:
- count = 2
+ count = 3
output buffer #0:
timeUs = 1000000066733
size = 11672
@@ -21,3 +24,7 @@ MediaCodecAdapter (exotest.video.avc):
timeUs = 1000000133466
size = 524
rendered = true
+ output buffer #2:
+ timeUs = 1000000100100
+ size = 254
+ rendered = true
diff --git a/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h265.ts.dump b/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h265.ts.dump
index a49e443656..f413581010 100644
--- a/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h265.ts.dump
+++ b/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h265.ts.dump
@@ -1,6 +1,6 @@
MediaCodecAdapter (exotest.video.hevc):
inputBuffers:
- count = 30
+ count = 32
input buffer #0:
timeUs = 1000000066666
contents = length 2517, hash 85352308
@@ -89,11 +89,17 @@ MediaCodecAdapter (exotest.video.hevc):
timeUs = 1000000933333
contents = length 87, hash EEC4D98C
input buffer #29:
+ timeUs = 1000001000000
+ contents = length 7, hash 680F23CB
+ input buffer #30:
+ timeUs = 1000001000000
+ contents = length 160, hash 11EC03D0
+ input buffer #31:
timeUs = 0
flags = 4
contents = length 0, hash 1
outputBuffers:
- count = 29
+ count = 31
output buffer #0:
timeUs = 1000000066666
size = 2517
@@ -210,3 +216,11 @@ MediaCodecAdapter (exotest.video.hevc):
timeUs = 1000000933333
size = 87
rendered = true
+ output buffer #29:
+ timeUs = 1000001000000
+ size = 7
+ rendered = true
+ output buffer #30:
+ timeUs = 1000001000000
+ size = 160
+ rendered = true
diff --git a/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h265_rps_pred.ts.dump b/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h265_rps_pred.ts.dump
index 66a5f49812..53f152f44b 100644
--- a/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h265_rps_pred.ts.dump
+++ b/libraries/test_data/src/test/assets/playbackdumps/ts/sample_h265_rps_pred.ts.dump
@@ -1,6 +1,6 @@
MediaCodecAdapter (exotest.video.hevc):
inputBuffers:
- count = 16
+ count = 18
input buffer #0:
timeUs = 1000000266666
contents = length 7464, hash EBF8518B
@@ -47,11 +47,17 @@ MediaCodecAdapter (exotest.video.hevc):
timeUs = 1000001133333
contents = length 46, hash CE770A40
input buffer #15:
+ timeUs = 1000001266666
+ contents = length 7, hash 680F23CB
+ input buffer #16:
+ timeUs = 1000001266666
+ contents = length 92, hash 531EE3AD
+ input buffer #17:
timeUs = 0
flags = 4
contents = length 0, hash 1
outputBuffers:
- count = 15
+ count = 17
output buffer #0:
timeUs = 1000000266666
size = 7464
@@ -112,3 +118,11 @@ MediaCodecAdapter (exotest.video.hevc):
timeUs = 1000001133333
size = 46
rendered = true
+ output buffer #15:
+ timeUs = 1000001266666
+ size = 7
+ rendered = true
+ output buffer #16:
+ timeUs = 1000001266666
+ size = 92
+ rendered = true
diff --git a/libraries/test_data/src/test/assets/transformerdumps/ts/sample_no_bframes.ts/transmuxed_with_inappmuxer.dump b/libraries/test_data/src/test/assets/transformerdumps/ts/sample_no_bframes.ts/transmuxed_with_inappmuxer.dump
index cb0f759fed..ae148e8a07 100644
--- a/libraries/test_data/src/test/assets/transformerdumps/ts/sample_no_bframes.ts/transmuxed_with_inappmuxer.dump
+++ b/libraries/test_data/src/test/assets/transformerdumps/ts/sample_no_bframes.ts/transmuxed_with_inappmuxer.dump
@@ -7,8 +7,8 @@ seekMap:
getPosition(1065600) = [[timeUs=0, position=44]]
numberOfTracks = 2
track 0:
- total output bytes = 287190
- sample count = 29
+ total output bytes = 301430
+ sample count = 30
format 0:
id = 1
sampleMimeType = video/avc
@@ -16,7 +16,7 @@ track 0:
maxInputSize = 22910
width = 1080
height = 720
- frameRate = 31.042604
+ frameRate = 31.004547
colorInfo:
colorSpace = 1
colorRange = 2
@@ -141,8 +141,12 @@ track 0:
data = length 20866, hash 219DA8C0
sample 28:
time = 934255
- flags = 536870912
+ flags = 0
data = length 7215, hash A853B1A9
+ sample 29:
+ time = 967622
+ flags = 536870912
+ data = length 14240, hash 4EE77DF9
track 1:
total output bytes = 9529
sample count = 45