diff --git a/libraries/common/src/main/java/androidx/media3/common/util/SpeedProviderUtil.java b/libraries/common/src/main/java/androidx/media3/common/util/SpeedProviderUtil.java index 8a7bb0432a..ac6ea31233 100644 --- a/libraries/common/src/main/java/androidx/media3/common/util/SpeedProviderUtil.java +++ b/libraries/common/src/main/java/androidx/media3/common/util/SpeedProviderUtil.java @@ -15,8 +15,8 @@ */ package androidx.media3.common.util; +import static java.lang.Math.floor; import static java.lang.Math.min; -import static java.lang.Math.round; import androidx.media3.common.C; import androidx.media3.common.audio.SpeedProvider; @@ -45,6 +45,7 @@ public class SpeedProviderUtil { / (double) speedProvider.getSpeed(speedChangeTimeUs); speedChangeTimeUs = nextSpeedChangeTimeUs; } - return round(outputDurationUs); + // Use floor to be consistent with Util#scaleLargeTimestamp(). + return (long) floor(outputDurationUs); } } diff --git a/libraries/common/src/test/java/androidx/media3/common/util/SpeedProviderUtilTest.java b/libraries/common/src/test/java/androidx/media3/common/util/SpeedProviderUtilTest.java index 8368348f56..749b4f87c7 100644 --- a/libraries/common/src/test/java/androidx/media3/common/util/SpeedProviderUtilTest.java +++ b/libraries/common/src/test/java/androidx/media3/common/util/SpeedProviderUtilTest.java @@ -46,6 +46,6 @@ public class SpeedProviderUtilTest { /* startTimesUs= */ new long[] {0, 113}, /* speeds= */ new float[] {2, 1}); assertThat(getDurationAfterSpeedProviderApplied(speedProvider, /* durationUs= */ 113)) - .isEqualTo(57); + .isEqualTo(56); } } diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/TestSpeedProvider.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/TestSpeedProvider.java index d505235c3a..9b7be297f1 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/TestSpeedProvider.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/TestSpeedProvider.java @@ -16,6 +16,7 @@ package androidx.media3.test.utils; import static androidx.media3.common.util.Assertions.checkArgument; +import static androidx.media3.common.util.Util.sampleCountToDurationUs; import androidx.media3.common.C; import androidx.media3.common.audio.AudioProcessor.AudioFormat; @@ -56,7 +57,7 @@ public final class TestSpeedProvider implements SpeedProvider { long[] startTimesUs = new long[frameCounts.length]; int totalFrameCount = 0; for (int i = 0; i < frameCounts.length; i++) { - startTimesUs[i] = totalFrameCount * C.MICROS_PER_SECOND / audioFormat.sampleRate; + startTimesUs[i] = sampleCountToDurationUs(totalFrameCount, audioFormat.sampleRate); totalFrameCount += frameCounts[i]; } return new TestSpeedProvider(startTimesUs, speeds);