From 70e7121a5115d665aa0ea72bff575d23e5fc04ce Mon Sep 17 00:00:00 2001 From: tonihei Date: Tue, 15 Apr 2025 07:01:01 -0700 Subject: [PATCH] Make some audio processors public ChannelMappingAudioProcessor, TrimmingAudioProcessor and ToFloatPcmAudioProcessor are currently package-private even though they might be useful in custom audio processing chains or custom version of audio sinks. Issue: androidx/media#2339 PiperOrigin-RevId: 747857815 --- RELEASENOTES.md | 3 +++ .../media3/exoplayer/audio/ChannelMappingAudioProcessor.java | 4 +++- .../media3/exoplayer/audio/ToFloatPcmAudioProcessor.java | 4 +++- .../media3/exoplayer/audio/TrimmingAudioProcessor.java | 4 +++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 8cd53af055..3d3d544107 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -23,6 +23,9 @@ * DataSource: * Audio: * Allow constant power upmixing/downmixing in DefaultAudioMixer. + * Make `ChannelMappingAudioProcessor`, `TrimmingAudioProcessor` and + `ToFloatPcmAudioProcessor` public + ([#2339](https://github.com/androidx/media/issues/2339)). * Video: * Add experimental `ExoPlayer` API to include the `MediaCodec.BUFFER_FLAG_DECODE_ONLY` flag when queuing decode-only input diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/ChannelMappingAudioProcessor.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/ChannelMappingAudioProcessor.java index a1483e86ec..77737a2605 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/ChannelMappingAudioProcessor.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/ChannelMappingAudioProcessor.java @@ -23,6 +23,7 @@ import androidx.media3.common.Format; import androidx.media3.common.audio.AudioProcessor; import androidx.media3.common.audio.BaseAudioProcessor; import androidx.media3.common.util.Assertions; +import androidx.media3.common.util.UnstableApi; import java.nio.ByteBuffer; import java.util.Arrays; @@ -30,7 +31,8 @@ import java.util.Arrays; * An {@link AudioProcessor} that applies a mapping from input channels onto specified output * channels. This can be used to reorder, duplicate or discard channels. */ -/* package */ final class ChannelMappingAudioProcessor extends BaseAudioProcessor { +@UnstableApi +public final class ChannelMappingAudioProcessor extends BaseAudioProcessor { @Nullable private int[] pendingOutputChannels; @Nullable private int[] outputChannels; diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/ToFloatPcmAudioProcessor.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/ToFloatPcmAudioProcessor.java index 0fe8259273..c5aaaeb562 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/ToFloatPcmAudioProcessor.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/ToFloatPcmAudioProcessor.java @@ -19,6 +19,7 @@ import androidx.media3.common.C; import androidx.media3.common.Format; import androidx.media3.common.audio.AudioProcessor; import androidx.media3.common.audio.BaseAudioProcessor; +import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.Util; import java.nio.ByteBuffer; @@ -34,7 +35,8 @@ import java.nio.ByteBuffer; *
  • {@link C#ENCODING_PCM_FLOAT} ({@link #isActive()} will return {@code false}) * */ -/* package */ final class ToFloatPcmAudioProcessor extends BaseAudioProcessor { +@UnstableApi +public final class ToFloatPcmAudioProcessor extends BaseAudioProcessor { private static final int FLOAT_NAN_AS_INT = Float.floatToIntBits(Float.NaN); private static final double PCM_32_BIT_INT_TO_PCM_32_BIT_FLOAT_FACTOR = 1.0 / 0x7FFFFFFF; diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/TrimmingAudioProcessor.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/TrimmingAudioProcessor.java index 2d01ec0bbb..e67e272a43 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/TrimmingAudioProcessor.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/audio/TrimmingAudioProcessor.java @@ -20,11 +20,13 @@ import static java.lang.Math.min; import androidx.media3.common.C; import androidx.media3.common.Format; import androidx.media3.common.audio.BaseAudioProcessor; +import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.Util; import java.nio.ByteBuffer; /** Audio processor for trimming samples from the start/end of data. */ -/* package */ final class TrimmingAudioProcessor extends BaseAudioProcessor { +@UnstableApi +public final class TrimmingAudioProcessor extends BaseAudioProcessor { private int trimStartFrames; private int trimEndFrames;