diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 62a0143a87..5e9ea27812 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -50,6 +50,8 @@ `ColorInfo.colorSpace`, `ColorInfo.colorTransfer`, and `ColorInfo.colorRange` values ([#692](https://github.com/androidx/media/pull/692)). + * Fix wrong keyframe detection for TS H264 streams + ([#864](https://github.com/androidx/media/pull/864)). * Audio: * Video: * Add workaround for a device issue on Galaxy Tab S7 FE, Chromecast with 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 99ad187b05..07786a4ba5 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 @@ -330,11 +330,12 @@ public final class H264Reader implements ElementaryStreamReader { sliceHeader.clear(); } - public void startNalUnit(long position, int type, long pesTimeUs, boolean rai) { + public void startNalUnit( + long position, int type, long pesTimeUs, boolean randomAccessIndicator) { nalUnitType = type; nalUnitTimeUs = pesTimeUs; nalUnitStartPosition = position; - randomAccessIndicator = rai; + this.randomAccessIndicator = randomAccessIndicator; if ((allowNonIdrKeyframes && nalUnitType == NalUnitUtil.NAL_UNIT_TYPE_NON_IDR) || (detectAccessUnits && (nalUnitType == NalUnitUtil.NAL_UNIT_TYPE_IDR 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 b29cd3ca76..4ee83354a3 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 @@ -70,6 +70,7 @@ public final class TsExtractorTest { ExtractorAsserts.assertBehavior(TsExtractor::new, "media/ts/sample_h264.ts", simulationConfig); } + @Test public void sampleWithH264AndMpegAudio() throws Exception { ExtractorAsserts.assertBehavior( TsExtractor::new, "media/ts/sample_h264_mpeg_audio.ts", simulationConfig);