diff --git a/libraries/cast/src/test/java/androidx/media3/cast/CastTimelineTrackerTest.java b/libraries/cast/src/test/java/androidx/media3/cast/CastTimelineTrackerTest.java index 42747462a8..a8a1930056 100644 --- a/libraries/cast/src/test/java/androidx/media3/cast/CastTimelineTrackerTest.java +++ b/libraries/cast/src/test/java/androidx/media3/cast/CastTimelineTrackerTest.java @@ -311,7 +311,7 @@ public class CastTimelineTrackerTest { } private static MediaInfo getMediaInfo(long durationMs) { - return new MediaInfo.Builder(/*contentId= */ "") + return new MediaInfo.Builder(/* contentId= */ "") .setStreamDuration(durationMs) .setContentType(MimeTypes.APPLICATION_MP4) .setStreamType(MediaInfo.STREAM_TYPE_NONE) diff --git a/libraries/common/src/main/java/androidx/media3/common/audio/AudioProcessingPipeline.java b/libraries/common/src/main/java/androidx/media3/common/audio/AudioProcessingPipeline.java new file mode 100644 index 0000000000..efcf63305e --- /dev/null +++ b/libraries/common/src/main/java/androidx/media3/common/audio/AudioProcessingPipeline.java @@ -0,0 +1,333 @@ +/* + * Copyright 2022 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package androidx.media3.common.audio; + +import static androidx.media3.common.audio.AudioProcessor.EMPTY_BUFFER; +import static androidx.media3.common.util.Assertions.checkState; + +import androidx.annotation.Nullable; +import androidx.media3.common.audio.AudioProcessor.AudioFormat; +import androidx.media3.common.util.UnstableApi; +import com.google.common.collect.ImmutableList; +import com.google.errorprone.annotations.CanIgnoreReturnValue; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +/** + * Handles passing buffers through multiple {@link AudioProcessor} instances. + * + *
Two instances of {@link AudioProcessingPipeline} are considered {@linkplain #equals(Object) + * equal} if they have the same underlying {@link AudioProcessor} references, in the same order. + * + *
To make use of this class, the caller must: + * + *
If underlying {@link AudioProcessor} instances have pending configuration changes, or the + * {@link AudioFormat} of the input is changing: + * + *
To apply the new configuration for use, the pipeline must be {@linkplain #flush() flushed}. + * Before applying the new configuration, it is safe to queue input and get output in the old + * input/output formats/configuration. Call {@link #queueEndOfStream()} when no more input will be + * supplied for processing in the old configuration. + * + * @param inputAudioFormat The format of audio that will be queued after the next call to {@link + * #flush()}. + * @return The configured output audio format. + * @throws AudioProcessor.UnhandledAudioFormatException If the specified format is not supported + * by the pipeline. + */ + @CanIgnoreReturnValue + public AudioFormat configure(AudioFormat inputAudioFormat) + throws AudioProcessor.UnhandledAudioFormatException { + if (inputAudioFormat.equals(AudioFormat.NOT_SET)) { + throw new AudioProcessor.UnhandledAudioFormatException(inputAudioFormat); + } + + AudioFormat intermediateAudioFormat = inputAudioFormat; + + for (int i = 0; i < audioProcessors.size(); i++) { + AudioProcessor audioProcessor = audioProcessors.get(i); + AudioFormat nextFormat = audioProcessor.configure(intermediateAudioFormat); + if (audioProcessor.isActive()) { + checkState(!nextFormat.equals(AudioFormat.NOT_SET)); + intermediateAudioFormat = nextFormat; + } + } + + return pendingOutputAudioFormat = intermediateAudioFormat; + } + + /** + * Clears any buffered data and pending output. If any underlying audio processors are {@linkplain + * AudioProcessor#isActive() active}, this also prepares them to receive a new stream of input in + * the last {@linkplain #configure(AudioFormat) configured} (pending) format. + * + *
{@link #configure(AudioFormat)} must have been called at least once since the last call to + * {@link #reset()} before calling this. + */ + public void flush() { + activeAudioProcessors.clear(); + outputAudioFormat = pendingOutputAudioFormat; + inputEnded = false; + + for (int i = 0; i < audioProcessors.size(); i++) { + AudioProcessor audioProcessor = audioProcessors.get(i); + audioProcessor.flush(); + if (audioProcessor.isActive()) { + activeAudioProcessors.add(audioProcessor); + } + } + + outputBuffers = new ByteBuffer[activeAudioProcessors.size()]; + for (int i = 0; i <= getFinalOutputBufferIndex(); i++) { + outputBuffers[i] = activeAudioProcessors.get(i).getOutput(); + } + } + + /** Returns the {@link AudioFormat} currently being output. */ + public AudioFormat getOutputAudioFormat() { + return outputAudioFormat; + } + + /** + * Whether the pipeline can be used for processing buffers. + * + *
For this to happen the pipeline must be {@linkplain #configure(AudioFormat) configured}, + * {@linkplain #flush() flushed} and have {@linkplain AudioProcessor#isActive() active} + * {@linkplain AudioProcessor underlying audio processors} that are ready to process buffers with + * the current configuration. + */ + public boolean isOperational() { + return !activeAudioProcessors.isEmpty(); + } + + /** + * Queues audio data between the position and limit of the {@code inputBuffer} for processing. + * After calling this method, processed output may be available via {@link #getOutput()}. + * + * @param inputBuffer The input buffer to process. It must be a direct {@link ByteBuffer} with + * native byte order. Its contents are treated as read-only. Its position will be advanced by + * the number of bytes consumed (which may be zero). The caller retains ownership of the + * provided buffer. + */ + public void queueInput(ByteBuffer inputBuffer) { + if (!isOperational() || inputEnded) { + return; + } + processData(inputBuffer); + } + + /** + * Returns a {@link ByteBuffer} containing processed output data between its position and limit. + * The buffer will be empty if no output is available. + * + *
Buffers returned from this method are retained by pipeline, and it is necessary to consume + * the data (or copy it into another buffer) to allow the pipeline to progress. + * + * @return A buffer containing processed output data between its position and limit. + */ + public ByteBuffer getOutput() { + if (!isOperational()) { + return EMPTY_BUFFER; + } + processData(EMPTY_BUFFER); + return outputBuffers[getFinalOutputBufferIndex()]; + } + + /** + * Queues an end of stream signal. After this method has been called, {@link + * #queueInput(ByteBuffer)} should not be called until after the next call to {@link #flush()}. + * Calling {@link #getOutput()} will return any remaining output data. Multiple calls may be + * required to read all of the remaining output data. {@link #isEnded()} will return {@code true} + * once all remaining output data has been read. + */ + public void queueEndOfStream() { + if (!isOperational() || inputEnded) { + return; + } + inputEnded = true; + activeAudioProcessors.get(0).queueEndOfStream(); + } + + /** + * Returns whether the pipeline has ended. + * + *
The pipeline is considered ended when: + * + *
Two instances of {@link AudioProcessingPipeline} are considered equal if they have the same + * underlying {@link AudioProcessor} references in the same order. + */ + @Override + public boolean equals(@Nullable Object o) { + if (this == o) { + return true; + } + if (!(o instanceof AudioProcessingPipeline)) { + return false; + } + AudioProcessingPipeline that = (AudioProcessingPipeline) o; + if (this.audioProcessors.size() != that.audioProcessors.size()) { + return false; + } + for (int i = 0; i < this.audioProcessors.size(); i++) { + if (this.audioProcessors.get(i) != that.audioProcessors.get(i)) { + return false; + } + } + + return true; + } + + @Override + public int hashCode() { + return audioProcessors.hashCode(); + } + + private void processData(ByteBuffer inputBuffer) { + boolean progressMade = true; + while (progressMade) { + progressMade = false; + for (int index = 0; index <= getFinalOutputBufferIndex(); index++) { + if (outputBuffers[index].hasRemaining()) { + // Processor at this index has output that has not been consumed. Do not queue input. + continue; + } + + AudioProcessor audioProcessor = activeAudioProcessors.get(index); + + if (audioProcessor.isEnded()) { + if (!outputBuffers[index].hasRemaining() && index < getFinalOutputBufferIndex()) { + activeAudioProcessors.get(index + 1).queueEndOfStream(); + } + continue; + } + + ByteBuffer input = + index > 0 + ? outputBuffers[index - 1] + : inputBuffer.hasRemaining() ? inputBuffer : EMPTY_BUFFER; + long inputBytes = input.remaining(); + audioProcessor.queueInput(input); + outputBuffers[index] = audioProcessor.getOutput(); + + progressMade |= (inputBytes - input.remaining()) > 0 || outputBuffers[index].hasRemaining(); + } + } + } + + private int getFinalOutputBufferIndex() { + return outputBuffers.length - 1; + } +} diff --git a/libraries/common/src/main/java/androidx/media3/common/audio/AudioProcessor.java b/libraries/common/src/main/java/androidx/media3/common/audio/AudioProcessor.java index 506e2d4266..f44e3ce471 100644 --- a/libraries/common/src/main/java/androidx/media3/common/audio/AudioProcessor.java +++ b/libraries/common/src/main/java/androidx/media3/common/audio/AudioProcessor.java @@ -37,6 +37,13 @@ public interface AudioProcessor { /** PCM audio format that may be handled by an audio processor. */ final class AudioFormat { + /** + * An {@link AudioFormat} instance to represent an unset {@link AudioFormat}. This should not be + * returned by {@link #configure(AudioFormat)} if the processor {@link #isActive()}. + * + *
Typically used to represent an inactive {@link AudioProcessor} {@linkplain
+ * #configure(AudioFormat) output format}.
+ */
public static final AudioFormat NOT_SET =
new AudioFormat(
/* sampleRate= */ Format.NO_VALUE,
diff --git a/libraries/common/src/main/java/androidx/media3/common/util/GlProgram.java b/libraries/common/src/main/java/androidx/media3/common/util/GlProgram.java
index 579ce6fe5b..a853f77453 100644
--- a/libraries/common/src/main/java/androidx/media3/common/util/GlProgram.java
+++ b/libraries/common/src/main/java/androidx/media3/common/util/GlProgram.java
@@ -328,7 +328,7 @@ public final class GlProgram {
/* unusedLength */ new int[1],
/* lengthOffset= */ 0,
/* unusedSize */ new int[1],
- /*sizeOffset= */ 0,
+ /* sizeOffset= */ 0,
type,
/* typeOffset= */ 0,
nameBytes,
diff --git a/libraries/common/src/test/java/androidx/media3/common/AdPlaybackStateTest.java b/libraries/common/src/test/java/androidx/media3/common/AdPlaybackStateTest.java
index d398cd5b0f..9110e6ec57 100644
--- a/libraries/common/src/test/java/androidx/media3/common/AdPlaybackStateTest.java
+++ b/libraries/common/src/test/java/androidx/media3/common/AdPlaybackStateTest.java
@@ -80,7 +80,7 @@ public class AdPlaybackStateTest {
@Test
public void withAdGroupTimeUs_updatesAdGroupTimeUs() {
AdPlaybackState state =
- new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs...= */ 0, 5_000, 10_000)
+ new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs= */ 0, 5_000, 10_000)
.withRemovedAdGroupCount(1);
state =
@@ -96,7 +96,7 @@ public class AdPlaybackStateTest {
@Test
public void withNewAdGroup_addsGroupAndKeepsExistingGroups() {
AdPlaybackState state =
- new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs...= */ 0, 3_000, 6_000)
+ new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs= */ 0, 3_000, 6_000)
.withRemovedAdGroupCount(1)
.withAdCount(/* adGroupIndex= */ 1, /* adCount= */ 2)
.withAdCount(/* adGroupIndex= */ 2, /* adCount= */ 1)
@@ -122,12 +122,12 @@ public class AdPlaybackStateTest {
@Test
public void withAdDurationsUs_updatesAdDurations() {
AdPlaybackState state =
- new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs...= */ 0, 10_000)
+ new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs= */ 0, 10_000)
.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 2)
.withAdCount(/* adGroupIndex= */ 1, /* adCount= */ 2)
.withAdDurationsUs(new long[][] {new long[] {5_000, 6_000}, new long[] {7_000, 8_000}});
- state = state.withAdDurationsUs(/* adGroupIndex= */ 1, /* adDurationsUs...= */ 1_000, 2_000);
+ state = state.withAdDurationsUs(/* adGroupIndex= */ 1, /* adDurationsUs= */ 1_000, 2_000);
assertThat(state.getAdGroup(0).durationsUs[0]).isEqualTo(5_000);
assertThat(state.getAdGroup(0).durationsUs[1]).isEqualTo(6_000);
@@ -314,7 +314,7 @@ public class AdPlaybackStateTest {
@Test
public void withOriginalAdCount() {
AdPlaybackState state =
- new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs...= */ 5_000_000)
+ new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs= */ 5_000_000)
.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 2);
state = state.withOriginalAdCount(/* adGroupIndex= */ 0, /* originalAdCount= */ 3);
@@ -326,7 +326,7 @@ public class AdPlaybackStateTest {
@Test
public void withOriginalAdCount_unsetValue_defaultsToIndexUnset() {
AdPlaybackState state =
- new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs...= */ 5_000_000)
+ new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs= */ 5_000_000)
.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 2);
assertThat(state.getAdGroup(0).count).isEqualTo(2);
@@ -335,7 +335,7 @@ public class AdPlaybackStateTest {
@Test
public void withLastAdGroupRemoved() {
- AdPlaybackState state = new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs...= */ 5_000_000);
+ AdPlaybackState state = new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs= */ 5_000_000);
state =
state
.withAdCount(/* adGroupIndex= */ 0, 3)
@@ -362,7 +362,7 @@ public class AdPlaybackStateTest {
state = state.withAdCount(/* adGroupIndex= */ 1, /* adCount= */ 5);
state =
state.withAdDurationsUs(
- /* adGroupIndex= */ 1, /* adDurationsUs...= */ 1_000L, 2_000L, 3_000L, 4_000L, 5_000L);
+ /* adGroupIndex= */ 1, /* adDurationsUs= */ 1_000L, 2_000L, 3_000L, 4_000L, 5_000L);
state = state.withAvailableAdUri(/* adGroupIndex= */ 1, /* adIndexInAdGroup= */ 1, TEST_URI);
state = state.withAvailableAdUri(/* adGroupIndex= */ 1, /* adIndexInAdGroup= */ 2, TEST_URI);
state = state.withAvailableAdUri(/* adGroupIndex= */ 1, /* adIndexInAdGroup= */ 3, TEST_URI);
@@ -418,8 +418,8 @@ public class AdPlaybackStateTest {
.withContentResumeOffsetUs(/* adGroupIndex= */ 2, /* contentResumeOffsetUs= */ 3333)
.withIsServerSideInserted(/* adGroupIndex= */ 1, /* isServerSideInserted= */ true)
.withIsServerSideInserted(/* adGroupIndex= */ 2, /* isServerSideInserted= */ true)
- .withAdDurationsUs(/* adGroupIndex= */ 1, /* adDurationsUs...= */ 12)
- .withAdDurationsUs(/* adGroupIndex= */ 2, /* adDurationsUs...= */ 34, 56)
+ .withAdDurationsUs(/* adGroupIndex= */ 1, /* adDurationsUs= */ 12)
+ .withAdDurationsUs(/* adGroupIndex= */ 2, /* adDurationsUs= */ 34, 56)
.withAdResumePositionUs(123)
.withContentDurationUs(456);
@@ -456,7 +456,7 @@ public class AdPlaybackStateTest {
AdPlaybackState state =
new AdPlaybackState(
/* adsId= */ new Object(),
- /* adGroupTimesUs...= */ 0,
+ /* adGroupTimesUs= */ 0,
1000,
2000,
3000,
@@ -539,7 +539,7 @@ public class AdPlaybackStateTest {
@Test
public void getAdGroupIndexAfterPositionUs_withServerSideInsertedAds_returnsNextAdGroup() {
AdPlaybackState state =
- new AdPlaybackState(/* adsId= */ new Object(), /* adGroupTimesUs...= */ 0, 1000, 2000)
+ new AdPlaybackState(/* adsId= */ new Object(), /* adGroupTimesUs= */ 0, 1000, 2000)
.withIsServerSideInserted(/* adGroupIndex= */ 0, /* isServerSideInserted= */ true)
.withIsServerSideInserted(/* adGroupIndex= */ 1, /* isServerSideInserted= */ true)
.withIsServerSideInserted(/* adGroupIndex= */ 2, /* isServerSideInserted= */ true)
diff --git a/libraries/common/src/test/java/androidx/media3/common/FlagSetTest.java b/libraries/common/src/test/java/androidx/media3/common/FlagSetTest.java
index b01ab87df3..5a07be222b 100644
--- a/libraries/common/src/test/java/androidx/media3/common/FlagSetTest.java
+++ b/libraries/common/src/test/java/androidx/media3/common/FlagSetTest.java
@@ -80,7 +80,7 @@ public final class FlagSetTest {
public void containsAny_withoutAdd_returnsFalseForAllValues() {
FlagSet flags = new FlagSet.Builder().build();
- assertThat(flags.containsAny(/* flags...= */ -1234, 0, 2, Integer.MAX_VALUE)).isFalse();
+ assertThat(flags.containsAny(/* flags= */ -1234, 0, 2, Integer.MAX_VALUE)).isFalse();
}
@Test
@@ -95,9 +95,9 @@ public final class FlagSetTest {
assertThat(
flags.containsAny(
- /* flags...= */ -1235, -1234, 0, 1, 2, Integer.MAX_VALUE - 1, Integer.MAX_VALUE))
+ /* flags= */ -1235, -1234, 0, 1, 2, Integer.MAX_VALUE - 1, Integer.MAX_VALUE))
.isTrue();
- assertThat(flags.containsAny(/* flags...= */ -1235, 1, Integer.MAX_VALUE - 1)).isFalse();
+ assertThat(flags.containsAny(/* flags= */ -1235, 1, Integer.MAX_VALUE - 1)).isFalse();
}
@Test
diff --git a/libraries/common/src/test/java/androidx/media3/common/TrackSelectionParametersTest.java b/libraries/common/src/test/java/androidx/media3/common/TrackSelectionParametersTest.java
index c26b72a66a..c3cbe2019d 100644
--- a/libraries/common/src/test/java/androidx/media3/common/TrackSelectionParametersTest.java
+++ b/libraries/common/src/test/java/androidx/media3/common/TrackSelectionParametersTest.java
@@ -181,9 +181,9 @@ public final class TrackSelectionParametersTest {
TrackSelectionParameters parameters =
new TrackSelectionParameters.Builder(getApplicationContext())
.setViewportSize(
- /*viewportWidth=*/ 1,
- /*viewportHeight=*/ 2,
- /*viewportOrientationMayChange=*/ false)
+ /* viewportWidth= */ 1,
+ /* viewportHeight= */ 2,
+ /* viewportOrientationMayChange= */ false)
.clearViewportSizeConstraints()
.build();
diff --git a/libraries/common/src/test/java/androidx/media3/common/audio/AudioProcessingPipelineTest.java b/libraries/common/src/test/java/androidx/media3/common/audio/AudioProcessingPipelineTest.java
new file mode 100644
index 0000000000..4b5485f3c1
--- /dev/null
+++ b/libraries/common/src/test/java/androidx/media3/common/audio/AudioProcessingPipelineTest.java
@@ -0,0 +1,368 @@
+/*
+ * Copyright 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package androidx.media3.common.audio;
+
+import static com.google.common.truth.Truth.assertThat;
+import static java.lang.Math.min;
+
+import androidx.annotation.Nullable;
+import androidx.media3.common.C;
+import androidx.media3.common.audio.AudioProcessor.AudioFormat;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import com.google.common.collect.ImmutableList;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.util.ArrayList;
+import java.util.List;
+import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+// TODO(b/198772621): Add tests for PlaybackParameter changes once Sonic or
+// DefaultAudioProcessorChain is in common.
+/** Unit tests for {@link AudioProcessingPipeline}. */
+@RunWith(AndroidJUnit4.class)
+public final class AudioProcessingPipelineTest {
+ private static final AudioFormat AUDIO_FORMAT =
+ new AudioFormat(/* sampleRate= */ 44100, /* channelCount= */ 2, C.ENCODING_PCM_16BIT);
+
+ @Test
+ public void noAudioProcessors_isNotOperational() throws Exception {
+ AudioProcessingPipeline audioProcessingPipeline =
+ new AudioProcessingPipeline(ImmutableList.of());
+
+ audioProcessingPipeline.configure(AUDIO_FORMAT);
+ audioProcessingPipeline.flush();
+
+ assertThat(audioProcessingPipeline.isOperational()).isFalse();
+ }
+
+ @Test
+ public void sameProcessors_pipelinesAreOnlyEqualIfSameOrderAndReference() throws Exception {
+ AudioProcessor audioProcessorOne = new FakeAudioProcessor(/* active= */ true);
+ AudioProcessor audioProcessorTwo = new FakeAudioProcessor(/* active= */ false);
+ AudioProcessor audioProcessorThree = new FakeAudioProcessor(/* active= */ true);
+
+ AudioProcessingPipeline pipelineOne =
+ new AudioProcessingPipeline(
+ ImmutableList.of(audioProcessorOne, audioProcessorTwo, audioProcessorThree));
+ // The internal state of the pipeline does not affect equality.
+ pipelineOne.configure(AUDIO_FORMAT);
+ pipelineOne.flush();
+
+ AudioProcessingPipeline pipelineTwo =
+ new AudioProcessingPipeline(
+ ImmutableList.of(audioProcessorOne, audioProcessorTwo, audioProcessorThree));
+
+ assertThat(pipelineOne).isEqualTo(pipelineTwo);
+
+ AudioProcessingPipeline pipelineThree =
+ new AudioProcessingPipeline(
+ ImmutableList.of(audioProcessorThree, audioProcessorTwo, audioProcessorOne));
+ assertThat(pipelineTwo).isNotEqualTo(pipelineThree);
+ }
+
+ @Test
+ public void configuringPipeline_givesFormat() throws Exception {
+ FakeAudioProcessor fakeSampleRateChangingAudioProcessor =
+ new FakeAudioProcessor(/* active= */ true) {
+ @Override
+ public AudioFormat configure(AudioFormat inputAudioFormat)
+ throws UnhandledAudioFormatException {
+ AudioFormat outputFormat =
+ new AudioFormat(
+ inputAudioFormat.sampleRate * 2,
+ inputAudioFormat.channelCount,
+ inputAudioFormat.encoding);
+ return super.configure(outputFormat);
+ }
+ };
+
+ AudioProcessingPipeline audioProcessingPipeline =
+ new AudioProcessingPipeline(ImmutableList.of(fakeSampleRateChangingAudioProcessor));
+ AudioFormat outputFormat = audioProcessingPipeline.configure(AUDIO_FORMAT);
+
+ assertThat(outputFormat.sampleRate).isEqualTo(AUDIO_FORMAT.sampleRate * 2);
+ }
+
+ @Test
+ public void configuringAndFlushingPipeline_isOperational() throws Exception {
+ FakeAudioProcessor fakeSampleRateChangingAudioProcessor =
+ new FakeAudioProcessor(/* active= */ true) {
+ @Override
+ public AudioFormat configure(AudioFormat inputAudioFormat)
+ throws UnhandledAudioFormatException {
+ AudioFormat outputFormat =
+ new AudioFormat(
+ inputAudioFormat.sampleRate * 2,
+ inputAudioFormat.channelCount,
+ inputAudioFormat.encoding);
+ return super.configure(outputFormat);
+ }
+ };
+
+ AudioProcessingPipeline audioProcessingPipeline =
+ new AudioProcessingPipeline(ImmutableList.of(fakeSampleRateChangingAudioProcessor));
+
+ assertThat(audioProcessingPipeline.isOperational()).isFalse();
+ audioProcessingPipeline.configure(AUDIO_FORMAT);
+ // Configuring the pipeline is not enough for it to be operational.
+ assertThat(audioProcessingPipeline.isOperational()).isFalse();
+ audioProcessingPipeline.flush();
+ assertThat(audioProcessingPipeline.isOperational()).isTrue();
+ }
+
+ @Test
+ public void reconfigure_doesNotChangeOperational_untilFlush() throws Exception {
+ FakeAudioProcessor audioProcessor = new FakeAudioProcessor(/* active= */ true);
+ AudioProcessingPipeline audioProcessingPipeline =
+ new AudioProcessingPipeline(ImmutableList.of(audioProcessor));
+ audioProcessingPipeline.configure(AUDIO_FORMAT);
+ audioProcessingPipeline.flush();
+ assertThat(audioProcessingPipeline.isOperational()).isTrue();
+
+ audioProcessor.setActive(false);
+ audioProcessingPipeline.configure(AUDIO_FORMAT);
+ assertThat(audioProcessingPipeline.isOperational()).isTrue();
+ audioProcessingPipeline.flush();
+ assertThat(audioProcessingPipeline.isOperational()).isFalse();
+ }
+
+ @Test
+ public void inactiveProcessor_isIgnoredInConfiguration() throws Exception {
+ FakeAudioProcessor fakeSampleRateChangingAudioProcessor =
+ new FakeAudioProcessor(/* active= */ false) {
+ @Override
+ public AudioFormat configure(AudioFormat inputAudioFormat)
+ throws UnhandledAudioFormatException {
+ AudioFormat outputFormat =
+ new AudioFormat(
+ inputAudioFormat.sampleRate * 2,
+ inputAudioFormat.channelCount,
+ inputAudioFormat.encoding);
+ return super.configure(outputFormat);
+ }
+ };
+
+ AudioProcessingPipeline audioProcessingPipeline =
+ new AudioProcessingPipeline(ImmutableList.of(fakeSampleRateChangingAudioProcessor));
+ AudioFormat outputFormat = audioProcessingPipeline.configure(AUDIO_FORMAT);
+ audioProcessingPipeline.flush();
+ assertThat(outputFormat).isEqualTo(AUDIO_FORMAT);
+ assertThat(audioProcessingPipeline.isOperational()).isFalse();
+ }
+
+ @Test
+ public void queueInput_producesOutputBuffer() throws Exception {
+ FakeAudioProcessor audioProcessor = new FakeAudioProcessor(/* active= */ true);
+ AudioProcessingPipeline audioProcessingPipeline =
+ new AudioProcessingPipeline(ImmutableList.of(audioProcessor));
+ audioProcessingPipeline.configure(AUDIO_FORMAT);
+ audioProcessingPipeline.flush();
+
+ ByteBuffer inputBuffer = createOneSecondDefaultSilenceBuffer(AUDIO_FORMAT);
+ long inputBytes = inputBuffer.remaining();
+ audioProcessingPipeline.queueInput(inputBuffer);
+ inputBytes -= inputBuffer.remaining();
+ ByteBuffer outputBuffer = audioProcessingPipeline.getOutput();
+ assertThat(inputBytes).isEqualTo(outputBuffer.remaining());
+ assertThat(inputBuffer).isNotSameInstanceAs(outputBuffer);
+ }
+
+ @Test
+ public void isEnded_needsBufferConsuming() throws Exception {
+ FakeAudioProcessor audioProcessor = new FakeAudioProcessor(/* active= */ true);
+ AudioProcessingPipeline audioProcessingPipeline =
+ new AudioProcessingPipeline(ImmutableList.of(audioProcessor));
+ audioProcessingPipeline.configure(AUDIO_FORMAT);
+ audioProcessingPipeline.flush();
+
+ ByteBuffer inputBuffer = createOneSecondDefaultSilenceBuffer(AUDIO_FORMAT);
+ audioProcessingPipeline.queueInput(inputBuffer);
+ audioProcessingPipeline.queueEndOfStream();
+ assertThat(audioProcessingPipeline.isEnded()).isFalse();
+ ByteBuffer outputBuffer = audioProcessingPipeline.getOutput();
+ assertThat(audioProcessingPipeline.isEnded()).isFalse();
+
+ // "consume" the buffer
+ outputBuffer.position(outputBuffer.limit());
+ assertThat(audioProcessingPipeline.isEnded()).isTrue();
+ }
+
+ @Test
+ public void pipelineWithAdvancedAudioProcessors_drainsAndFeedsCorrectly_duplicatesBytes()
+ throws Exception {
+ AudioProcessingPipeline audioProcessingPipeline =
+ new AudioProcessingPipeline(
+ ImmutableList.of(
+ new FakeAudioProcessor(
+ /* active= */ true, /* maxInputBytesAtOnce= */ 8, /* duplicateBytes= */ true),
+ new FakeAudioProcessor(
+ /* active= */ true, /* maxInputBytesAtOnce= */ 0, /* duplicateBytes= */ false),
+ new FakeAudioProcessor(
+ /* active= */ true, /* maxInputBytesAtOnce= */ 12, /* duplicateBytes= */ true),
+ new FakeAudioProcessor(
+ /* active= */ true,
+ /* maxInputBytesAtOnce= */ 160,
+ /* duplicateBytes= */ false)));
+ audioProcessingPipeline.configure(AUDIO_FORMAT);
+ audioProcessingPipeline.flush();
+
+ ByteBuffer inputBuffer = createOneSecondDefaultSilenceBuffer(AUDIO_FORMAT);
+ inputBuffer.put(0, (byte) 24);
+ inputBuffer.put(1, (byte) 36);
+ inputBuffer.put(2, (byte) 6);
+ int bytesInput = inputBuffer.remaining();
+ List If the {@link AudioProcessingPipeline} is not {@linkplain
+ * AudioProcessingPipeline#isOperational() operational}, input buffers are passed straight to
+ * {@link #writeBuffer(ByteBuffer, long)}.
+ */
private void processBuffers(long avSyncPresentationTimeUs) throws WriteException {
- int count = activeAudioProcessors.length;
- int index = count;
- while (index >= 0) {
- ByteBuffer input =
- index > 0
- ? outputBuffers[index - 1]
- : (inputBuffer != null ? inputBuffer : AudioProcessor.EMPTY_BUFFER);
- if (index == count) {
- writeBuffer(input, avSyncPresentationTimeUs);
- } else {
- AudioProcessor audioProcessor = activeAudioProcessors[index];
- if (index > drainingAudioProcessorIndex) {
- audioProcessor.queueInput(input);
- }
- ByteBuffer output = audioProcessor.getOutput();
- outputBuffers[index] = output;
- if (output.hasRemaining()) {
- // Handle the output as input to the next audio processor or the AudioTrack.
- index++;
- continue;
+ if (!audioProcessingPipeline.isOperational() && inputBuffer != null) {
+ writeBuffer(inputBuffer, avSyncPresentationTimeUs);
+ return;
+ }
+
+ while (!audioProcessingPipeline.isEnded()) {
+ ByteBuffer bufferToWrite;
+ while ((bufferToWrite = audioProcessingPipeline.getOutput()).hasRemaining()) {
+ writeBuffer(bufferToWrite, avSyncPresentationTimeUs);
+ if (bufferToWrite.hasRemaining()) {
+ // writeBuffer method is providing back pressure.
+ return;
}
}
-
- if (input.hasRemaining()) {
- // The input wasn't consumed and no output was produced, so give up for now.
+ if (inputBuffer == null || !inputBuffer.hasRemaining()) {
return;
}
-
- // Get more input from upstream.
- index--;
+ audioProcessingPipeline.queueInput(inputBuffer);
}
}
+ /**
+ * Queues end of stream and then fully drains all buffers.
+ *
+ * @return Whether the buffers have been fully drained.
+ */
+ private boolean drainToEndOfStream() throws WriteException {
+ if (!audioProcessingPipeline.isOperational()) {
+ if (outputBuffer == null) {
+ return true;
+ }
+ writeBuffer(outputBuffer, C.TIME_UNSET);
+ return outputBuffer == null;
+ }
+
+ audioProcessingPipeline.queueEndOfStream();
+ processBuffers(C.TIME_UNSET);
+ return audioProcessingPipeline.isEnded()
+ && (outputBuffer == null || !outputBuffer.hasRemaining());
+ }
+
@SuppressWarnings("ReferenceEquality")
private void writeBuffer(ByteBuffer buffer, long avSyncPresentationTimeUs) throws WriteException {
if (!buffer.hasRemaining()) {
@@ -1177,36 +1171,6 @@ public final class DefaultAudioSink implements AudioSink {
|| status == ERROR_NATIVE_DEAD_OBJECT;
}
- private boolean drainToEndOfStream() throws WriteException {
- boolean audioProcessorNeedsEndOfStream = false;
- if (drainingAudioProcessorIndex == C.INDEX_UNSET) {
- drainingAudioProcessorIndex = 0;
- audioProcessorNeedsEndOfStream = true;
- }
- while (drainingAudioProcessorIndex < activeAudioProcessors.length) {
- AudioProcessor audioProcessor = activeAudioProcessors[drainingAudioProcessorIndex];
- if (audioProcessorNeedsEndOfStream) {
- audioProcessor.queueEndOfStream();
- }
- processBuffers(C.TIME_UNSET);
- if (!audioProcessor.isEnded()) {
- return false;
- }
- audioProcessorNeedsEndOfStream = true;
- drainingAudioProcessorIndex++;
- }
-
- // Finish writing any remaining output to the track.
- if (outputBuffer != null) {
- writeBuffer(outputBuffer, C.TIME_UNSET);
- if (outputBuffer != null) {
- return false;
- }
- }
- drainingAudioProcessorIndex = C.INDEX_UNSET;
- return true;
- }
-
@Override
public boolean isEnded() {
return !isAudioTrackInitialized() || (handledEndOfStream && !hasPendingData());
@@ -1422,6 +1386,9 @@ public final class DefaultAudioSink implements AudioSink {
for (AudioProcessor audioProcessor : toFloatPcmAvailableAudioProcessors) {
audioProcessor.reset();
}
+ if (audioProcessingPipeline != null) {
+ audioProcessingPipeline.reset();
+ }
playing = false;
offloadDisabledUntilNextConfiguration = false;
}
@@ -1449,11 +1416,10 @@ public final class DefaultAudioSink implements AudioSink {
outputBuffer = null;
stoppedAudioTrack = false;
handledEndOfStream = false;
- drainingAudioProcessorIndex = C.INDEX_UNSET;
avSyncHeader = null;
bytesUntilNextAvSync = 0;
trimmingAudioProcessor.resetTrimmedFrameCount();
- flushAudioProcessors();
+ setupAudioProcessors();
}
@RequiresApi(23)
@@ -1991,7 +1957,7 @@ public final class DefaultAudioSink implements AudioSink {
public final int outputChannelConfig;
public final @C.Encoding int outputEncoding;
public final int bufferSize;
- public final AudioProcessor[] availableAudioProcessors;
+ public final AudioProcessingPipeline audioProcessingPipeline;
public Configuration(
Format inputFormat,
@@ -2002,7 +1968,7 @@ public final class DefaultAudioSink implements AudioSink {
int outputChannelConfig,
int outputEncoding,
int bufferSize,
- AudioProcessor[] availableAudioProcessors) {
+ AudioProcessingPipeline audioProcessingPipeline) {
this.inputFormat = inputFormat;
this.inputPcmFrameSize = inputPcmFrameSize;
this.outputMode = outputMode;
@@ -2011,7 +1977,7 @@ public final class DefaultAudioSink implements AudioSink {
this.outputChannelConfig = outputChannelConfig;
this.outputEncoding = outputEncoding;
this.bufferSize = bufferSize;
- this.availableAudioProcessors = availableAudioProcessors;
+ this.audioProcessingPipeline = audioProcessingPipeline;
}
public Configuration copyWithBufferSize(int bufferSize) {
@@ -2024,7 +1990,7 @@ public final class DefaultAudioSink implements AudioSink {
outputChannelConfig,
outputEncoding,
bufferSize,
- availableAudioProcessors);
+ audioProcessingPipeline);
}
/** Returns if the configurations are sufficiently compatible to reuse the audio track. */
diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/MaskingMediaSource.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/MaskingMediaSource.java
index ae1266c96c..3b23dfff60 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/MaskingMediaSource.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/MaskingMediaSource.java
@@ -376,7 +376,7 @@ public final class MaskingMediaSource extends WrappingMediaSource {
/* id= */ setIds ? 0 : null,
/* uid= */ setIds ? MaskingTimeline.MASKING_EXTERNAL_PERIOD_UID : null,
/* windowIndex= */ 0,
- /* durationUs = */ C.TIME_UNSET,
+ /* durationUs= */ C.TIME_UNSET,
/* positionInWindowUs= */ 0,
/* adPlaybackState= */ AdPlaybackState.NONE,
/* isPlaceholder= */ true);
diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/ExoplayerCuesDecoder.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/ExoplayerCuesDecoder.java
index 504b6f7843..deaccce62d 100644
--- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/ExoplayerCuesDecoder.java
+++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/ExoplayerCuesDecoder.java
@@ -120,7 +120,7 @@ public final class ExoplayerCuesDecoder implements SubtitleDecoder {
SingleEventSubtitle subtitle =
new SingleEventSubtitle(
inputBuffer.timeUs, cueDecoder.decode(checkNotNull(inputBuffer.data).array()));
- outputBuffer.setContent(inputBuffer.timeUs, subtitle, /* subsampleOffsetUs=*/ 0);
+ outputBuffer.setContent(inputBuffer.timeUs, subtitle, /* subsampleOffsetUs= */ 0);
}
inputBuffer.clear();
inputBufferState = INPUT_BUFFER_AVAILABLE;
diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerTest.java
index 31a0726ef7..b01c457341 100644
--- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerTest.java
+++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerTest.java
@@ -756,7 +756,7 @@ public final class ExoPlayerTest {
public void adGroupWithLoadError_noFurtherAdGroup_isSkipped() throws Exception {
AdPlaybackState initialAdPlaybackState =
FakeTimeline.createAdPlaybackState(
- /* adsPerAdGroup= */ 1, /* adGroupTimesUs...= */
+ /* adsPerAdGroup= */ 1, /* adGroupTimesUs= */
TimelineWindowDefinition.DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US
+ 5 * C.MICROS_PER_SECOND);
Timeline fakeTimeline =
@@ -809,7 +809,7 @@ public final class ExoPlayerTest {
public void adGroupWithLoadError_withFurtherAdGroup_isSkipped() throws Exception {
AdPlaybackState initialAdPlaybackState =
FakeTimeline.createAdPlaybackState(
- /* adsPerAdGroup= */ 1, /* adGroupTimesUs...= */
+ /* adsPerAdGroup= */ 1, /* adGroupTimesUs= */
TimelineWindowDefinition.DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US
+ 5 * C.MICROS_PER_SECOND,
TimelineWindowDefinition.DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US
@@ -2637,7 +2637,7 @@ public final class ExoPlayerTest {
new ActionSchedule.Builder(TAG)
.pause()
.waitForTimelineChanged(timeline, Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE)
- .sendMessage(target, /* mediaItemIndex = */ 2, /* positionMs= */ 50)
+ .sendMessage(target, /* mediaItemIndex= */ 2, /* positionMs= */ 50)
.play()
.build();
new ExoPlayerTestRunner.Builder(context)
@@ -2659,7 +2659,7 @@ public final class ExoPlayerTest {
.pause()
.waitForTimelineChanged(
timeline, /* expectedReason= */ Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE)
- .sendMessage(target, /* mediaItemIndex = */ 2, /* positionMs= */ 50)
+ .sendMessage(target, /* mediaItemIndex= */ 2, /* positionMs= */ 50)
.play()
.build();
new ExoPlayerTestRunner.Builder(context)
@@ -2690,7 +2690,7 @@ public final class ExoPlayerTest {
.pause()
.waitForTimelineChanged(
timeline, /* expectedReason= */ Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE)
- .sendMessage(target, /* mediaItemIndex = */ 1, /* positionMs= */ 50)
+ .sendMessage(target, /* mediaItemIndex= */ 1, /* positionMs= */ 50)
.executeRunnable(() -> mediaSource.setNewSourceInfo(secondTimeline))
.waitForTimelineChanged(
secondTimeline, /* expectedReason= */ Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE)
@@ -2724,9 +2724,9 @@ public final class ExoPlayerTest {
new ActionSchedule.Builder(TAG)
.pause()
.waitForPlaybackState(Player.STATE_READY)
- .sendMessage(target1, /* mediaItemIndex = */ 0, /* positionMs= */ 50)
- .sendMessage(target2, /* mediaItemIndex = */ 1, /* positionMs= */ 50)
- .sendMessage(target3, /* mediaItemIndex = */ 2, /* positionMs= */ 50)
+ .sendMessage(target1, /* mediaItemIndex= */ 0, /* positionMs= */ 50)
+ .sendMessage(target2, /* mediaItemIndex= */ 1, /* positionMs= */ 50)
+ .sendMessage(target3, /* mediaItemIndex= */ 2, /* positionMs= */ 50)
.setShuffleModeEnabled(true)
.seek(/* mediaItemIndex= */ 2, /* positionMs= */ 0)
.play()
@@ -2938,8 +2938,7 @@ public final class ExoPlayerTest {
AdPlaybackState adPlaybackStateWithMidroll =
FakeTimeline.createAdPlaybackState(
/* adsPerAdGroup= */ 1,
- /* adGroupTimesUs...= */ TimelineWindowDefinition
- .DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US
+ /* adGroupTimesUs= */ TimelineWindowDefinition.DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US
+ 5 * C.MICROS_PER_SECOND);
Timeline timeline2 =
new FakeTimeline(
@@ -2990,8 +2989,7 @@ public final class ExoPlayerTest {
AdPlaybackState adPlaybackState =
FakeTimeline.createAdPlaybackState(
/* adsPerAdGroup= */ 1,
- /* adGroupTimesUs...= */ TimelineWindowDefinition
- .DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US
+ /* adGroupTimesUs= */ TimelineWindowDefinition.DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US
+ Util.msToUs(adGroupWindowTimeMs));
Timeline timeline =
new FakeTimeline(
@@ -3624,7 +3622,7 @@ public final class ExoPlayerTest {
@Test
public void contentWithInitialSeekPositionAfterPrerollAdStartsAtSeekPosition() throws Exception {
AdPlaybackState adPlaybackState =
- FakeTimeline.createAdPlaybackState(/* adsPerAdGroup= */ 3, /* adGroupTimesUs...= */ 0);
+ FakeTimeline.createAdPlaybackState(/* adsPerAdGroup= */ 3, /* adGroupTimesUs= */ 0);
Timeline fakeTimeline =
new FakeTimeline(
new TimelineWindowDefinition(
@@ -3673,7 +3671,7 @@ public final class ExoPlayerTest {
@Test
public void contentWithoutInitialSeekStartsAtDefaultPositionAfterPrerollAd() throws Exception {
AdPlaybackState adPlaybackState =
- FakeTimeline.createAdPlaybackState(/* adsPerAdGroup= */ 3, /* adGroupTimesUs...= */ 0);
+ FakeTimeline.createAdPlaybackState(/* adsPerAdGroup= */ 3, /* adGroupTimesUs= */ 0);
Timeline fakeTimeline =
new FakeTimeline(
new TimelineWindowDefinition(
@@ -3727,7 +3725,7 @@ public final class ExoPlayerTest {
ExoPlayer player = new TestExoPlayerBuilder(context).build();
AdPlaybackState adPlaybackState =
FakeTimeline.createAdPlaybackState(
- /* adsPerAdGroup= */ 1, /* adGroupTimesUs...= */ 42_000_004_000_000L);
+ /* adsPerAdGroup= */ 1, /* adGroupTimesUs= */ 42_000_004_000_000L);
Timeline liveTimeline1 =
new FakeTimeline(
new TimelineWindowDefinition(
@@ -4732,7 +4730,7 @@ public final class ExoPlayerTest {
long contentDurationMs = 10_000;
long adDurationMs = 100_000;
AdPlaybackState adPlaybackState =
- new AdPlaybackState(/* adsId= */ new Object(), /* adGroupTimesUs...= */ 0);
+ new AdPlaybackState(/* adsId= */ new Object(), /* adGroupTimesUs= */ 0);
adPlaybackState = adPlaybackState.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 1);
adPlaybackState =
adPlaybackState.withAvailableAdUri(
@@ -4834,7 +4832,7 @@ public final class ExoPlayerTest {
long contentDurationMs = 10_000;
long adDurationMs = 4_000;
AdPlaybackState adPlaybackState =
- new AdPlaybackState(/* adsId= */ new Object(), /* adGroupTimesUs...= */ 0);
+ new AdPlaybackState(/* adsId= */ new Object(), /* adGroupTimesUs= */ 0);
adPlaybackState = adPlaybackState.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 1);
adPlaybackState =
adPlaybackState.withAvailableAdUri(
@@ -4917,7 +4915,7 @@ public final class ExoPlayerTest {
long contentDurationMs = 10_000;
long adDurationMs = 4_000;
AdPlaybackState adPlaybackState =
- new AdPlaybackState(/* adsId= */ new Object(), /* adGroupTimesUs...= */ 0)
+ new AdPlaybackState(/* adsId= */ new Object(), /* adGroupTimesUs= */ 0)
.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 1)
.withAvailableAdUri(
/* adGroupIndex= */ 0,
@@ -4962,7 +4960,7 @@ public final class ExoPlayerTest {
FakeTimeline.createMultiPeriodAdTimeline(
"windowId",
/* numberOfPlayedAds= */ 0,
- /* isAdPeriodFlags...= */ false,
+ /* isAdPeriodFlags= */ false,
true,
true,
false);
@@ -5053,7 +5051,7 @@ public final class ExoPlayerTest {
FakeTimeline.createMultiPeriodAdTimeline(
"windowId",
/* numberOfPlayedAds= */ 0,
- /* isAdPeriodFlags...= */ false,
+ /* isAdPeriodFlags= */ false,
true,
false,
false);
@@ -5115,7 +5113,7 @@ public final class ExoPlayerTest {
FakeTimeline.createMultiPeriodAdTimeline(
"windowId",
/* numberOfPlayedAds= */ 0,
- /* isAdPeriodFlags...= */ false,
+ /* isAdPeriodFlags= */ false,
true,
true,
false);
@@ -5182,7 +5180,7 @@ public final class ExoPlayerTest {
FakeTimeline.createMultiPeriodAdTimeline(
"windowId",
/* numberOfPlayedAds= */ 0,
- /* isAdPeriodFlags...= */ false,
+ /* isAdPeriodFlags= */ false,
true,
true,
false);
@@ -5263,7 +5261,7 @@ public final class ExoPlayerTest {
FakeTimeline.createMultiPeriodAdTimeline(
"windowId",
/* numberOfPlayedAds= */ 2,
- /* isAdPeriodFlags...= */ false,
+ /* isAdPeriodFlags= */ false,
true,
true,
false);
@@ -5318,7 +5316,7 @@ public final class ExoPlayerTest {
FakeTimeline.createMultiPeriodAdTimeline(
"windowId",
/* numberOfPlayedAds= */ Integer.MAX_VALUE,
- /* isAdPeriodFlags...= */ true,
+ /* isAdPeriodFlags= */ true,
false,
true,
true,
@@ -5386,28 +5384,28 @@ public final class ExoPlayerTest {
new AdPlaybackState("adsId"),
/* fromPositionUs= */ DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US,
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ C.MICROS_PER_SECOND);
+ /* adDurationsUs= */ C.MICROS_PER_SECOND);
adPlaybackState =
addAdGroupToAdPlaybackState(
adPlaybackState,
/* fromPositionUs= */ DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US
+ (3 * C.MICROS_PER_SECOND),
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ C.MICROS_PER_SECOND);
+ /* adDurationsUs= */ C.MICROS_PER_SECOND);
adPlaybackState =
addAdGroupToAdPlaybackState(
adPlaybackState,
/* fromPositionUs= */ DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US
+ (5 * C.MICROS_PER_SECOND),
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ C.MICROS_PER_SECOND);
+ /* adDurationsUs= */ C.MICROS_PER_SECOND);
adPlaybackState =
addAdGroupToAdPlaybackState(
adPlaybackState,
/* fromPositionUs= */ DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US
+ (9 * C.MICROS_PER_SECOND),
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ C.MICROS_PER_SECOND);
+ /* adDurationsUs= */ C.MICROS_PER_SECOND);
adPlaybackState =
adPlaybackState.withPlayedAd(/* adGroupIndex= */ 0, /* adIndexInAdGroup+ */ 0);
adPlaybackState =
@@ -5653,7 +5651,7 @@ public final class ExoPlayerTest {
@Test
public void shortAdFollowedByUnpreparedAd_playbackDoesNotGetStuck() throws Exception {
AdPlaybackState adPlaybackState =
- FakeTimeline.createAdPlaybackState(/* adsPerAdGroup= */ 2, /* adGroupTimesUs...= */ 0);
+ FakeTimeline.createAdPlaybackState(/* adsPerAdGroup= */ 2, /* adGroupTimesUs= */ 0);
long shortAdDurationMs = 1_000;
adPlaybackState =
adPlaybackState.withAdDurationsUs(new long[][] {{shortAdDurationMs, shortAdDurationMs}});
@@ -8081,7 +8079,7 @@ public final class ExoPlayerTest {
@Test
public void seekToCurrentPosition_inEndedState_switchesToBufferingStateAndContinuesPlayback()
throws Exception {
- MediaSource mediaSource = new FakeMediaSource(new FakeTimeline(/* windowCount = */ 1));
+ MediaSource mediaSource = new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1));
AtomicInteger mediaItemIndexAfterFinalEndedState = new AtomicInteger();
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
@@ -8552,8 +8550,8 @@ public final class ExoPlayerTest {
/* isDynamic= */ false,
/* isLive= */ false,
/* isPlaceholder= */ false,
- /* durationUs = */ 100_000,
- /* defaultPositionUs = */ 0,
+ /* durationUs= */ 100_000,
+ /* defaultPositionUs= */ 0,
/* windowOffsetInFirstPeriodUs= */ 0,
ImmutableList.of(AdPlaybackState.NONE),
MediaItem.fromUri("http://foo.bar/fake1"));
@@ -8566,8 +8564,8 @@ public final class ExoPlayerTest {
/* isDynamic= */ false,
/* isLive= */ false,
/* isPlaceholder= */ false,
- /* durationUs = */ 100_000,
- /* defaultPositionUs = */ 0,
+ /* durationUs= */ 100_000,
+ /* defaultPositionUs= */ 0,
/* windowOffsetInFirstPeriodUs= */ 0,
ImmutableList.of(AdPlaybackState.NONE),
MediaItem.fromUri("http://foo.bar/fake2"));
@@ -8580,8 +8578,8 @@ public final class ExoPlayerTest {
/* isDynamic= */ false,
/* isLive= */ false,
/* isPlaceholder= */ false,
- /* durationUs = */ 100_000,
- /* defaultPositionUs = */ 0,
+ /* durationUs= */ 100_000,
+ /* defaultPositionUs= */ 0,
/* windowOffsetInFirstPeriodUs= */ 0,
ImmutableList.of(AdPlaybackState.NONE),
MediaItem.fromUri("http://foo.bar/fake3"));
@@ -9065,7 +9063,7 @@ public final class ExoPlayerTest {
@Test
public void isCommandAvailable_duringAd_isFalseForSeekCommands() throws Exception {
AdPlaybackState adPlaybackState =
- new AdPlaybackState(/* adsId= */ new Object(), /* adGroupTimesUs...= */ 0)
+ new AdPlaybackState(/* adsId= */ new Object(), /* adGroupTimesUs= */ 0)
.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 1)
.withAvailableAdUri(
/* adGroupIndex= */ 0,
@@ -10036,7 +10034,7 @@ public final class ExoPlayerTest {
AdPlaybackState adPlaybackState =
FakeTimeline.createAdPlaybackState(
/* adsPerAdGroup= */ 1,
- /* adGroupTimesUs...= */ 0,
+ /* adGroupTimesUs= */ 0,
7 * C.MICROS_PER_SECOND,
C.TIME_END_OF_SOURCE);
TimelineWindowDefinition adTimelineDefinition =
@@ -10625,7 +10623,7 @@ public final class ExoPlayerTest {
AdPlaybackState adPlaybackState =
FakeTimeline.createAdPlaybackState(
/* adsPerAdGroup= */ 2,
- /* adGroupTimesUs...= */ 0,
+ /* adGroupTimesUs= */ 0,
7 * C.MICROS_PER_SECOND,
C.TIME_END_OF_SOURCE);
TimelineWindowDefinition adTimeline =
@@ -10762,7 +10760,7 @@ public final class ExoPlayerTest {
player.addListener(listener);
AdPlaybackState adPlaybackState =
FakeTimeline.createAdPlaybackState(
- /* adsPerAdGroup= */ 1, /* adGroupTimesUs...= */ 2 * C.MICROS_PER_SECOND);
+ /* adsPerAdGroup= */ 1, /* adGroupTimesUs= */ 2 * C.MICROS_PER_SECOND);
TimelineWindowDefinition adTimeline =
new TimelineWindowDefinition(
/* periodCount= */ 1,
@@ -10851,7 +10849,7 @@ public final class ExoPlayerTest {
player.addListener(listener);
AdPlaybackState postRollAdPlaybackState =
FakeTimeline.createAdPlaybackState(
- /* adsPerAdGroup= */ 1, /* adGroupTimesUs...= */ C.TIME_END_OF_SOURCE);
+ /* adsPerAdGroup= */ 1, /* adGroupTimesUs= */ C.TIME_END_OF_SOURCE);
TimelineWindowDefinition postRollWindow =
new TimelineWindowDefinition(
/* periodCount= */ 1,
@@ -10865,7 +10863,7 @@ public final class ExoPlayerTest {
/* windowOffsetInFirstPeriodUs= */ 0,
postRollAdPlaybackState);
AdPlaybackState preRollAdPlaybackState =
- FakeTimeline.createAdPlaybackState(/* adsPerAdGroup= */ 1, /* adGroupTimesUs...= */ 0);
+ FakeTimeline.createAdPlaybackState(/* adsPerAdGroup= */ 1, /* adGroupTimesUs= */ 0);
TimelineWindowDefinition preRollWindow =
new TimelineWindowDefinition(
/* periodCount= */ 1,
@@ -11765,7 +11763,7 @@ public final class ExoPlayerTest {
player.prepare();
TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_READY);
- player.seekTo(/* positionMs = */ 0);
+ player.seekTo(/* positionMs= */ 0);
player.seekToNext();
assertThat(player.getCurrentMediaItemIndex()).isEqualTo(0);
@@ -11903,8 +11901,7 @@ public final class ExoPlayerTest {
.build();
// Live stream timeline with unassigned next ad group.
AdPlaybackState initialAdPlaybackState =
- new AdPlaybackState(
- /* adsId= */ new Object(), /* adGroupTimesUs...= */ C.TIME_END_OF_SOURCE)
+ new AdPlaybackState(/* adsId= */ new Object(), /* adGroupTimesUs= */ C.TIME_END_OF_SOURCE)
.withIsServerSideInserted(/* adGroupIndex= */ 0, /* isServerSideInserted= */ true)
.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 1)
.withAdDurationsUs(new long[][] {new long[] {10 * C.MICROS_PER_SECOND}});
diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaPeriodQueueTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaPeriodQueueTest.java
index ca3bd02eeb..a882a5928c 100644
--- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaPeriodQueueTest.java
+++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaPeriodQueueTest.java
@@ -127,7 +127,7 @@ public final class MediaPeriodQueueTest {
@Test
public void getNextMediaPeriodInfo_withPrerollAd_returnsCorrectMediaPeriodInfos() {
- setupAdTimeline(/* adGroupTimesUs...= */ 0);
+ setupAdTimeline(/* adGroupTimesUs= */ 0);
setAdGroupLoaded(/* adGroupIndex= */ 0);
assertNextMediaPeriodInfoIsAd(
/* adGroupIndex= */ 0,
@@ -149,7 +149,7 @@ public final class MediaPeriodQueueTest {
@Test
public void getNextMediaPeriodInfo_withMidrollAds_returnsCorrectMediaPeriodInfos() {
- setupAdTimeline(/* adGroupTimesUs...= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US);
+ setupAdTimeline(/* adGroupTimesUs= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US);
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
/* periodUid= */ firstPeriodUid,
/* startPositionUs= */ 0,
@@ -205,7 +205,7 @@ public final class MediaPeriodQueueTest {
@Test
public void getNextMediaPeriodInfo_withMidrollAndPostroll_returnsCorrectMediaPeriodInfos() {
- setupAdTimeline(/* adGroupTimesUs...= */ FIRST_AD_START_TIME_US, C.TIME_END_OF_SOURCE);
+ setupAdTimeline(/* adGroupTimesUs= */ FIRST_AD_START_TIME_US, C.TIME_END_OF_SOURCE);
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
/* periodUid= */ firstPeriodUid,
/* startPositionUs= */ 0,
@@ -259,7 +259,7 @@ public final class MediaPeriodQueueTest {
adPlaybackState =
new AdPlaybackState(
/* adsId= */ new Object(),
- /* adGroupTimesUs...= */ 0,
+ /* adGroupTimesUs= */ 0,
FIRST_AD_START_TIME_US,
C.TIME_END_OF_SOURCE)
.withContentDurationUs(CONTENT_DURATION_US)
@@ -330,7 +330,7 @@ public final class MediaPeriodQueueTest {
adPlaybackState =
new AdPlaybackState(
/* adsId= */ new Object(),
- /* adGroupTimesUs...= */ 0,
+ /* adGroupTimesUs= */ 0,
FIRST_AD_START_TIME_US,
SECOND_AD_START_TIME_US)
.withContentDurationUs(CONTENT_DURATION_US)
@@ -398,7 +398,7 @@ public final class MediaPeriodQueueTest {
@Test
public void getNextMediaPeriodInfo_withPostrollLoadError_returnsEmptyFinalMediaPeriodInfo() {
- setupAdTimeline(/* adGroupTimesUs...= */ C.TIME_END_OF_SOURCE);
+ setupAdTimeline(/* adGroupTimesUs= */ C.TIME_END_OF_SOURCE);
assertGetNextMediaPeriodInfoReturnsContentMediaPeriod(
/* periodUid= */ firstPeriodUid,
/* startPositionUs= */ 0,
@@ -425,7 +425,7 @@ public final class MediaPeriodQueueTest {
@Test
public void getNextMediaPeriodInfo_withPlayedAdGroups_returnsCorrectMediaPeriodInfos() {
- setupAdTimeline(/* adGroupTimesUs...= */ 0, FIRST_AD_START_TIME_US, C.TIME_END_OF_SOURCE);
+ setupAdTimeline(/* adGroupTimesUs= */ 0, FIRST_AD_START_TIME_US, C.TIME_END_OF_SOURCE);
setAdGroupLoaded(/* adGroupIndex= */ 0);
setAdGroupLoaded(/* adGroupIndex= */ 1);
setAdGroupLoaded(/* adGroupIndex= */ 2);
@@ -509,14 +509,14 @@ public final class MediaPeriodQueueTest {
@Test
public void
updateQueuedPeriods_withDurationChangeInPlayingContent_handlesChangeAndRemovesPeriodsAfterChangedPeriod() {
- setupAdTimeline(/* adGroupTimesUs...= */ FIRST_AD_START_TIME_US);
+ setupAdTimeline(/* adGroupTimesUs= */ FIRST_AD_START_TIME_US);
setAdGroupLoaded(/* adGroupIndex= */ 0);
enqueueNext(); // Content before ad.
enqueueNext(); // Ad.
enqueueNext(); // Content after ad.
// Change position of first ad (= change duration of playing content before first ad).
- updateAdPlaybackStateAndTimeline(/* adGroupTimesUs...= */ FIRST_AD_START_TIME_US - 2000);
+ updateAdPlaybackStateAndTimeline(/* adGroupTimesUs= */ FIRST_AD_START_TIME_US - 2000);
setAdGroupLoaded(/* adGroupIndex= */ 0);
long maxRendererReadPositionUs =
MediaPeriodQueue.INITIAL_RENDERER_POSITION_OFFSET_US + FIRST_AD_START_TIME_US - 3000;
@@ -537,14 +537,14 @@ public final class MediaPeriodQueueTest {
@Test
public void
updateQueuedPeriods_withDurationChangeInPlayingContentAfterReadingPosition_doesntHandleChangeAndRemovesPeriodsAfterChangedPeriod() {
- setupAdTimeline(/* adGroupTimesUs...= */ FIRST_AD_START_TIME_US);
+ setupAdTimeline(/* adGroupTimesUs= */ FIRST_AD_START_TIME_US);
setAdGroupLoaded(/* adGroupIndex= */ 0);
enqueueNext(); // Content before ad.
enqueueNext(); // Ad.
enqueueNext(); // Content after ad.
// Change position of first ad (= change duration of playing content before first ad).
- updateAdPlaybackStateAndTimeline(/* adGroupTimesUs...= */ FIRST_AD_START_TIME_US - 2000);
+ updateAdPlaybackStateAndTimeline(/* adGroupTimesUs= */ FIRST_AD_START_TIME_US - 2000);
setAdGroupLoaded(/* adGroupIndex= */ 0);
long maxRendererReadPositionUs =
MediaPeriodQueue.INITIAL_RENDERER_POSITION_OFFSET_US + FIRST_AD_START_TIME_US - 1000;
@@ -579,7 +579,7 @@ public final class MediaPeriodQueueTest {
// Change position of first ad (= change duration of playing content before first ad).
adPlaybackState =
new AdPlaybackState(
- /* adsId= */ new Object(), /* adGroupTimesUs...= */ FIRST_AD_START_TIME_US - 2000)
+ /* adsId= */ new Object(), /* adGroupTimesUs= */ FIRST_AD_START_TIME_US - 2000)
.withIsServerSideInserted(/* adGroupIndex= */ 0, /* isServerSideInserted= */ true);
updateTimeline();
setAdGroupLoaded(/* adGroupIndex= */ 0);
@@ -602,7 +602,7 @@ public final class MediaPeriodQueueTest {
@Test
public void
updateQueuedPeriods_withDurationChangeAfterReadingPeriod_handlesChangeAndRemovesPeriodsAfterChangedPeriod() {
- setupAdTimeline(/* adGroupTimesUs...= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US);
+ setupAdTimeline(/* adGroupTimesUs= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US);
setAdGroupLoaded(/* adGroupIndex= */ 0);
setAdGroupLoaded(/* adGroupIndex= */ 1);
enqueueNext(); // Content before first ad.
@@ -612,7 +612,7 @@ public final class MediaPeriodQueueTest {
// Change position of second ad (= change duration of content between ads).
updateAdPlaybackStateAndTimeline(
- /* adGroupTimesUs...= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US - 1000);
+ /* adGroupTimesUs= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US - 1000);
setAdGroupLoaded(/* adGroupIndex= */ 0);
setAdGroupLoaded(/* adGroupIndex= */ 1);
boolean changeHandled =
@@ -628,7 +628,7 @@ public final class MediaPeriodQueueTest {
@Test
public void
updateQueuedPeriods_withDurationChangeBeforeReadingPeriod_doesntHandleChangeAndRemovesPeriodsAfterChangedPeriod() {
- setupAdTimeline(/* adGroupTimesUs...= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US);
+ setupAdTimeline(/* adGroupTimesUs= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US);
setAdGroupLoaded(/* adGroupIndex= */ 0);
setAdGroupLoaded(/* adGroupIndex= */ 1);
enqueueNext(); // Content before first ad.
@@ -641,7 +641,7 @@ public final class MediaPeriodQueueTest {
// Change position of second ad (= change duration of content between ads).
updateAdPlaybackStateAndTimeline(
- /* adGroupTimesUs...= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US - 1000);
+ /* adGroupTimesUs= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US - 1000);
setAdGroupLoaded(/* adGroupIndex= */ 0);
setAdGroupLoaded(/* adGroupIndex= */ 1);
long maxRendererReadPositionUs =
@@ -659,7 +659,7 @@ public final class MediaPeriodQueueTest {
@Test
public void
updateQueuedPeriods_withDurationChangeInReadingPeriodAfterReadingPosition_handlesChangeAndRemovesPeriodsAfterChangedPeriod() {
- setupAdTimeline(/* adGroupTimesUs...= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US);
+ setupAdTimeline(/* adGroupTimesUs= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US);
setAdGroupLoaded(/* adGroupIndex= */ 0);
setAdGroupLoaded(/* adGroupIndex= */ 1);
enqueueNext(); // Content before first ad.
@@ -671,7 +671,7 @@ public final class MediaPeriodQueueTest {
// Change position of second ad (= change duration of content between ads).
updateAdPlaybackStateAndTimeline(
- /* adGroupTimesUs...= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US - 1000);
+ /* adGroupTimesUs= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US - 1000);
setAdGroupLoaded(/* adGroupIndex= */ 0);
setAdGroupLoaded(/* adGroupIndex= */ 1);
long readingPositionAtStartOfContentBetweenAds =
@@ -691,7 +691,7 @@ public final class MediaPeriodQueueTest {
@Test
public void
updateQueuedPeriods_withDurationChangeInReadingPeriodBeforeReadingPosition_doesntHandleChangeAndRemovesPeriodsAfterChangedPeriod() {
- setupAdTimeline(/* adGroupTimesUs...= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US);
+ setupAdTimeline(/* adGroupTimesUs= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US);
setAdGroupLoaded(/* adGroupIndex= */ 0);
setAdGroupLoaded(/* adGroupIndex= */ 1);
enqueueNext(); // Content before first ad.
@@ -703,7 +703,7 @@ public final class MediaPeriodQueueTest {
// Change position of second ad (= change duration of content between ads).
updateAdPlaybackStateAndTimeline(
- /* adGroupTimesUs...= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US - 1000);
+ /* adGroupTimesUs= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US - 1000);
setAdGroupLoaded(/* adGroupIndex= */ 0);
setAdGroupLoaded(/* adGroupIndex= */ 1);
long readingPositionAtEndOfContentBetweenAds =
@@ -723,7 +723,7 @@ public final class MediaPeriodQueueTest {
@Test
public void
updateQueuedPeriods_withDurationChangeInReadingPeriodReadToEnd_doesntHandleChangeAndRemovesPeriodsAfterChangedPeriod() {
- setupAdTimeline(/* adGroupTimesUs...= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US);
+ setupAdTimeline(/* adGroupTimesUs= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US);
setAdGroupLoaded(/* adGroupIndex= */ 0);
setAdGroupLoaded(/* adGroupIndex= */ 1);
enqueueNext(); // Content before first ad.
@@ -735,7 +735,7 @@ public final class MediaPeriodQueueTest {
// Change position of second ad (= change duration of content between ads).
updateAdPlaybackStateAndTimeline(
- /* adGroupTimesUs...= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US - 1000);
+ /* adGroupTimesUs= */ FIRST_AD_START_TIME_US, SECOND_AD_START_TIME_US - 1000);
setAdGroupLoaded(/* adGroupIndex= */ 0);
setAdGroupLoaded(/* adGroupIndex= */ 1);
boolean changeHandled =
@@ -838,7 +838,7 @@ public final class MediaPeriodQueueTest {
createMultiPeriodServerSideInsertedTimeline(
windowId,
/* numberOfPlayedAds= */ 0,
- /* isAdPeriodFlags...= */ true,
+ /* isAdPeriodFlags= */ true,
false,
true,
true,
@@ -873,7 +873,7 @@ public final class MediaPeriodQueueTest {
createMultiPeriodServerSideInsertedTimeline(
windowId,
/* numberOfPlayedAds= */ 4,
- /* isAdPeriodFlags...= */ true,
+ /* isAdPeriodFlags= */ true,
false,
true,
true,
@@ -908,7 +908,7 @@ public final class MediaPeriodQueueTest {
createMultiPeriodServerSideInsertedTimeline(
windowId,
/* numberOfPlayedAds= */ 2,
- /* isAdPeriodFlags...= */ true,
+ /* isAdPeriodFlags= */ true,
false,
true,
true,
@@ -932,7 +932,7 @@ public final class MediaPeriodQueueTest {
Object windowId = new Object();
Timeline timeline =
createMultiPeriodServerSideInsertedTimeline(
- windowId, /* numberOfPlayedAds= */ 0, /* isAdPeriodFlags...= */ false, true);
+ windowId, /* numberOfPlayedAds= */ 0, /* isAdPeriodFlags= */ false, true);
MediaPeriodId mediaPeriodId =
mediaPeriodQueue.resolveMediaPeriodIdForAdsAfterPeriodPositionChange(
@@ -951,7 +951,7 @@ public final class MediaPeriodQueueTest {
Object windowId = new Object();
Timeline timeline =
createMultiPeriodServerSideInsertedTimeline(
- windowId, /* numberOfPlayedAds= */ 0, /* isAdPeriodFlags...= */ false, true, false);
+ windowId, /* numberOfPlayedAds= */ 0, /* isAdPeriodFlags= */ false, true, false);
MediaPeriodId mediaPeriodId =
mediaPeriodQueue.resolveMediaPeriodIdForAdsAfterPeriodPositionChange(
@@ -970,7 +970,7 @@ public final class MediaPeriodQueueTest {
Object windowId = new Object();
Timeline timeline =
createMultiPeriodServerSideInsertedTimeline(
- windowId, /* numberOfPlayedAds= */ 1, /* isAdPeriodFlags...= */ false, true, false);
+ windowId, /* numberOfPlayedAds= */ 1, /* isAdPeriodFlags= */ false, true, false);
MediaPeriodId mediaPeriodId =
mediaPeriodQueue.resolveMediaPeriodIdForAdsAfterPeriodPositionChange(
@@ -989,7 +989,7 @@ public final class MediaPeriodQueueTest {
Object windowId = new Object();
Timeline timeline =
createMultiPeriodServerSideInsertedTimeline(
- windowId, /* numberOfPlayedAds= */ 2, /* isAdPeriodFlags...= */ true, true, false);
+ windowId, /* numberOfPlayedAds= */ 2, /* isAdPeriodFlags= */ true, true, false);
MediaPeriodId mediaPeriodId =
mediaPeriodQueue.resolveMediaPeriodIdForAdsAfterPeriodPositionChange(
timeline, new Pair<>(windowId, 0), /* positionUs= */ 0);
@@ -1009,7 +1009,7 @@ public final class MediaPeriodQueueTest {
createMultiPeriodServerSideInsertedTimeline(
windowId,
/* numberOfPlayedAds= */ 4,
- /* isAdPeriodFlags...= */ false,
+ /* isAdPeriodFlags= */ false,
true,
true,
true,
@@ -1032,12 +1032,7 @@ public final class MediaPeriodQueueTest {
Object windowId = new Object();
Timeline timeline =
createMultiPeriodServerSideInsertedTimeline(
- windowId,
- /* numberOfPlayedAds= */ 0,
- /* isAdPeriodFlags...= */ true,
- false,
- false,
- false);
+ windowId, /* numberOfPlayedAds= */ 0, /* isAdPeriodFlags= */ true, false, false, false);
MediaPeriodId mediaPeriodId =
mediaPeriodQueue.resolveMediaPeriodIdForAdsAfterPeriodPositionChange(
@@ -1058,7 +1053,7 @@ public final class MediaPeriodQueueTest {
createMultiPeriodServerSideInsertedTimeline(
windowId,
/* numberOfPlayedAds= */ 0,
- /* isAdPeriodFlags...= */ false,
+ /* isAdPeriodFlags= */ false,
false,
false,
false);
diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaSourceListTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaSourceListTest.java
index edb874091c..7a6b9a7c4d 100644
--- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaSourceListTest.java
+++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaSourceListTest.java
@@ -451,7 +451,7 @@ public class MediaSourceListTest {
@Test
public void setMediaSources_expectTimelineUsesCustomShuffleOrder() {
Timeline timeline =
- mediaSourceList.setMediaSources(createFakeHolders(), new FakeShuffleOrder(/* length=*/ 4));
+ mediaSourceList.setMediaSources(createFakeHolders(), new FakeShuffleOrder(/* length= */ 4));
assertTimelineUsesFakeShuffleOrder(timeline);
}
diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultAnalyticsCollectorTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultAnalyticsCollectorTest.java
index c25ddebdcf..36180e4e21 100644
--- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultAnalyticsCollectorTest.java
+++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultAnalyticsCollectorTest.java
@@ -1027,7 +1027,7 @@ public final class DefaultAnalyticsCollectorTest {
new AtomicReference<>(
FakeTimeline.createAdPlaybackState(
/* adsPerAdGroup= */ 1,
- /* adGroupTimesUs...= */ windowOffsetInFirstPeriodUs,
+ /* adGroupTimesUs= */ windowOffsetInFirstPeriodUs,
windowOffsetInFirstPeriodUs + 5 * C.MICROS_PER_SECOND,
C.TIME_END_OF_SOURCE));
AtomicInteger playedAdCount = new AtomicInteger(0);
@@ -1300,7 +1300,7 @@ public final class DefaultAnalyticsCollectorTest {
/* isDynamic= */ false,
10 * C.MICROS_PER_SECOND,
FakeTimeline.createAdPlaybackState(
- /* adsPerAdGroup= */ 1, /* adGroupTimesUs...= */
+ /* adsPerAdGroup= */ 1, /* adGroupTimesUs= */
windowOffsetInFirstPeriodUs + 5 * C.MICROS_PER_SECOND)));
FakeMediaSource fakeMediaSource =
new FakeMediaSource(
diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManagerTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManagerTest.java
index e331b100db..5c6d0d16c5 100644
--- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManagerTest.java
+++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultPlaybackSessionManagerTest.java
@@ -1285,7 +1285,7 @@ public final class DefaultPlaybackSessionManagerTest {
private static EventTime createEventTime(
Timeline timeline, int windowIndex, @Nullable MediaPeriodId mediaPeriodId) {
return new EventTime(
- /* realtimeMs = */ 0,
+ /* realtimeMs= */ 0,
timeline,
windowIndex,
mediaPeriodId,
@@ -1303,7 +1303,7 @@ public final class DefaultPlaybackSessionManagerTest {
@Nullable MediaPeriodId eventMediaPeriodId,
@Nullable MediaPeriodId currentMediaPeriodId) {
return new EventTime(
- /* realtimeMs = */ 0,
+ /* realtimeMs= */ 0,
timeline,
windowIndex,
eventMediaPeriodId,
diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/audio/SilenceSkippingAudioProcessorTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/audio/SilenceSkippingAudioProcessorTest.java
index e9dfdf3e8e..a4577a5ae9 100644
--- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/audio/SilenceSkippingAudioProcessorTest.java
+++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/audio/SilenceSkippingAudioProcessorTest.java
@@ -289,11 +289,10 @@ public final class SilenceSkippingAudioProcessorTest {
Pcm16BitAudioBuilder audioBuilder = new Pcm16BitAudioBuilder(channelCount, totalFrameCount);
while (!audioBuilder.isFull()) {
int silenceDurationFrames = (silenceDurationMs * sampleRate) / 1000;
- audioBuilder.appendFrames(
- /* count= */ silenceDurationFrames, /* channelLevels...= */ (short) 0);
+ audioBuilder.appendFrames(/* count= */ silenceDurationFrames, /* channelLevels= */ (short) 0);
int noiseDurationFrames = (noiseDurationMs * sampleRate) / 1000;
audioBuilder.appendFrames(
- /* count= */ noiseDurationFrames, /* channelLevels...= */ Short.MAX_VALUE);
+ /* count= */ noiseDurationFrames, /* channelLevels= */ Short.MAX_VALUE);
}
return new InputBufferProvider(audioBuilder.build());
}
diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ConcatenatingMediaSourceTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ConcatenatingMediaSourceTest.java
index be4d644ec2..573627f80c 100644
--- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ConcatenatingMediaSourceTest.java
+++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ConcatenatingMediaSourceTest.java
@@ -363,7 +363,7 @@ public final class ConcatenatingMediaSourceTest {
new FakeMediaSource(Timeline.EMPTY),
new FakeMediaSource(Timeline.EMPTY),
};
- Timeline nonEmptyTimeline = new FakeTimeline(/* windowCount = */ 1);
+ Timeline nonEmptyTimeline = new FakeTimeline(/* windowCount= */ 1);
mediaSource.addMediaSources(Arrays.asList(childSources));
Timeline timeline = testRunner.prepareSource();
diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ads/AdsMediaSourceTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ads/AdsMediaSourceTest.java
index 53366ff2ba..fc2198d049 100644
--- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ads/AdsMediaSourceTest.java
+++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ads/AdsMediaSourceTest.java
@@ -79,7 +79,7 @@ public final class AdsMediaSourceTest {
CONTENT_TIMELINE.getUidOfPeriod(/* periodIndex= */ 0);
private static final AdPlaybackState AD_PLAYBACK_STATE =
- new AdPlaybackState(/* adsId= */ new Object(), /* adGroupTimesUs...= */ 0)
+ new AdPlaybackState(/* adsId= */ new Object(), /* adGroupTimesUs= */ 0)
.withContentDurationUs(CONTENT_DURATION_US)
.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 1)
.withAvailableAdUri(
diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ads/ServerSideAdInsertionMediaSourceTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ads/ServerSideAdInsertionMediaSourceTest.java
index 82a5941365..1b4a37a27e 100644
--- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ads/ServerSideAdInsertionMediaSourceTest.java
+++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ads/ServerSideAdInsertionMediaSourceTest.java
@@ -91,19 +91,16 @@ public final class ServerSideAdInsertionMediaSourceTest {
// Test with one ad group before the window, and the window starting within the second ad group.
AdPlaybackState adPlaybackState =
new AdPlaybackState(
- /* adsId= */ new Object(), /* adGroupTimesUs...= */
- 15_000_000,
- 41_500_000,
- 42_200_000)
+ /* adsId= */ new Object(), /* adGroupTimesUs= */ 15_000_000, 41_500_000, 42_200_000)
.withIsServerSideInserted(/* adGroupIndex= */ 0, /* isServerSideInserted= */ true)
.withIsServerSideInserted(/* adGroupIndex= */ 1, /* isServerSideInserted= */ true)
.withIsServerSideInserted(/* adGroupIndex= */ 2, /* isServerSideInserted= */ true)
.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 1)
.withAdCount(/* adGroupIndex= */ 1, /* adCount= */ 2)
.withAdCount(/* adGroupIndex= */ 2, /* adCount= */ 1)
- .withAdDurationsUs(/* adGroupIndex= */ 0, /* adDurationsUs...= */ 500_000)
- .withAdDurationsUs(/* adGroupIndex= */ 1, /* adDurationsUs...= */ 300_000, 100_000)
- .withAdDurationsUs(/* adGroupIndex= */ 2, /* adDurationsUs...= */ 400_000)
+ .withAdDurationsUs(/* adGroupIndex= */ 0, /* adDurationsUs= */ 500_000)
+ .withAdDurationsUs(/* adGroupIndex= */ 1, /* adDurationsUs= */ 300_000, 100_000)
+ .withAdDurationsUs(/* adGroupIndex= */ 2, /* adDurationsUs= */ 400_000)
.withContentResumeOffsetUs(/* adGroupIndex= */ 0, /* contentResumeOffsetUs= */ 100_000)
.withContentResumeOffsetUs(/* adGroupIndex= */ 1, /* contentResumeOffsetUs= */ 400_000)
.withContentResumeOffsetUs(/* adGroupIndex= */ 2, /* contentResumeOffsetUs= */ 200_000);
@@ -184,19 +181,19 @@ public final class ServerSideAdInsertionMediaSourceTest {
adPlaybackState,
/* fromPositionUs= */ 0,
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ 200_000);
+ /* adDurationsUs= */ 200_000);
adPlaybackState =
addAdGroupToAdPlaybackState(
adPlaybackState,
/* fromPositionUs= */ 400_000,
/* contentResumeOffsetUs= */ 1_000_000,
- /* adDurationsUs...= */ 300_000);
+ /* adDurationsUs= */ 300_000);
AdPlaybackState firstAdPlaybackState =
addAdGroupToAdPlaybackState(
adPlaybackState,
/* fromPositionUs= */ 900_000,
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ 100_000);
+ /* adDurationsUs= */ 100_000);
AtomicReference> checkPoints = new ArrayList<>();
AdaptiveTrackSelection.Factory factory =
new AdaptiveTrackSelection.Factory() {
@@ -621,9 +621,9 @@ public final class AdaptiveTrackSelectionTest {
TrackGroup trackGroup2 =
new TrackGroup(group2Format1, group2Format2, group2Format3, group2UnusedFormat);
TrackGroup fixedGroup = new TrackGroup(fixedFormat);
- Definition definition1 = new Definition(trackGroup1, /* tracks...= */ 0, 1);
- Definition definition2 = new Definition(trackGroup2, /* tracks...= */ 0, 1, 2);
- Definition fixedDefinition = new Definition(fixedGroup, /* tracks...= */ 0);
+ Definition definition1 = new Definition(trackGroup1, /* tracks= */ 0, 1);
+ Definition definition2 = new Definition(trackGroup2, /* tracks= */ 0, 1, 2);
+ Definition fixedDefinition = new Definition(fixedGroup, /* tracks= */ 0);
List
> checkPoints = new ArrayList<>();
AdaptiveTrackSelection.Factory factory =
new AdaptiveTrackSelection.Factory() {
diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelectorTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelectorTest.java
index b791d44ae0..8af97dbde4 100644
--- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelectorTest.java
+++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/trackselection/DefaultTrackSelectorTest.java
@@ -2173,10 +2173,8 @@ public final class DefaultTrackSelectorTest {
TIMELINE);
assertThat(result.length).isEqualTo(2);
- assertAdaptiveSelection(
- result.selections[0], trackGroups.get(0), /* expectedTracks...= */ 1, 0);
- assertAdaptiveSelection(
- result.selections[1], trackGroups.get(1), /* expectedTracks...= */ 1, 0);
+ assertAdaptiveSelection(result.selections[0], trackGroups.get(0), /* expectedTracks= */ 1, 0);
+ assertAdaptiveSelection(result.selections[1], trackGroups.get(1), /* expectedTracks= */ 1, 0);
// Multiple adaptive selection disallowed.
trackSelector.setParameters(
@@ -2189,8 +2187,7 @@ public final class DefaultTrackSelectorTest {
TIMELINE);
assertThat(result.length).isEqualTo(2);
- assertAdaptiveSelection(
- result.selections[0], trackGroups.get(0), /* expectedTracks...= */ 1, 0);
+ assertAdaptiveSelection(result.selections[0], trackGroups.get(0), /* expectedTracks= */ 1, 0);
assertFixedSelection(result.selections[1], trackGroups.get(1), /* expectedTrack= */ 1);
}
@@ -2234,7 +2231,7 @@ public final class DefaultTrackSelectorTest {
trackSelector.selectTracks(
new RendererCapabilities[] {VIDEO_CAPABILITIES}, trackGroups, periodId, TIMELINE);
assertThat(result.length).isEqualTo(1);
- assertAdaptiveSelection(result.selections[0], adaptiveGroup, /* expectedTracks...= */ 1, 0);
+ assertAdaptiveSelection(result.selections[0], adaptiveGroup, /* expectedTracks= */ 1, 0);
// Select default (=most tracks) if no preference is specified.
trackSelector.setParameters(defaultParameters.buildUpon().setPreferredVideoMimeType(null));
@@ -2242,7 +2239,7 @@ public final class DefaultTrackSelectorTest {
trackSelector.selectTracks(
new RendererCapabilities[] {VIDEO_CAPABILITIES}, trackGroups, periodId, TIMELINE);
assertThat(result.length).isEqualTo(1);
- assertAdaptiveSelection(result.selections[0], adaptiveGroup, /* expectedTracks...= */ 1, 0);
+ assertAdaptiveSelection(result.selections[0], adaptiveGroup, /* expectedTracks= */ 1, 0);
}
/**
@@ -2421,7 +2418,7 @@ public final class DefaultTrackSelectorTest {
@Test
public void roundTripViaBundle_ofSelectionOverride_yieldsEqualInstance() {
SelectionOverride selectionOverrideToBundle =
- new SelectionOverride(/* groupIndex= */ 1, /* tracks...= */ 2, 3);
+ new SelectionOverride(/* groupIndex= */ 1, /* tracks= */ 2, 3);
SelectionOverride selectionOverrideFromBundle =
DefaultTrackSelector.SelectionOverride.CREATOR.fromBundle(
diff --git a/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/HlsMediaPeriod.java b/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/HlsMediaPeriod.java
index c4bcfc50ec..bd592882bd 100644
--- a/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/HlsMediaPeriod.java
+++ b/libraries/exoplayer_hls/src/main/java/androidx/media3/exoplayer/hls/HlsMediaPeriod.java
@@ -689,7 +689,7 @@ public final class HlsMediaPeriod implements MediaPeriod, HlsPlaylistTracker.Pla
sampleStreamWrapper.prepareWithMultivariantPlaylistInfo(
muxedTrackGroups.toArray(new TrackGroup[0]),
/* primaryTrackGroupIndex= */ 0,
- /* optionalTrackGroupsIndices...= */ muxedTrackGroups.indexOf(id3TrackGroup));
+ /* optionalTrackGroupsIndices= */ muxedTrackGroups.indexOf(id3TrackGroup));
}
}
diff --git a/libraries/exoplayer_ima/src/main/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.java b/libraries/exoplayer_ima/src/main/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.java
index e5467d7a54..52a73ccdda 100644
--- a/libraries/exoplayer_ima/src/main/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.java
+++ b/libraries/exoplayer_ima/src/main/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSource.java
@@ -682,7 +682,7 @@ public final class ImaServerSideAdInsertionMediaSource extends CompositeMediaSou
adPlaybackState,
/* fromPositionUs= */ fromPositionUs,
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ getAdDuration(
+ /* adDurationsUs= */ getAdDuration(
/* startTimeSeconds= */ cuePoint.getStartTime(),
/* endTimeSeconds= */ cuePoint.getEndTime()));
}
diff --git a/libraries/exoplayer_ima/src/main/java/androidx/media3/exoplayer/ima/ImaUtil.java b/libraries/exoplayer_ima/src/main/java/androidx/media3/exoplayer/ima/ImaUtil.java
index 9c24e62009..4600c310bf 100644
--- a/libraries/exoplayer_ima/src/main/java/androidx/media3/exoplayer/ima/ImaUtil.java
+++ b/libraries/exoplayer_ima/src/main/java/androidx/media3/exoplayer/ima/ImaUtil.java
@@ -443,7 +443,7 @@ import java.util.Set;
private static AdPlaybackState splitAdGroupForPeriod(
Object adsId, AdGroup adGroup, long periodStartUs, long periodDurationUs) {
AdPlaybackState adPlaybackState =
- new AdPlaybackState(checkNotNull(adsId), /* adGroupTimesUs...= */ 0)
+ new AdPlaybackState(checkNotNull(adsId), /* adGroupTimesUs= */ 0)
.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 1)
.withAdDurationsUs(/* adGroupIndex= */ 0, periodDurationUs)
.withIsServerSideInserted(/* adGroupIndex= */ 0, true)
@@ -605,7 +605,7 @@ import java.util.Set;
adPlaybackState,
/* fromPositionUs= */ currentContentPeriodPositionUs,
/* contentResumeOffsetUs= */ sum(adDurationsUs),
- /* adDurationsUs...= */ adDurationsUs);
+ /* adDurationsUs= */ adDurationsUs);
adGroupIndex =
adPlaybackState.getAdGroupIndexForPositionUs(
mediaPeriodPositionUs, /* periodDurationUs= */ C.TIME_UNSET);
diff --git a/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaAdsLoaderTest.java b/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaAdsLoaderTest.java
index 753be43218..af1df2ed8b 100644
--- a/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaAdsLoaderTest.java
+++ b/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaAdsLoaderTest.java
@@ -239,7 +239,7 @@ public final class ImaAdsLoaderTest {
assertThat(getAdPlaybackState(/* periodIndex= */ 0))
.isEqualTo(
- new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs...= */ 0)
+ new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs= */ 0)
.withContentDurationUs(CONTENT_PERIOD_DURATION_US));
}
@@ -312,7 +312,7 @@ public final class ImaAdsLoaderTest {
// Verify that the preroll ad has been marked as played.
assertThat(getAdPlaybackState(/* periodIndex= */ 0))
.isEqualTo(
- new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs...= */ 0)
+ new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs= */ 0)
.withContentDurationUs(CONTENT_PERIOD_DURATION_US)
.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 1)
.withAvailableAdUri(/* adGroupIndex= */ 0, /* adIndexInAdGroup= */ 0, TEST_URI)
@@ -336,7 +336,7 @@ public final class ImaAdsLoaderTest {
assertThat(getAdPlaybackState(/* periodIndex= */ 0))
.isEqualTo(
- new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs...= */ 20_500_000)
+ new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs= */ 20_500_000)
.withContentDurationUs(CONTENT_PERIOD_DURATION_US)
.withAdDurationsUs(new long[][] {{TEST_AD_DURATION_US}})
.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 1)
@@ -384,7 +384,7 @@ public final class ImaAdsLoaderTest {
assertThat(getAdPlaybackState(/* periodIndex= */ 0))
.isEqualTo(
- new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs...= */ C.TIME_END_OF_SOURCE)
+ new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs= */ C.TIME_END_OF_SOURCE)
.withContentDurationUs(CONTENT_PERIOD_DURATION_US)
.withAdDurationsUs(new long[][] {{TEST_AD_DURATION_US}})
.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 1)
@@ -1114,7 +1114,7 @@ public final class ImaAdsLoaderTest {
// Verify that the preroll ad has been marked as played.
assertThat(getAdPlaybackState(/* periodIndex= */ 0))
.isEqualTo(
- new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs...= */ 0)
+ new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs= */ 0)
.withContentDurationUs(CONTENT_PERIOD_DURATION_US)
.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 1)
.withAvailableAdUri(/* adGroupIndex= */ 0, /* adIndexInAdGroup= */ 0, TEST_URI)
@@ -1123,7 +1123,7 @@ public final class ImaAdsLoaderTest {
.withAdResumePositionUs(/* adResumePositionUs= */ 0));
// Verify that the second source's ad cue points have preloaded.
assertThat(getAdPlaybackState(/* periodIndex= */ 1))
- .isEqualTo(new AdPlaybackState(secondAdsId, /* adGroupTimesUs...= */ 0));
+ .isEqualTo(new AdPlaybackState(secondAdsId, /* adGroupTimesUs= */ 0));
}
@Test
@@ -1181,7 +1181,7 @@ public final class ImaAdsLoaderTest {
// Verify that the preroll ad has been marked as played.
assertThat(getAdPlaybackState(/* periodIndex= */ 0))
.isEqualTo(
- new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs...= */ 0)
+ new AdPlaybackState(TEST_ADS_ID, /* adGroupTimesUs= */ 0)
.withContentDurationUs(CONTENT_PERIOD_DURATION_US)
.withAdCount(/* adGroupIndex= */ 0, /* adCount= */ 1)
.withAvailableAdUri(/* adGroupIndex= */ 0, /* adIndexInAdGroup= */ 0, TEST_URI)
@@ -1190,7 +1190,7 @@ public final class ImaAdsLoaderTest {
.withAdResumePositionUs(/* adResumePositionUs= */ 0));
// Verify that the second source's ad cue points have preloaded.
assertThat(getAdPlaybackState(/* periodIndex= */ 1))
- .isEqualTo(new AdPlaybackState(secondAdsId, /* adGroupTimesUs...= */ 0));
+ .isEqualTo(new AdPlaybackState(secondAdsId, /* adGroupTimesUs= */ 0));
}
@Test
diff --git a/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSourceTest.java b/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSourceTest.java
index 981ac9adb3..a29c80adf4 100644
--- a/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSourceTest.java
+++ b/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSourceTest.java
@@ -37,7 +37,7 @@ public class ImaServerSideAdInsertionMediaSourceTest {
new AdPlaybackState("adsId1"),
/* fromPositionUs= */ 0,
/* contentResumeOffsetUs= */ 10,
- /* adDurationsUs...= */ 5_000_000,
+ /* adDurationsUs= */ 5_000_000,
10_000_000,
20_000_000);
AdPlaybackState secondAdPlaybackState =
@@ -45,20 +45,20 @@ public class ImaServerSideAdInsertionMediaSourceTest {
new AdPlaybackState("adsId2"),
/* fromPositionUs= */ 0,
/* contentResumeOffsetUs= */ 10,
- /* adDurationsUs...= */ 10_000_000)
+ /* adDurationsUs= */ 10_000_000)
.withPlayedAd(/* adGroupIndex= */ 0, /* adIndexInAdGroup= */ 0);
AdPlaybackState thirdAdPlaybackState =
ServerSideAdInsertionUtil.addAdGroupToAdPlaybackState(
new AdPlaybackState("adsId3"),
/* fromPositionUs= */ C.TIME_END_OF_SOURCE,
/* contentResumeOffsetUs= */ 10,
- /* adDurationsUs...= */ 10_000_000);
+ /* adDurationsUs= */ 10_000_000);
thirdAdPlaybackState =
ServerSideAdInsertionUtil.addAdGroupToAdPlaybackState(
thirdAdPlaybackState,
/* fromPositionUs= */ 0,
/* contentResumeOffsetUs= */ 10,
- /* adDurationsUs...= */ 10_000_000)
+ /* adDurationsUs= */ 10_000_000)
.withRemovedAdGroupCount(1);
State state =
new State(
diff --git a/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaUtilTest.java b/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaUtilTest.java
index 8dfeb785ba..a17236513b 100644
--- a/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaUtilTest.java
+++ b/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaUtilTest.java
@@ -435,7 +435,7 @@ public class ImaUtilTest {
new AdPlaybackState(/* adsId= */ "adsId", 0)
.withAdCount(/* adGroupIndex= */ 0, periodCount)
.withAdDurationsUs(
- /* adGroupIndex= */ 0, /* adDurationsUs...= */
+ /* adGroupIndex= */ 0, /* adDurationsUs= */
DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US + periodDurationUs,
periodDurationUs,
periodDurationUs,
@@ -475,12 +475,10 @@ public class ImaUtilTest {
.withAdCount(/* adGroupIndex= */ 1, 1)
.withAdCount(/* adGroupIndex= */ 2, 1)
.withAdDurationsUs(
- /* adGroupIndex= */ 0, /* adDurationsUs...= */
+ /* adGroupIndex= */ 0, /* adDurationsUs= */
DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US + (2 * periodDurationUs))
- .withAdDurationsUs(
- /* adGroupIndex= */ 1, /* adDurationsUs...= */ (2 * periodDurationUs))
- .withAdDurationsUs(
- /* adGroupIndex= */ 2, /* adDurationsUs...= */ (2 * periodDurationUs))
+ .withAdDurationsUs(/* adGroupIndex= */ 1, /* adDurationsUs= */ (2 * periodDurationUs))
+ .withAdDurationsUs(/* adGroupIndex= */ 2, /* adDurationsUs= */ (2 * periodDurationUs))
.withPlayedAd(/* adGroupIndex= */ 0, /* adIndexInAdGroup= */ 0)
.withPlayedAd(/* adGroupIndex= */ 1, /* adIndexInAdGroup= */ 0)
.withIsServerSideInserted(/* adGroupIndex= */ 0, true)
@@ -522,7 +520,7 @@ public class ImaUtilTest {
// around removed.
DEFAULT_WINDOW_OFFSET_IN_FIRST_PERIOD_US + periodDurationUs + 2)
.withAdCount(/* adGroupIndex= */ 0, 1)
- .withAdDurationsUs(/* adGroupIndex= */ 0, /* adDurationsUs...= */ periodDurationUs)
+ .withAdDurationsUs(/* adGroupIndex= */ 0, /* adDurationsUs= */ periodDurationUs)
.withIsServerSideInserted(/* adGroupIndex= */ 0, true);
FakeTimeline timeline =
new FakeTimeline(
@@ -545,7 +543,7 @@ public class ImaUtilTest {
AdPlaybackState adPlaybackState =
new AdPlaybackState(/* adsId= */ "adsId", periodDurationUs - 1)
.withAdCount(/* adGroupIndex= */ 0, 1)
- .withAdDurationsUs(/* adGroupIndex= */ 0, /* adDurationsUs...= */ periodDurationUs)
+ .withAdDurationsUs(/* adGroupIndex= */ 0, /* adDurationsUs= */ periodDurationUs)
.withIsServerSideInserted(/* adGroupIndex= */ 0, true);
FakeTimeline timeline =
new FakeTimeline(
@@ -569,7 +567,7 @@ public class ImaUtilTest {
AdPlaybackState.NONE,
/* fromPositionUs= */ 0,
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ 30_000_000);
+ /* adDurationsUs= */ 30_000_000);
adPlaybackState =
ImaUtil.expandAdGroupPlaceholder(
@@ -594,7 +592,7 @@ public class ImaUtilTest {
AdPlaybackState.NONE,
/* fromPositionUs= */ 0,
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ 30_000_000);
+ /* adDurationsUs= */ 30_000_000);
adPlaybackState =
ImaUtil.expandAdGroupPlaceholder(
@@ -619,7 +617,7 @@ public class ImaUtilTest {
AdPlaybackState.NONE,
/* fromPositionUs= */ 0,
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ 30_000_000);
+ /* adDurationsUs= */ 30_000_000);
adPlaybackState =
ImaUtil.expandAdGroupPlaceholder(
@@ -644,7 +642,7 @@ public class ImaUtilTest {
AdPlaybackState.NONE,
/* fromPositionUs= */ 0,
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ 30_000_000);
+ /* adDurationsUs= */ 30_000_000);
adPlaybackState =
ImaUtil.expandAdGroupPlaceholder(
@@ -667,7 +665,7 @@ public class ImaUtilTest {
AdPlaybackState.NONE,
/* fromPositionUs= */ 0,
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ 10_000_001);
+ /* adDurationsUs= */ 10_000_001);
adPlaybackState =
ImaUtil.expandAdGroupPlaceholder(
@@ -690,7 +688,7 @@ public class ImaUtilTest {
AdPlaybackState.NONE,
/* fromPositionUs= */ 0,
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ 30_000_000);
+ /* adDurationsUs= */ 30_000_000);
adPlaybackState =
ImaUtil.expandAdGroupPlaceholder(
@@ -714,7 +712,7 @@ public class ImaUtilTest {
AdPlaybackState.NONE,
/* fromPositionUs= */ 0,
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ 10_000_000,
+ /* adDurationsUs= */ 10_000_000,
20_000_000,
0);
@@ -739,7 +737,7 @@ public class ImaUtilTest {
AdPlaybackState.NONE,
/* fromPositionUs= */ 0,
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ 0,
+ /* adDurationsUs= */ 0,
10_000_000,
20_000_000);
@@ -764,7 +762,7 @@ public class ImaUtilTest {
AdPlaybackState.NONE,
/* fromPositionUs= */ 0,
/* contentResumeOffsetUs= */ 0,
- /* adDurationsUs...= */ 5_000_000,
+ /* adDurationsUs= */ 5_000_000,
10_000_000,
20_000_000);
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/DefaultExtractorsFactory.java b/libraries/extractor/src/main/java/androidx/media3/extractor/DefaultExtractorsFactory.java
index 0b4e9da76d..8f53f050f5 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/DefaultExtractorsFactory.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/DefaultExtractorsFactory.java
@@ -449,7 +449,9 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
@Nullable
private static Constructor extends Extractor> getFlacExtractorConstructor()
- throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException,
+ throws ClassNotFoundException,
+ NoSuchMethodException,
+ InvocationTargetException,
IllegalAccessException {
@SuppressWarnings("nullness:argument")
boolean isFlacNativeLibraryAvailable =
@@ -470,7 +472,9 @@ public final class DefaultExtractorsFactory implements ExtractorsFactory {
public interface ConstructorSupplier {
@Nullable
Constructor extends Extractor> getConstructor()
- throws InvocationTargetException, IllegalAccessException, NoSuchMethodException,
+ throws InvocationTargetException,
+ IllegalAccessException,
+ NoSuchMethodException,
ClassNotFoundException;
}
diff --git a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java
index 800c601059..a4f1dfb794 100644
--- a/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java
+++ b/libraries/extractor/src/main/java/androidx/media3/extractor/mp4/FragmentedMp4Extractor.java
@@ -656,7 +656,7 @@ public class FragmentedMp4Extractor implements Extractor {
}
byte[] messageData = new byte[atom.bytesLeft()];
- atom.readBytes(messageData, /*offset=*/ 0, atom.bytesLeft());
+ atom.readBytes(messageData, /* offset= */ 0, atom.bytesLeft());
EventMessage eventMessage = new EventMessage(schemeIdUri, value, durationMs, id, messageData);
ParsableByteArray encodedEventMessage =
new ParsableByteArray(eventMessageEncoder.encode(eventMessage));
diff --git a/libraries/session/src/main/java/androidx/media3/session/PlayerInfo.java b/libraries/session/src/main/java/androidx/media3/session/PlayerInfo.java
index c1b67c6207..c7df3c9571 100644
--- a/libraries/session/src/main/java/androidx/media3/session/PlayerInfo.java
+++ b/libraries/session/src/main/java/androidx/media3/session/PlayerInfo.java
@@ -376,7 +376,7 @@ import java.lang.annotation.Target;
DeviceInfo.UNKNOWN,
/* deviceVolume= */ 0,
/* deviceMuted= */ false,
- /* playWhenReady = */ false,
+ /* playWhenReady= */ false,
PLAY_WHEN_READY_CHANGE_REASON_USER_REQUEST,
PLAYBACK_SUPPRESSION_REASON_NONE,
STATE_IDLE,
diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeAdaptiveMediaPeriod.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeAdaptiveMediaPeriod.java
index d104d00fb3..ff73d7431e 100644
--- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeAdaptiveMediaPeriod.java
+++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeAdaptiveMediaPeriod.java
@@ -109,7 +109,7 @@ public class FakeAdaptiveMediaPeriod
C.SELECTION_REASON_UNKNOWN,
/* trackSelectionData= */ null,
/* mediaStartTimeUs= */ 0,
- /* mediaEndTimeUs = */ C.TIME_UNSET);
+ /* mediaEndTimeUs= */ C.TIME_UNSET);
this.callback = callback;
prepared = true;
Util.castNonNull(this.callback).onPrepared(this);
@@ -128,7 +128,7 @@ public class FakeAdaptiveMediaPeriod
C.SELECTION_REASON_UNKNOWN,
/* trackSelectionData= */ null,
/* mediaStartTimeUs= */ 0,
- /* mediaEndTimeUs = */ C.TIME_UNSET);
+ /* mediaEndTimeUs= */ C.TIME_UNSET);
}
@Override
diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaPeriod.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaPeriod.java
index cd804fe5fe..858a67f178 100644
--- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaPeriod.java
+++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaPeriod.java
@@ -234,7 +234,7 @@ public class FakeMediaPeriod implements MediaPeriod {
C.SELECTION_REASON_UNKNOWN,
/* trackSelectionData= */ null,
/* mediaStartTimeUs= */ 0,
- /* mediaEndTimeUs = */ C.TIME_UNSET);
+ /* mediaEndTimeUs= */ C.TIME_UNSET);
prepareCallback = callback;
if (deferOnPrepared) {
playerHandler = Util.createHandlerForCurrentLooper();
@@ -418,7 +418,7 @@ public class FakeMediaPeriod implements MediaPeriod {
C.SELECTION_REASON_UNKNOWN,
/* trackSelectionData= */ null,
/* mediaStartTimeUs= */ 0,
- /* mediaEndTimeUs = */ C.TIME_UNSET);
+ /* mediaEndTimeUs= */ C.TIME_UNSET);
}
private boolean isLoadingFinished() {
diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaSource.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaSource.java
index c1c206ebf1..f72c34c1f4 100644
--- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaSource.java
+++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeMediaSource.java
@@ -389,7 +389,7 @@ public class FakeMediaSource extends BaseMediaSource {
C.SELECTION_REASON_UNKNOWN,
/* trackSelectionData= */ null,
/* mediaStartTimeMs= */ C.TIME_UNSET,
- /* mediaEndTimeMs = */ C.TIME_UNSET);
+ /* mediaEndTimeMs= */ C.TIME_UNSET);
long elapsedRealTimeMs = SystemClock.elapsedRealtime();
MediaSourceEventListener.EventDispatcher eventDispatcher =
createEventDispatcher(/* mediaPeriodId= */ null);
diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeTrackSelector.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeTrackSelector.java
index 1fa7bf119c..1d2f586227 100644
--- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeTrackSelector.java
+++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/FakeTrackSelector.java
@@ -69,7 +69,7 @@ public class FakeTrackSelector extends DefaultTrackSelector {
boolean hasTracks = trackGroupArray.length > 0;
definitions[i] =
hasTracks
- ? new ExoTrackSelection.Definition(trackGroupArray.get(0), /* tracks...= */ 0)
+ ? new ExoTrackSelection.Definition(trackGroupArray.get(0), /* tracks= */ 0)
: null;
}
return definitions;
diff --git a/libraries/test_utils/src/test/java/androidx/media3/test/utils/FakeClockTest.java b/libraries/test_utils/src/test/java/androidx/media3/test/utils/FakeClockTest.java
index 393ce98408..b2576d0fcd 100644
--- a/libraries/test_utils/src/test/java/androidx/media3/test/utils/FakeClockTest.java
+++ b/libraries/test_utils/src/test/java/androidx/media3/test/utils/FakeClockTest.java
@@ -82,17 +82,17 @@ public final class FakeClockTest {
handler.obtainMessage(/* what= */ 2, /* obj= */ testObject).sendToTarget();
handler.obtainMessage(/* what= */ 3, /* arg1= */ 99, /* arg2= */ 44).sendToTarget();
handler
- .obtainMessage(/* what= */ 4, /* arg1= */ 88, /* arg2= */ 33, /* obj=*/ testObject)
+ .obtainMessage(/* what= */ 4, /* arg1= */ 88, /* arg2= */ 33, /* obj= */ testObject)
.sendToTarget();
ShadowLooper.idleMainLooper();
shadowOf(handler.getLooper()).idle();
assertThat(callback.messages)
.containsExactly(
- new MessageData(/* what= */ 1, /* arg1= */ 0, /* arg2= */ 0, /* obj=*/ null),
- new MessageData(/* what= */ 2, /* arg1= */ 0, /* arg2= */ 0, /* obj=*/ testObject),
- new MessageData(/* what= */ 3, /* arg1= */ 99, /* arg2= */ 44, /* obj=*/ null),
- new MessageData(/* what= */ 4, /* arg1= */ 88, /* arg2= */ 33, /* obj=*/ testObject))
+ new MessageData(/* what= */ 1, /* arg1= */ 0, /* arg2= */ 0, /* obj= */ null),
+ new MessageData(/* what= */ 2, /* arg1= */ 0, /* arg2= */ 0, /* obj= */ testObject),
+ new MessageData(/* what= */ 3, /* arg1= */ 99, /* arg2= */ 44, /* obj= */ null),
+ new MessageData(/* what= */ 4, /* arg1= */ 88, /* arg2= */ 33, /* obj= */ testObject))
.inOrder();
}
@@ -113,8 +113,8 @@ public final class FakeClockTest {
assertThat(callback.messages)
.containsExactly(
- new MessageData(/* what= */ 1, /* arg1= */ 0, /* arg2= */ 0, /* obj=*/ null),
- new MessageData(/* what= */ 4, /* arg1= */ 0, /* arg2= */ 0, /* obj=*/ null))
+ new MessageData(/* what= */ 1, /* arg1= */ 0, /* arg2= */ 0, /* obj= */ null),
+ new MessageData(/* what= */ 4, /* arg1= */ 0, /* arg2= */ 0, /* obj= */ null))
.inOrder();
fakeClock.advanceTime(50);
@@ -122,14 +122,14 @@ public final class FakeClockTest {
assertThat(callback.messages).hasSize(3);
assertThat(Iterables.getLast(callback.messages))
- .isEqualTo(new MessageData(/* what= */ 3, /* arg1= */ 0, /* arg2= */ 0, /* obj=*/ null));
+ .isEqualTo(new MessageData(/* what= */ 3, /* arg1= */ 0, /* arg2= */ 0, /* obj= */ null));
fakeClock.advanceTime(50);
shadowOf(handler.getLooper()).idle();
assertThat(callback.messages).hasSize(4);
assertThat(Iterables.getLast(callback.messages))
- .isEqualTo(new MessageData(/* what= */ 2, /* arg1= */ 0, /* arg2= */ 0, /* obj=*/ null));
+ .isEqualTo(new MessageData(/* what= */ 2, /* arg1= */ 0, /* arg2= */ 0, /* obj= */ null));
}
@Test
@@ -149,10 +149,10 @@ public final class FakeClockTest {
assertThat(callback.messages)
.containsExactly(
- new MessageData(/* what= */ 3, /* arg1= */ 0, /* arg2= */ 0, /* obj=*/ null),
- new MessageData(/* what= */ 2, /* arg1= */ 0, /* arg2= */ 0, /* obj=*/ null),
- new MessageData(/* what= */ 1, /* arg1= */ 0, /* arg2= */ 0, /* obj=*/ null),
- new MessageData(/* what= */ 4, /* arg1= */ 0, /* arg2= */ 0, /* obj=*/ null))
+ new MessageData(/* what= */ 3, /* arg1= */ 0, /* arg2= */ 0, /* obj= */ null),
+ new MessageData(/* what= */ 2, /* arg1= */ 0, /* arg2= */ 0, /* obj= */ null),
+ new MessageData(/* what= */ 1, /* arg1= */ 0, /* arg2= */ 0, /* obj= */ null),
+ new MessageData(/* what= */ 4, /* arg1= */ 0, /* arg2= */ 0, /* obj= */ null))
.inOrder();
}
@@ -223,14 +223,14 @@ public final class FakeClockTest {
assertThat(callback.messages)
.containsExactly(
- new MessageData(/* what= */ 3, /* arg1= */ 0, /* arg2= */ 0, /* obj=*/ null));
+ new MessageData(/* what= */ 3, /* arg1= */ 0, /* arg2= */ 0, /* obj= */ null));
assertThat(testRunnable1.hasRun).isTrue();
assertThat(testRunnable2.hasRun).isTrue();
// Assert that message with same "what" on other handler wasn't removed.
assertThat(otherCallback.messages)
.containsExactly(
- new MessageData(/* what= */ 2, /* arg1= */ 0, /* arg2= */ 0, /* obj=*/ null));
+ new MessageData(/* what= */ 2, /* arg1= */ 0, /* arg2= */ 0, /* obj= */ null));
}
@Test
@@ -266,7 +266,7 @@ public final class FakeClockTest {
// Assert that message on other handler wasn't removed.
assertThat(otherCallback.messages)
.containsExactly(
- new MessageData(/* what= */ 1, /* arg1= */ 0, /* arg2= */ 0, /* obj=*/ null));
+ new MessageData(/* what= */ 1, /* arg1= */ 0, /* arg2= */ 0, /* obj= */ null));
}
@Test
diff --git a/libraries/test_utils/src/test/java/androidx/media3/test/utils/FakeTimelineTest.java b/libraries/test_utils/src/test/java/androidx/media3/test/utils/FakeTimelineTest.java
index 9d03c10dd1..9e79f13261 100644
--- a/libraries/test_utils/src/test/java/androidx/media3/test/utils/FakeTimelineTest.java
+++ b/libraries/test_utils/src/test/java/androidx/media3/test/utils/FakeTimelineTest.java
@@ -39,7 +39,7 @@ public class FakeTimelineTest {
FakeTimeline.createMultiPeriodAdTimeline(
windowId,
numberOfPlayedAds,
- /* isAdPeriodFlags...= */ true,
+ /* isAdPeriodFlags= */ true,
false,
true,
true,
@@ -94,7 +94,7 @@ public class FakeTimelineTest {
FakeTimeline.createMultiPeriodAdTimeline(
/* windowId= */ new Object(),
/* numberOfPlayedAds= */ 0,
- /* isAdPeriodFlags...= */ false,
+ /* isAdPeriodFlags= */ false,
true,
true,
false);
diff --git a/libraries/ui_leanback/src/main/java/androidx/media3/ui/leanback/LeanbackPlayerAdapter.java b/libraries/ui_leanback/src/main/java/androidx/media3/ui/leanback/LeanbackPlayerAdapter.java
index b111890b8a..0e6e71e517 100644
--- a/libraries/ui_leanback/src/main/java/androidx/media3/ui/leanback/LeanbackPlayerAdapter.java
+++ b/libraries/ui_leanback/src/main/java/androidx/media3/ui/leanback/LeanbackPlayerAdapter.java
@@ -266,7 +266,7 @@ public final class LeanbackPlayerAdapter extends PlayerAdapter implements Runnab
// int arguments (int what, int extra). Since PlaybackException defines a single error
// code, we pass 0 as the extra.
context.getString(
- R.string.lb_media_player_error, /* formatArgs...= */ error.errorCode, 0));
+ R.string.lb_media_player_error, /* formatArgs= */ error.errorCode, 0));
}
}