/* * 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 com.danxx.mdplayer.widget.media; import android.graphics.SurfaceTexture; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.view.Surface; import android.view.SurfaceHolder; import android.view.View; import tv.danmaku.ijk.media.player.IMediaPlayer; public interface IRenderView { int AR_ASPECT_FIT_PARENT = 0; // without clip int AR_ASPECT_FILL_PARENT = 1; // may clip int AR_ASPECT_WRAP_CONTENT = 2; int AR_MATCH_PARENT = 3; int AR_16_9_FIT_PARENT = 4; int AR_4_3_FIT_PARENT = 5; View getView(); boolean shouldWaitForResize(); void setVideoSize(int videoWidth, int videoHeight); void setVideoSampleAspectRatio(int videoSarNum, int videoSarDen); void setVideoRotation(int degree); void setAspectRatio(int aspectRatio); void addRenderCallback(@NonNull IRenderCallback callback); void removeRenderCallback(@NonNull IRenderCallback callback); interface ISurfaceHolder { void bindToMediaPlayer(IMediaPlayer mp); @NonNull IRenderView getRenderView(); @Nullable SurfaceHolder getSurfaceHolder(); @Nullable Surface openSurface(); @Nullable SurfaceTexture getSurfaceTexture(); } interface IRenderCallback { /** * @param holder * @param width could be 0 * @param height could be 0 */ void onSurfaceCreated(@NonNull ISurfaceHolder holder, int width, int height); /** * @param holder * @param format could be 0 * @param width * @param height */ void onSurfaceChanged(@NonNull ISurfaceHolder holder, int format, int width, int height); void onSurfaceDestroyed(@NonNull ISurfaceHolder holder); } }