diff --git a/libraries/common/src/main/java/androidx/media3/common/util/Util.java b/libraries/common/src/main/java/androidx/media3/common/util/Util.java index c4df22e2eb..ba48bf106e 100644 --- a/libraries/common/src/main/java/androidx/media3/common/util/Util.java +++ b/libraries/common/src/main/java/androidx/media3/common/util/Util.java @@ -1245,7 +1245,7 @@ public final class Util { long time = dateTime.getTimeInMillis(); if (timezoneShift != 0) { - time -= timezoneShift * 60000; + time -= timezoneShift * 60000L; } return time; diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/amr/AmrExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/amr/AmrExtractor.java index 551fc75739..3597a8ad50 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/amr/AmrExtractor.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/amr/AmrExtractor.java @@ -414,6 +414,7 @@ public final class AmrExtractor implements Extractor { * @return The stream bitrate. */ private static int getBitrateFromFrameSize(int frameSize, long durationUsPerFrame) { - return (int) ((frameSize * C.BITS_PER_BYTE * C.MICROS_PER_SECOND) / durationUsPerFrame); + return (int) + ((frameSize * ((long) C.BITS_PER_BYTE) * C.MICROS_PER_SECOND) / durationUsPerFrame); } } diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java index 184b6867e6..9bd0503ab0 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mkv/MatroskaExtractor.java @@ -1742,9 +1742,9 @@ public class MatroskaExtractor implements Extractor { checkArgument(timeUs != C.TIME_UNSET); byte[] timeCodeData; int hours = (int) (timeUs / (3600 * C.MICROS_PER_SECOND)); - timeUs -= (hours * 3600 * C.MICROS_PER_SECOND); + timeUs -= (hours * 3600L * C.MICROS_PER_SECOND); int minutes = (int) (timeUs / (60 * C.MICROS_PER_SECOND)); - timeUs -= (minutes * 60 * C.MICROS_PER_SECOND); + timeUs -= (minutes * 60L * C.MICROS_PER_SECOND); int seconds = (int) (timeUs / C.MICROS_PER_SECOND); timeUs -= (seconds * C.MICROS_PER_SECOND); int lastValue = (int) (timeUs / lastTimecodeValueScalingFactor); diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mp3/VbriSeeker.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mp3/VbriSeeker.java index 254628c72f..50a4889a10 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/mp3/VbriSeeker.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mp3/VbriSeeker.java @@ -89,7 +89,7 @@ import androidx.media3.extractor.SeekPoint; default: return null; } - position += segmentSize * scale; + position += segmentSize * ((long) scale); } if (inputLength != C.LENGTH_UNSET && inputLength != position) { Log.w(TAG, "VBRI data size mismatch: " + inputLength + ", " + position); diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/AdtsExtractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/AdtsExtractor.java index b62e4dd9d5..70cdda6330 100644 --- a/libraries/extractor/src/main/java/androidx/media3/extractor/ts/AdtsExtractor.java +++ b/libraries/extractor/src/main/java/androidx/media3/extractor/ts/AdtsExtractor.java @@ -365,6 +365,7 @@ public final class AdtsExtractor implements Extractor { * @return The stream bitrate. */ private static int getBitrateFromFrameSize(int frameSize, long durationUsPerFrame) { - return (int) ((frameSize * C.BITS_PER_BYTE * C.MICROS_PER_SECOND) / durationUsPerFrame); + return (int) + ((frameSize * ((long) C.BITS_PER_BYTE) * C.MICROS_PER_SECOND) / durationUsPerFrame); } } diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeAdaptiveDataSet.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeAdaptiveDataSet.java index fec372892f..1de5efc4e7 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeAdaptiveDataSet.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeAdaptiveDataSet.java @@ -144,7 +144,8 @@ public final class FakeAdaptiveDataSet extends FakeDataSet { for (int i = 0; i < trackGroup.length; i++) { String uri = getUri(i); Format format = trackGroup.getFormat(i); - double avgChunkLength = format.bitrate * chunkDurationUs / (8 * C.MICROS_PER_SECOND); + double avgChunkLength = + format.bitrate * chunkDurationUs / ((double) (8 * C.MICROS_PER_SECOND)); FakeData newData = this.newData(uri); for (int j = 0; j < fullChunks; j++) { newData.appendReadData((int) (avgChunkLength * bitrateFactors[j]));