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..6d59a73006 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 @@ -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..4445af067a 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") @@ -508,6 +511,13 @@ public final class H264Reader implements ElementaryStreamReader { output.sampleMetadata(sampleTimeUs, flags, size, offset, null); } + public void end(long position) { + // Output a final sample with the NAL units currently held + nalUnitStartPosition = position; + outputSample(/* offset= */ 0); + readingSample = false; + } + private static final class SliceHeaderData { private static final int SLICE_TYPE_I = 2; 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..7d265852a6 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") @@ -383,6 +386,13 @@ public final class H265Reader implements ElementaryStreamReader { output.sampleMetadata(sampleTimeUs, flags, size, offset, null); } + public void end(long position) { + // Output a final sample with the NAL units currently held + nalUnitPosition = position; + outputSample(/* offset= */ 0); + readingSample = false; + } + /** Returns whether a NAL unit type is one that occurs before any VCL NAL units in a sample. */ private static boolean isPrefixNalUnit(int nalUnitType) { return (VPS_NUT <= nalUnitType && nalUnitType <= AUD_NUT) || nalUnitType == PREFIX_SEI_NUT; 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/PesReader.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/PesReader.java index acae00b030..577576817e 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); } } 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..59781d23c3 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 @@ -447,6 +447,13 @@ public final class TsExtractor implements Extractor { } if (!fillBufferWithAtLeastOnePacket(input)) { + // Send a synthesised 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) { + payloadReader.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_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_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..d84b88cb2b 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 = 30 format 0: id = 1/256 sampleMimeType = video/hevc @@ -137,4 +137,8 @@ track 256: time = 933333 flags = 0 data = length 87, hash EEC4D98C + sample 29: + time = 1000000 + flags = 0 + data = length 167, hash EAE2DF9A 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..e490cc45b9 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 = 21 format 0: id = 1/256 sampleMimeType = video/hevc @@ -101,4 +101,8 @@ track 256: time = 933333 flags = 0 data = length 87, hash EEC4D98C + sample 20: + time = 1000000 + flags = 0 + data = length 167, hash EAE2DF9A 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..bba794744e 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 = 12 format 0: id = 1/256 sampleMimeType = video/hevc @@ -65,4 +65,8 @@ track 256: time = 933333 flags = 0 data = length 87, hash EEC4D98C + sample 11: + time = 1000000 + flags = 0 + data = length 167, hash EAE2DF9A 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..286707eae8 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 = 3 format 0: id = 1/256 sampleMimeType = video/hevc @@ -29,4 +29,8 @@ track 256: time = 933333 flags = 0 data = length 87, hash EEC4D98C + sample 2: + time = 1000000 + flags = 0 + data = length 167, hash EAE2DF9A 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..a6f53039d6 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 = 30 format 0: id = 1/256 sampleMimeType = video/hevc @@ -134,4 +134,8 @@ track 256: time = 933333 flags = 0 data = length 87, hash EEC4D98C + sample 29: + time = 1000000 + flags = 0 + data = length 167, hash EAE2DF9A 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..4c48998a9c 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 = 16 format 0: id = 1/256 sampleMimeType = video/hevc @@ -81,4 +81,8 @@ track 256: time = 1133333 flags = 0 data = length 46, hash CE770A40 + sample 15: + time = 1266666 + flags = 0 + data = length 99, hash CD8A8477 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..2333b52841 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 = 12 format 0: id = 1/256 sampleMimeType = video/hevc @@ -65,4 +65,8 @@ track 256: time = 1133333 flags = 0 data = length 46, hash CE770A40 + sample 11: + time = 1266666 + flags = 0 + data = length 99, hash CD8A8477 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..e333da3008 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 = 7 format 0: id = 1/256 sampleMimeType = video/hevc @@ -45,4 +45,8 @@ track 256: time = 1133333 flags = 0 data = length 46, hash CE770A40 + sample 6: + time = 1266666 + flags = 0 + data = length 99, hash CD8A8477 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..d77e39484f 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 = 2 format 0: id = 1/256 sampleMimeType = video/hevc @@ -25,4 +25,8 @@ track 256: time = 1133333 flags = 0 data = length 46, hash CE770A40 + sample 1: + time = 1266666 + flags = 0 + data = length 99, hash CD8A8477 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..20da28fa68 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 = 16 format 0: id = 1/256 sampleMimeType = video/hevc @@ -78,4 +78,8 @@ track 256: time = 1133333 flags = 0 data = length 46, hash CE770A40 + sample 15: + time = 1266666 + flags = 0 + data = length 99, hash CD8A8477 tracksEnded = true