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 d5b8f7e38f..31321037a4 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 @@ -220,6 +220,7 @@ public final class H263Reader implements ElementaryStreamReader { public void packetFinished(boolean isEndOfInput) { if (isEndOfInput) { sampleReader.onDataEnd(totalBytesWritten, 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 d6c0973598..885726fb32 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 @@ -506,6 +506,7 @@ public final class H264Reader implements ElementaryStreamReader { // Output a final sample with the nal units currently held nalUnitStartPosition = position; outputSample(0); + readingSample = false; } private static final class SliceHeaderData { 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 8580beafab..25262f314d 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 @@ -382,6 +382,7 @@ public final class H265Reader implements ElementaryStreamReader { // Output a final sample with the nal units currently held nalUnitPosition = position; outputSample(0); + readingSample = false; } /** Returns whether a NAL unit type is one that occurs before any VCL NAL units in a sample. */ 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 7819c7fa16..2d35af946e 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 @@ -323,13 +323,11 @@ public final class TsExtractor implements Extractor { } if (!fillBufferWithAtLeastOnePacket(input)) { - if (mode != MODE_HLS) { - // Send a dummy 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); - } + // Send a dummy 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;