/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.hangout; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import android.content.Context; import android.opengl.GLSurfaceView; import android.util.AttributeSet; /** * * @author sihai * */ public class VideoView extends GLSurfaceView { private final GCommNativeWrapper gcommNativeWrapper; private volatile boolean reinitializeRenderer; private volatile int requestID; public VideoView(Context context) { this(context, null); } public VideoView(Context context, AttributeSet attributeset) { super(context, attributeset); requestID = 0; gcommNativeWrapper = GCommApp.getInstance(getContext()).getGCommNativeWrapper(); setEGLContextClientVersion(2); setRenderer(new Renderer()); setRenderMode(0); onPause(); } public void setRequestID(int i) { if(i != requestID) { requestID = i; reinitializeRenderer = true; } } //================================================================================================================== // Inner class //================================================================================================================== private final class Renderer implements android.opengl.GLSurfaceView.Renderer { private boolean disabled; public final void onDrawFrame(GL10 gl10) { if(reinitializeRenderer) { boolean flag; if(!gcommNativeWrapper.initializeIncomingVideoRenderer(requestID)) flag = true; else flag = false; disabled = flag; if(disabled) Log.debug("initializeIncomingVideoRenderer failed. Rendering disabled"); reinitializeRenderer = false; } if(!disabled) gcommNativeWrapper.renderIncomingVideoFrame(requestID); } public final void onSurfaceChanged(GL10 gl10, int i, int j) { boolean flag; flag = true; if(reinitializeRenderer) { boolean flag1; if(!gcommNativeWrapper.initializeIncomingVideoRenderer(requestID)) flag1 = flag; else flag1 = false; disabled = flag1; if(disabled) Log.debug("initializeIncomingVideoRenderer failed. Rendering disabled"); reinitializeRenderer = false; } if(!disabled) { if(gcommNativeWrapper.setIncomingVideoRendererSurfaceSize(requestID, i, j)) flag = false; disabled = flag; if(disabled) Log.debug("setIncomingVideoRendererSurfaceSize failed. Rendering disabled"); } } public final void onSurfaceCreated(GL10 gl10, EGLConfig eglconfig) { boolean flag; if(!gcommNativeWrapper.initializeIncomingVideoRenderer(requestID)) flag = true; else flag = false; disabled = flag; if(disabled) Log.debug("initializeIncomingVideoRenderer failed. Rendering disabled"); } } }