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