aboutsummaryrefslogtreecommitdiffstats
path: root/src/test/com/jogamp/opengl/test/android/MovieSimpleActivity0.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/com/jogamp/opengl/test/android/MovieSimpleActivity0.java')
-rw-r--r--src/test/com/jogamp/opengl/test/android/MovieSimpleActivity0.java105
1 files changed, 72 insertions, 33 deletions
diff --git a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivity0.java b/src/test/com/jogamp/opengl/test/android/MovieSimpleActivity0.java
index 11babf187..b5a9ce580 100644
--- a/src/test/com/jogamp/opengl/test/android/MovieSimpleActivity0.java
+++ b/src/test/com/jogamp/opengl/test/android/MovieSimpleActivity0.java
@@ -27,24 +27,30 @@
*/
package com.jogamp.opengl.test.android;
-import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URI;
+import java.net.URISyntaxException;
import java.net.URLConnection;
import java.util.Arrays;
import javax.media.opengl.GLCapabilities;
import javax.media.opengl.GLProfile;
-import jogamp.newt.driver.android.AndroidWindow;
import jogamp.newt.driver.android.NewtBaseActivity;
import com.jogamp.common.util.IOUtil;
import com.jogamp.newt.NewtFactory;
+import com.jogamp.newt.Window;
import com.jogamp.newt.event.MouseAdapter;
import com.jogamp.newt.event.MouseEvent;
import com.jogamp.newt.opengl.GLWindow;
import com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieSimple;
import com.jogamp.opengl.util.Animator;
+import com.jogamp.opengl.util.av.GLMediaPlayer;
+import com.jogamp.opengl.util.av.GLMediaPlayer.GLMediaEventListener;
+import com.jogamp.opengl.util.av.GLMediaPlayer.StreamException;
+import com.jogamp.opengl.util.texture.TextureSequence.TextureFrame;
import android.os.Bundle;
import android.util.Log;
@@ -55,8 +61,8 @@ public class MovieSimpleActivity0 extends NewtBaseActivity {
MouseAdapter toFrontMouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
Object src = e.getSource();
- if(src instanceof AndroidWindow) {
- ((AndroidWindow)src).requestFocus(false);
+ if(src instanceof Window) {
+ ((Window)src).requestFocus(false);
}
} };
@@ -64,12 +70,12 @@ public class MovieSimpleActivity0 extends NewtBaseActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- String[] urls0 = new String[] {
+ final String[] streamLocs = new String[] {
System.getProperty("jnlp.media0_url2"),
System.getProperty("jnlp.media0_url1"),
System.getProperty("jnlp.media0_url0") };
- final URLConnection urlConnection0 = getResource(urls0, 0);
- if(null == urlConnection0) { throw new RuntimeException("no media reachable: "+Arrays.asList(urls0)); }
+ final URI streamLoc = getURI(streamLocs, 0, false);
+ if(null == streamLoc) { throw new RuntimeException("no media reachable: "+Arrays.asList(streamLocs)); }
// also initializes JOGL
final GLCapabilities capsMain = new GLCapabilities(GLProfile.getGL2ES2());
@@ -80,40 +86,73 @@ public class MovieSimpleActivity0 extends NewtBaseActivity {
final com.jogamp.newt.Screen scrn = NewtFactory.createScreen(dpy, 0);
scrn.addReference();
- try {
- final Animator animator = new Animator();
- setAnimator(animator);
-
- // Main
- final MovieSimple demoMain = new MovieSimple(urlConnection0);
- demoMain.setScaleOrig(true);
- final GLWindow glWindowMain = GLWindow.create(scrn, capsMain);
- glWindowMain.setFullscreen(true);
- setContentView(getWindow(), glWindowMain);
- glWindowMain.addGLEventListener(demoMain);
- animator.add(glWindowMain);
- glWindowMain.setVisible(true);
-
- animator.setUpdateFPSFrames(60, System.err);
- // animator.setUpdateFPSFrames(-1, null);
- animator.resetFPSCounter();
- } catch (IOException e) {
- e.printStackTrace();
- }
+ final Animator anim = new Animator();
+
+ // Main
+ final GLWindow glWindowMain = GLWindow.create(scrn, capsMain);
+ glWindowMain.setFullscreen(true);
+ setContentView(getWindow(), glWindowMain);
+ anim.add(glWindowMain);
+ glWindowMain.setVisible(true);
+
+ final MovieSimple demoMain = new MovieSimple(null);
+ demoMain.setScaleOrig(true);
+ final GLMediaPlayer mPlayer = demoMain.getGLMediaPlayer();
+ mPlayer.addEventListener( new GLMediaPlayer.GLMediaEventListener() {
+ @Override
+ public void newFrameAvailable(GLMediaPlayer ts, TextureFrame newFrame, long when) { }
+
+ @Override
+ public void attributesChanged(GLMediaPlayer mp, int event_mask, long when) {
+ System.err.println("MovieSimpleActivity0 AttributesChanges: events_mask 0x"+Integer.toHexString(event_mask)+", when "+when);
+ System.err.println("MovieSimpleActivity0 State: "+mp);
+ if( 0 != ( GLMediaEventListener.EVENT_CHANGE_INIT & event_mask ) ) {
+ glWindowMain.addGLEventListener(demoMain);
+ anim.setUpdateFPSFrames(60, System.err);
+ anim.resetFPSCounter();
+ }
+ if( 0 != ( ( GLMediaEventListener.EVENT_CHANGE_ERR | GLMediaEventListener.EVENT_CHANGE_EOS ) & event_mask ) ) {
+ final StreamException se = mPlayer.getStreamException();
+ if( null != se ) {
+ se.printStackTrace();
+ }
+ getActivity().finish();
+ }
+ }
+ });
+ demoMain.initStream(streamLoc, GLMediaPlayer.STREAM_ID_AUTO, GLMediaPlayer.STREAM_ID_AUTO, 0);
scrn.removeReference();
Log.d(TAG, "onCreate - X");
}
- static URLConnection getResource(String path[], int off) {
- URLConnection uc = null;
- for(int i=off; null==uc && i<path.length; i++) {
+ static URI getURI(String path[], int off, boolean checkAvail) {
+ URI uri = null;
+ for(int i=off; null==uri && i<path.length; i++) {
if(null != path[i] && path[i].length()>0) {
- uc = IOUtil.getResource(path[i], null);
- Log.d(TAG, "Stream: <"+path[i]+">: "+(null!=uc));
+ if( checkAvail ) {
+ final URLConnection uc = IOUtil.getResource(path[i], null);
+ if( null != uc ) {
+ try {
+ uri = uc.getURL().toURI();
+ } catch (URISyntaxException e) {
+ uri = null;
+ }
+ if( uc instanceof HttpURLConnection ) {
+ ((HttpURLConnection)uc).disconnect();
+ }
+ }
+ } else {
+ try {
+ uri = new URI(path[i]);
+ } catch (URISyntaxException e) {
+ uri = null;
+ }
+ }
+ Log.d(TAG, "Stream: <"+path[i]+">: "+(null!=uri));
}
}
- return uc;
+ return uri;
}
}