diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/SpeedChangingAudioProcessor.java b/libraries/common/src/main/java/androidx/media3/common/audio/SpeedChangingAudioProcessor.java similarity index 93% rename from libraries/transformer/src/main/java/androidx/media3/transformer/SpeedChangingAudioProcessor.java rename to libraries/common/src/main/java/androidx/media3/common/audio/SpeedChangingAudioProcessor.java index 466a7717b4..13e8d1011a 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/SpeedChangingAudioProcessor.java +++ b/libraries/common/src/main/java/androidx/media3/common/audio/SpeedChangingAudioProcessor.java @@ -14,14 +14,12 @@ * limitations under the License. */ -package androidx.media3.transformer; +package androidx.media3.common.audio; import static java.lang.Math.min; import androidx.media3.common.C; -import androidx.media3.common.audio.AudioProcessor; -import androidx.media3.common.audio.BaseAudioProcessor; -import androidx.media3.common.audio.SonicAudioProcessor; +import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.Util; import com.google.errorprone.annotations.CanIgnoreReturnValue; import java.nio.ByteBuffer; @@ -29,9 +27,10 @@ import java.nio.ByteBuffer; /** * An {@link AudioProcessor} that changes the speed of audio samples depending on their timestamp. */ -// TODO(b/198772621): Consider making the processor inactive and skipping it in the processor chain +// TODO(b/288221200): Consider making the processor inactive and skipping it in the processor chain // when speed is 1. -/* package */ final class SpeedChangingAudioProcessor extends BaseAudioProcessor { +@UnstableApi +public final class SpeedChangingAudioProcessor extends BaseAudioProcessor { /** The speed provider that provides the speed for each timestamp. */ private final SpeedProvider speedProvider; diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/SpeedProvider.java b/libraries/common/src/main/java/androidx/media3/common/audio/SpeedProvider.java similarity index 83% rename from libraries/transformer/src/main/java/androidx/media3/transformer/SpeedProvider.java rename to libraries/common/src/main/java/androidx/media3/common/audio/SpeedProvider.java index dc85d90023..ba55abf513 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/SpeedProvider.java +++ b/libraries/common/src/main/java/androidx/media3/common/audio/SpeedProvider.java @@ -13,18 +13,20 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package androidx.media3.transformer; +package androidx.media3.common.audio; import androidx.media3.common.C; +import androidx.media3.common.util.UnstableApi; /** A custom interface that determines the speed for media at specific timestamps. */ -/* package */ interface SpeedProvider { +@UnstableApi +public interface SpeedProvider { /** - * Provides the speed that the media should be played at, based on the timeUs. + * Returns the media speed at the provided timestamp. * * @param timeUs The timestamp of the media. - * @return The speed that the media should be played at, based on the timeUs. + * @return The speed that the media should be played at. */ float getSpeed(long timeUs); diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/SpeedChangingAudioProcessorTest.java b/libraries/common/src/test/java/androidx/media3/common/audio/SpeedChangingAudioProcessorTest.java similarity index 99% rename from libraries/transformer/src/test/java/androidx/media3/transformer/SpeedChangingAudioProcessorTest.java rename to libraries/common/src/test/java/androidx/media3/common/audio/SpeedChangingAudioProcessorTest.java index f10531b0f8..6e6343d652 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/SpeedChangingAudioProcessorTest.java +++ b/libraries/common/src/test/java/androidx/media3/common/audio/SpeedChangingAudioProcessorTest.java @@ -13,14 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package androidx.media3.transformer; +package androidx.media3.common.audio; import static androidx.media3.common.audio.AudioProcessor.EMPTY_BUFFER; import static androidx.media3.common.util.Assertions.checkArgument; import static com.google.common.truth.Truth.assertThat; import androidx.media3.common.C; -import androidx.media3.common.audio.AudioProcessor; import androidx.media3.common.util.Util; import androidx.test.ext.junit.runners.AndroidJUnit4; import java.nio.ByteBuffer; diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/AudioSamplePipeline.java b/libraries/transformer/src/main/java/androidx/media3/transformer/AudioSamplePipeline.java index 095cff9cf1..05d2ff14ff 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/AudioSamplePipeline.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/AudioSamplePipeline.java @@ -30,6 +30,7 @@ import androidx.media3.common.MimeTypes; import androidx.media3.common.audio.AudioProcessingPipeline; import androidx.media3.common.audio.AudioProcessor; import androidx.media3.common.audio.AudioProcessor.AudioFormat; +import androidx.media3.common.audio.SpeedChangingAudioProcessor; import androidx.media3.common.util.Util; import androidx.media3.decoder.DecoderInputBuffer; import com.google.common.collect.ImmutableList; diff --git a/libraries/transformer/src/main/java/androidx/media3/transformer/SegmentSpeedProvider.java b/libraries/transformer/src/main/java/androidx/media3/transformer/SegmentSpeedProvider.java index 9ab8b7a01a..a6c1dae1f5 100644 --- a/libraries/transformer/src/main/java/androidx/media3/transformer/SegmentSpeedProvider.java +++ b/libraries/transformer/src/main/java/androidx/media3/transformer/SegmentSpeedProvider.java @@ -21,6 +21,7 @@ import static androidx.media3.extractor.metadata.mp4.SlowMotionData.Segment.BY_S import androidx.annotation.Nullable; import androidx.media3.common.C; import androidx.media3.common.Metadata; +import androidx.media3.common.audio.SpeedProvider; import androidx.media3.common.util.Util; import androidx.media3.extractor.metadata.mp4.SlowMotionData; import androidx.media3.extractor.metadata.mp4.SlowMotionData.Segment;