summaryrefslogtreecommitdiffstats
path: root/mobile/android/exoplayer2/src/main/java/org/mozilla/thirdparty/com/google/android/exoplayer2/audio/ForwardingAudioSink.java
diff options
context:
space:
mode:
Diffstat (limited to 'mobile/android/exoplayer2/src/main/java/org/mozilla/thirdparty/com/google/android/exoplayer2/audio/ForwardingAudioSink.java')
-rw-r--r--mobile/android/exoplayer2/src/main/java/org/mozilla/thirdparty/com/google/android/exoplayer2/audio/ForwardingAudioSink.java151
1 files changed, 151 insertions, 0 deletions
diff --git a/mobile/android/exoplayer2/src/main/java/org/mozilla/thirdparty/com/google/android/exoplayer2/audio/ForwardingAudioSink.java b/mobile/android/exoplayer2/src/main/java/org/mozilla/thirdparty/com/google/android/exoplayer2/audio/ForwardingAudioSink.java
new file mode 100644
index 0000000000..4e7f9d69f9
--- /dev/null
+++ b/mobile/android/exoplayer2/src/main/java/org/mozilla/thirdparty/com/google/android/exoplayer2/audio/ForwardingAudioSink.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2020 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 org.mozilla.thirdparty.com.google.android.exoplayer2.audio;
+
+import androidx.annotation.Nullable;
+import org.mozilla.thirdparty.com.google.android.exoplayer2.PlaybackParameters;
+import java.nio.ByteBuffer;
+
+/** An overridable {@link AudioSink} implementation forwarding all methods to another sink. */
+public class ForwardingAudioSink implements AudioSink {
+
+ private final AudioSink sink;
+
+ public ForwardingAudioSink(AudioSink sink) {
+ this.sink = sink;
+ }
+
+ @Override
+ public void setListener(Listener listener) {
+ sink.setListener(listener);
+ }
+
+ @Override
+ public boolean supportsOutput(int channelCount, int encoding) {
+ return sink.supportsOutput(channelCount, encoding);
+ }
+
+ @Override
+ public long getCurrentPositionUs(boolean sourceEnded) {
+ return sink.getCurrentPositionUs(sourceEnded);
+ }
+
+ @Override
+ public void configure(
+ int inputEncoding,
+ int inputChannelCount,
+ int inputSampleRate,
+ int specifiedBufferSize,
+ @Nullable int[] outputChannels,
+ int trimStartFrames,
+ int trimEndFrames)
+ throws ConfigurationException {
+ sink.configure(
+ inputEncoding,
+ inputChannelCount,
+ inputSampleRate,
+ specifiedBufferSize,
+ outputChannels,
+ trimStartFrames,
+ trimEndFrames);
+ }
+
+ @Override
+ public void play() {
+ sink.play();
+ }
+
+ @Override
+ public void handleDiscontinuity() {
+ sink.handleDiscontinuity();
+ }
+
+ @Override
+ public boolean handleBuffer(ByteBuffer buffer, long presentationTimeUs)
+ throws InitializationException, WriteException {
+ return sink.handleBuffer(buffer, presentationTimeUs);
+ }
+
+ @Override
+ public void playToEndOfStream() throws WriteException {
+ sink.playToEndOfStream();
+ }
+
+ @Override
+ public boolean isEnded() {
+ return sink.isEnded();
+ }
+
+ @Override
+ public boolean hasPendingData() {
+ return sink.hasPendingData();
+ }
+
+ @Override
+ public void setPlaybackParameters(PlaybackParameters playbackParameters) {
+ sink.setPlaybackParameters(playbackParameters);
+ }
+
+ @Override
+ public PlaybackParameters getPlaybackParameters() {
+ return sink.getPlaybackParameters();
+ }
+
+ @Override
+ public void setAudioAttributes(AudioAttributes audioAttributes) {
+ sink.setAudioAttributes(audioAttributes);
+ }
+
+ @Override
+ public void setAudioSessionId(int audioSessionId) {
+ sink.setAudioSessionId(audioSessionId);
+ }
+
+ @Override
+ public void setAuxEffectInfo(AuxEffectInfo auxEffectInfo) {
+ sink.setAuxEffectInfo(auxEffectInfo);
+ }
+
+ @Override
+ public void enableTunnelingV21(int tunnelingAudioSessionId) {
+ sink.enableTunnelingV21(tunnelingAudioSessionId);
+ }
+
+ @Override
+ public void disableTunneling() {
+ sink.disableTunneling();
+ }
+
+ @Override
+ public void setVolume(float volume) {
+ sink.setVolume(volume);
+ }
+
+ @Override
+ public void pause() {
+ sink.pause();
+ }
+
+ @Override
+ public void flush() {
+ sink.flush();
+ }
+
+ @Override
+ public void reset() {
+ sink.reset();
+ }
+}