From d9a678483b40243dc9bd4708628543e8ae7f2e0e Mon Sep 17 00:00:00 2001 From: rohks Date: Wed, 11 Sep 2024 10:01:28 -0700 Subject: [PATCH] Refine sample presentation time validation for negative PTS workaround In case of negative PTS workaround, instead of disallowing all cases where samples are not in presentation order, we now validate that the first sample's presentation time is the smallest. This adjustment allows for correctly applying an offset to ensure all samples have a presentation time >= 0. #cherrypick PiperOrigin-RevId: 673434793 --- .../androidx/media3/transformer/FrameworkMuxer.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java b/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java index 428df2358f..7ba51ed585 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/FrameworkMuxer.java @@ -201,12 +201,13 @@ import java.util.Map; trackTokenToLastPresentationTimeUs.put(trackToken, presentationTimeUs); checkState( - presentationTimeOffsetUs == 0 || presentationTimeUs >= lastSamplePresentationTimeUs, - "Samples not in presentation order (" - + presentationTimeUs - + " < " - + lastSamplePresentationTimeUs - + ") unsupported when using negative PTS workaround"); + presentationTimeOffsetUs == 0 || presentationTimeUs >= 0, + String.format( + Locale.US, + "Sample presentation time (%d) < first sample presentation time (%d). Ensure the first" + + " sample has the smallest timestamp when using the negative PTS workaround.", + presentationTimeUs - presentationTimeOffsetUs, + -presentationTimeOffsetUs)); bufferInfo.set(bufferInfo.offset, bufferInfo.size, presentationTimeUs, bufferInfo.flags); try {