/*
* Copyright (C) 2015 Zhang Rui <bbcallen@gmail.com>
*
* 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 tv.danmaku.ijk.media.player;
import android.annotation.TargetApi;
import android.content.Context;
import android.net.Uri;
import android.os.Build;
import android.view.Surface;
import android.view.SurfaceHolder;
import java.io.FileDescriptor;
import java.io.IOException;
import java.util.Map;
import tv.danmaku.ijk.media.player.misc.IMediaDataSource;
import tv.danmaku.ijk.media.player.misc.ITrackInfo;
public class MediaPlayerProxy implements IMediaPlayer {
protected final IMediaPlayer mBackEndMediaPlayer;
public MediaPlayerProxy(IMediaPlayer backEndMediaPlayer) {
mBackEndMediaPlayer = backEndMediaPlayer;
}
public IMediaPlayer getInternalMediaPlayer() {
return mBackEndMediaPlayer;
}
@Override
public void setDisplay(SurfaceHolder sh) {
mBackEndMediaPlayer.setDisplay(sh);
}
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
@Override
public void setSurface(Surface surface) {
mBackEndMediaPlayer.setSurface(surface);
}
@Override
public void setDataSource(Context context, Uri uri)
throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
mBackEndMediaPlayer.setDataSource(context, uri);
}
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
@Override
public void setDataSource(Context context, Uri uri, Map<String, String> headers)
throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
mBackEndMediaPlayer.setDataSource(context, uri, headers);
}
@Override
public void setDataSource(FileDescriptor fd)
throws IOException, IllegalArgumentException, IllegalStateException {
mBackEndMediaPlayer.setDataSource(fd);
}
@Override
public void setDataSource(String path) throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
mBackEndMediaPlayer.setDataSource(path);
}
@Override
public void setDataSource(IMediaDataSource mediaDataSource) {
mBackEndMediaPlayer.setDataSource(mediaDataSource);
}
@Override
public String getDataSource() {
return mBackEndMediaPlayer.getDataSource();
}
@Override
public void prepareAsync() throws IllegalStateException {
mBackEndMediaPlayer.prepareAsync();
}
@Override
public void start() throws IllegalStateException {
mBackEndMediaPlayer.start();
}
@Override
public void stop() throws IllegalStateException {
mBackEndMediaPlayer.stop();
}
@Override
public void pause() throws IllegalStateException {
mBackEndMediaPlayer.pause();
}
@Override
public void setScreenOnWhilePlaying(boolean screenOn) {
mBackEndMediaPlayer.setScreenOnWhilePlaying(screenOn);
}
@Override
public int getVideoWidth() {
return mBackEndMediaPlayer.getVideoWidth();
}
@Override
public int getVideoHeight() {
return mBackEndMediaPlayer.getVideoHeight();
}
@Override
public boolean isPlaying() {
return mBackEndMediaPlayer.isPlaying();
}
@Override
public void seekTo(long msec) throws IllegalStateException {
mBackEndMediaPlayer.seekTo(msec);
}
@Override
public long getCurrentPosition() {
return mBackEndMediaPlayer.getCurrentPosition();
}
@Override
public long getDuration() {
return mBackEndMediaPlayer.getDuration();
}
@Override
public void release() {
mBackEndMediaPlayer.release();
}
@Override
public void reset() {
mBackEndMediaPlayer.reset();
}
@Override
public void setVolume(float leftVolume, float rightVolume) {
mBackEndMediaPlayer.setVolume(leftVolume, rightVolume);
}
@Override
public int getAudioSessionId() {
return mBackEndMediaPlayer.getAudioSessionId();
}
@Override
public MediaInfo getMediaInfo() {
return mBackEndMediaPlayer.getMediaInfo();
}
@Override
public void setLogEnabled(boolean enable) {
}
@Override
public boolean isPlayable() {
return false;
}
@Override
public void setOnPreparedListener(OnPreparedListener listener) {
if (listener != null) {
final OnPreparedListener finalListener = listener;
mBackEndMediaPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(IMediaPlayer mp) {
finalListener.onPrepared(MediaPlayerProxy.this);
}
});
} else {
mBackEndMediaPlayer.setOnPreparedListener(null);
}
}
@Override
public void setOnCompletionListener(OnCompletionListener listener) {
if (listener != null) {
final OnCompletionListener finalListener = listener;
mBackEndMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(IMediaPlayer mp) {
finalListener.onCompletion(MediaPlayerProxy.this);
}
});
} else {
mBackEndMediaPlayer.setOnCompletionListener(null);
}
}
@Override
public void setOnBufferingUpdateListener(OnBufferingUpdateListener listener) {
if (listener != null) {
final OnBufferingUpdateListener finalListener = listener;
mBackEndMediaPlayer.setOnBufferingUpdateListener(new OnBufferingUpdateListener() {
@Override
public void onBufferingUpdate(IMediaPlayer mp, int percent) {
finalListener.onBufferingUpdate(MediaPlayerProxy.this, percent);
}
});
} else {
mBackEndMediaPlayer.setOnBufferingUpdateListener(null);
}
}
@Override
public void setOnSeekCompleteListener(OnSeekCompleteListener listener) {
if (listener != null) {
final OnSeekCompleteListener finalListener = listener;
mBackEndMediaPlayer.setOnSeekCompleteListener(new OnSeekCompleteListener() {
@Override
public void onSeekComplete(IMediaPlayer mp) {
finalListener.onSeekComplete(MediaPlayerProxy.this);
}
});
} else {
mBackEndMediaPlayer.setOnSeekCompleteListener(null);
}
}
@Override
public void setOnVideoSizeChangedListener(OnVideoSizeChangedListener listener) {
if (listener != null) {
final OnVideoSizeChangedListener finalListener = listener;
mBackEndMediaPlayer.setOnVideoSizeChangedListener(new OnVideoSizeChangedListener() {
@Override
public void onVideoSizeChanged(IMediaPlayer mp, int width, int height, int sar_num, int sar_den) {
finalListener.onVideoSizeChanged(MediaPlayerProxy.this, width, height, sar_num, sar_den);
}
});
} else {
mBackEndMediaPlayer.setOnVideoSizeChangedListener(null);
}
}
@Override
public void setOnErrorListener(OnErrorListener listener) {
if (listener != null) {
final OnErrorListener finalListener = listener;
mBackEndMediaPlayer.setOnErrorListener(new OnErrorListener() {
@Override
public boolean onError(IMediaPlayer mp, int what, int extra) {
return finalListener.onError(MediaPlayerProxy.this, what, extra);
}
});
} else {
mBackEndMediaPlayer.setOnErrorListener(null);
}
}
@Override
public void setOnInfoListener(OnInfoListener listener) {
if (listener != null) {
final OnInfoListener finalListener = listener;
mBackEndMediaPlayer.setOnInfoListener(new OnInfoListener() {
@Override
public boolean onInfo(IMediaPlayer mp, int what, int extra) {
return finalListener.onInfo(MediaPlayerProxy.this, what, extra);
}
});
} else {
mBackEndMediaPlayer.setOnInfoListener(null);
}
}
@Override
public void setAudioStreamType(int streamtype) {
mBackEndMediaPlayer.setAudioStreamType(streamtype);
}
@Override
public void setKeepInBackground(boolean keepInBackground) {
mBackEndMediaPlayer.setKeepInBackground(keepInBackground);
}
@Override
public int getVideoSarNum() {
return mBackEndMediaPlayer.getVideoSarNum();
}
@Override
public int getVideoSarDen() {
return mBackEndMediaPlayer.getVideoSarDen();
}
@Override
public void setWakeMode(Context context, int mode) {
mBackEndMediaPlayer.setWakeMode(context, mode);
}
@Override
public ITrackInfo[] getTrackInfo() {
return mBackEndMediaPlayer.getTrackInfo();
}
@Override
public void setLooping(boolean looping) {
mBackEndMediaPlayer.setLooping(looping);
}
@Override
public boolean isLooping() {
return mBackEndMediaPlayer.isLooping();
}
}