diff options
author | Sven Gothel <[email protected]> | 2012-04-03 18:49:24 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2012-04-03 18:49:24 +0200 |
commit | c594cf1dc9f37dd1a6d861a1aa5426abbd082d60 (patch) | |
tree | f72ea63ca9040b17b6203b63e9c7c3678a1881eb /src/jogl/classes/com/jogamp/opengl/av | |
parent | 48581e36773e58e20a3e780caf5b1c29b4805285 (diff) |
GLMediaPlayer: API and implementation update. First working version on Android API 14
- Introduce states
- Customize / Access texture target,count,features.
- Expose TextureFrame.
- Use 'long' for all time values in msec.
- Mark information optional in API doc (fps, bps, ..)
Diffstat (limited to 'src/jogl/classes/com/jogamp/opengl/av')
-rw-r--r-- | src/jogl/classes/com/jogamp/opengl/av/GLMediaPlayer.java | 112 |
1 files changed, 100 insertions, 12 deletions
diff --git a/src/jogl/classes/com/jogamp/opengl/av/GLMediaPlayer.java b/src/jogl/classes/com/jogamp/opengl/av/GLMediaPlayer.java index 71e0e16d9..0d07f69ac 100644 --- a/src/jogl/classes/com/jogamp/opengl/av/GLMediaPlayer.java +++ b/src/jogl/classes/com/jogamp/opengl/av/GLMediaPlayer.java @@ -5,6 +5,8 @@ import java.net.URL; import javax.media.opengl.GL; +import jogamp.opengl.Debug; + import com.jogamp.opengl.util.texture.Texture; /** @@ -17,63 +19,149 @@ import com.jogamp.opengl.util.texture.Texture; * </ul> */ public interface GLMediaPlayer { + public static final boolean DEBUG = Debug.debug("GLMediaPlayer"); + + public enum State { + Uninitialized(0), Stopped(1), Playing(2), Paused(3); + + public final int id; + State(int id){ + this.id = id; + } + } + public static class TextureFrame { public TextureFrame(Texture t) { texture = t; + // stMatrix = new float[4*4]; + // ProjectFloat.makeIdentityf(stMatrix, 0); } public final Texture getTexture() { return texture; } + // public final float[] getSTMatrix() { return stMatrix; } public String toString() { return "TextureFrame[" + texture + "]"; } protected final Texture texture; + // protected final float[] stMatrix; } - /** Sets the stream to be used. Initializes all stream related states and GL resources. */ + public int getTextureCount(); + + public int getTextureTarget(); + + /** Sets the texture min-mag filter, defaults to {@link GL#GL_NEAREST}. */ + public void setTextureMinMagFilter(int[] minMagFilter); + public int[] getTextureMinMagFilter(); + + /** Sets the texture min-mag filter, defaults to {@link GL#GL_CLAMP_TO_EDGE}. */ + public void setTextureWrapST(int[] wrapST); + public int[] getTextureWrapST(); + + /** + * Sets the stream to be used. Initializes all stream related states and GL resources. + * <ul> + * <li>ANY -> Uninitialized - invokes destroy(GL)</li> + * <li>Uninitialized -> Stopped</li> + * </ul> + */ public void setStream(GL gl, URL url) throws IOException; - /** Releases the GL and stream resources. */ + /** + * Releases the GL and stream resources. + * <p> + * <code>ANY</code> -> Uninitialized + * </p> + */ public void destroy(GL gl); public void setPlaySpeed(float rate); public float getPlaySpeed(); - public void start(); - - public void pause(); + /** + * Stopped/Paused -> Playing + */ + public State start(); - public void stop(); + /** + * Playing -> Paused + */ + public State pause(); /** + * Playing/Paused -> Stopped + */ + public State stop(); + + /** + * @return the current state, either Uninitialized, Stopped, Playing, Paused + */ + public State getState(); + + /** * @return time current position in milliseconds **/ - public int getCurrentPosition(); + public long getCurrentPosition(); /** * @param msec absolute desired time position in milliseconds * @return time current position in milliseconds, after seeking to the desired position **/ - public int seek(int msec); - - public Texture getLastTextureID(); - - public Texture getNextTextureID(); + public long seek(long msec); + /** + * @return the last updated texture. Not blocking. + */ + public TextureFrame getLastTexture(); + + /** + * @return the next texture, which should be rendered. May block, depending on implementation. + * + * @see #addEventListener(GLMediaEventListener) + * @see GLMediaEventListener#newFrameAvailable(GLMediaPlayer, TextureFrame) + */ + public TextureFrame getNextTexture(); + public boolean isValid(); public URL getURL(); + /** + * <i>Warning:</i> Optional information, may not be supported by implementation. + * @return the code of the video stream, if available + */ public String getVideoCodec(); + /** + * <i>Warning:</i> Optional information, may not be supported by implementation. + * @return the code of the audio stream, if available + */ public String getAudioCodec(); + /** + * <i>Warning:</i> Optional information, may not be supported by implementation. + * @return the total number of video frames + */ public long getTotalFrames(); + /** + * @return total duration of stream in msec. + */ + public long getDuration(); + + /** + * <i>Warning:</i> Optional information, may not be supported by implementation. + * @return the overall bitrate of the stream. + */ public long getBitrate(); + /** + * <i>Warning:</i> Optional information, may not be supported by implementation. + * @return the framerate of the video + */ public int getFramerate(); public int getWidth(); |