diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 80fe7f8e3b..ae2d288e4c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -21,11 +21,6 @@ * Extrapolate current position during sleep with offload scheduling. * Add `Renderer.release()` and `AudioSink.release()` for releasing the resources at the end of player's lifecycle. - * Listen to audio capabilities changes in `DefaultAudioSink`. Add a - required parameter `context` in the constructor of `DefaultAudioSink`, - with which the `DefaultAudioSink` will register as the listener to the - `AudioCapabilitiesReceiver` and update its `audioCapabilities` property - when informed with a capabilities change. * DRM: * Reduce the visibility of several internal-only methods on `DefaultDrmSession` that aren't expected to be called from outside the diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/DefaultRenderersFactory.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/DefaultRenderersFactory.java index f3443e1307..02a77a96e4 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/DefaultRenderersFactory.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/DefaultRenderersFactory.java @@ -26,6 +26,7 @@ import androidx.annotation.IntDef; import androidx.annotation.Nullable; import androidx.media3.common.util.Log; import androidx.media3.common.util.UnstableApi; +import androidx.media3.exoplayer.audio.AudioCapabilities; import androidx.media3.exoplayer.audio.AudioRendererEventListener; import androidx.media3.exoplayer.audio.AudioSink; import androidx.media3.exoplayer.audio.DefaultAudioSink; @@ -648,7 +649,8 @@ public class DefaultRenderersFactory implements RenderersFactory { boolean enableFloatOutput, boolean enableAudioTrackPlaybackParams, boolean enableOffload) { - return new DefaultAudioSink.Builder(context) + return new DefaultAudioSink.Builder() + .setAudioCapabilities(AudioCapabilities.getCapabilities(context)) .setEnableFloatOutput(enableFloatOutput) .setEnableAudioTrackPlaybackParams(enableAudioTrackPlaybackParams) .setOffloadMode( diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java index bf5828560d..ae2a4b27d7 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/DefaultAudioSink.java @@ -24,7 +24,6 @@ import static java.lang.Math.min; import static java.lang.annotation.ElementType.TYPE_USE; import android.annotation.SuppressLint; -import android.content.Context; import android.media.AudioDeviceInfo; import android.media.AudioFormat; import android.media.AudioManager; @@ -228,7 +227,6 @@ public final class DefaultAudioSink implements AudioSink { /** A builder to create {@link DefaultAudioSink} instances. */ public static final class Builder { - @Nullable private final Context context; private AudioCapabilities audioCapabilities; @Nullable private androidx.media3.common.audio.AudioProcessorChain audioProcessorChain; private boolean enableFloatOutput; @@ -237,34 +235,19 @@ public final class DefaultAudioSink implements AudioSink { AudioTrackBufferSizeProvider audioTrackBufferSizeProvider; @Nullable AudioOffloadListener audioOffloadListener; - /** - * @deprecated Use {@link #Builder(Context)} instead. - */ - @Deprecated + /** Creates a new builder. */ public Builder() { - this(/* context= */ null); - } - - /** - * Creates a new builder. - * - * @param context The {@link Context}. - */ - public Builder(@Nullable Context context) { - this.context = context; audioCapabilities = DEFAULT_AUDIO_CAPABILITIES; offloadMode = OFFLOAD_MODE_DISABLED; audioTrackBufferSizeProvider = AudioTrackBufferSizeProvider.DEFAULT; } /** - * @deprecated The {@linkplain AudioCapabilities audio capabilities} set to the {@linkplain - * Builder builder} will be effective for the {@link DefaultAudioSink} only in the absence - * of {@linkplain Context context}. If the {@code Context} is {@code null} and the {@code - * audioCapabilities} is not set to the {@code Builder}, the default capabilities (no - * encoded audio passthrough support) should be assumed. + * Sets audio capabilities for playback on this device. May be {@code null} if the default + * capabilities (no encoded audio passthrough support) should be assumed. + * + *
Default is {@link AudioCapabilities#DEFAULT_AUDIO_CAPABILITIES}.
*/
- @Deprecated
@CanIgnoreReturnValue
public Builder setAudioCapabilities(AudioCapabilities audioCapabilities) {
checkNotNull(audioCapabilities);
@@ -500,7 +483,6 @@ public final class DefaultAudioSink implements AudioSink {
private final PendingExceptionHolder