summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Adding initial Libav/FFMpeg GLMediaPlayer implementationSven Gothel2012-04-166-20/+820
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Java classes already slipped through in commit 10935e1ec0d8ed677bc3fddfaa8cd73898a3bcbf - oops. Since we cannot provide a Libav binary (even though Google does in Android and Chrome) due to legal uncertainities .. we dynamically link to an existing Libav / FFmpeg library in a 'relaxed' manner. Ie. we allow certain recent functions to be absent to be able to run on a wider range of Libav versions. Currently tested on Debian Linux and Windows7 64bit/32bit Binaries for Win/OSX: - Windows http://ffmpeg.zeranoe.com/builds/ - OSX http://www.ffmpegx.com/ Features: - Dynamic relaxed linking to Libav (see above) - YUV420P texture lookup function shader stub (conversion to RGB) - 1-copy only (decoder buffer to texture) - simple - uses libavformat's network streaming - fixes some odd PTS values TODO: - Audio output (Should use OpenAL, duh) - Seek works poorly - Offthread multi-texture fetching for smoother animation - Maybe more pixelformat conversions
* TextureSequence Shader Support; GLMediaPlayer uses 'int' where possible; ↵Sven Gothel2012-04-1628-455/+951
| | | | | | | | | | | | | General enhancments. For details about TextureSequence/GLMediaPlayer shader collaboration w/ your own shader source, see TextureSequence and TexCubeES2 / MovieSimple demo. TextureSequence allows implementations to provide their own texture lookup function which may provide color space conversion (YUV) .. or other runtime hw-accel features. Have a look at the next commit, which provides an Libav/FFMpeg implementation w/ YUV/RGB shader conversion. MovieCube adds keyboard control (Android: firm touch on display to launch keyboard, don't break it though :)
* NEWT/Android: Add (soft) keyboard input. Complete the Android -> NEWT key ↵Sven Gothel2012-04-164-81/+126
| | | | | | | | | | | | | | | | | | | | | | translation. Minor fixes for mouse as well. - AndroidNewtEventFactory - Android -> NEWT KeyCodes, leave out control keys like HOME, BACK, .. TBD .. - We don't consume the key event, in case we cannot map it, so the Android OS has a chance to handle the control keys. - Key-Release generates a Key Typed event. - Key/Mouse translate Android time-base (upTime) to Unix. - AndroidWindow - set our onKeyListener, using above tranlator - setFocusable(true) and setFocusableInTouchMode(true) on our SurfaceView, otherwise no key event will be delivered. Note: 'requestFocus()' must also be called on the view for key input! - Test: NEWTGearsES2Activity, which launches the soft key via: InputMethodManager mgr = (InputMethodManager) win.getAndroidView().getContext().getSystemService(Context.INPUT_METHOD_SERVICE); mgr.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); // shows keyboard .. and requests the focus of the view for input.
* NEWT WindowImpl: Ensure screenChange suspense animation, even w/o having the ↵Sven Gothel2012-04-161-0/+4
| | | | | | | notify method being called. This happens on android, where we just react on an already happened screen rotate. W/o animation suspend GL rendering could be disturbed or the thread could starve.
* ShaderCode: Adding 'replaceInShaderSource a -> b utility functionSven Gothel2012-04-161-1/+55
|
* Adding libav (ffmpeg) header file, allowing upcoming dynamic linked ↵Sven Gothel2012-04-1648-0/+13480
| | | | | | | | | | | GLMediaPlayer impl. to be compiled (LGPL terms) Libav header: libavutil 51.22.1 libavformat 53.21.0 libavcodec 53.35.0 .. just to ease our compile time setup.
* Add native tests for libav/ffmpeg and gstSven Gothel2012-04-1610-0/+1819
|
* API Change ShaderCode/ShaderUtil: Enable optional mutable shader source / ↵Sven Gothel2012-04-1612-128/+279
| | | | | | | | | | | | | | | | | | | | | | generalize shader source storage type to CharSequence[] Benefits: - Allows code injection and general shader source editing (before compilation) - Uses mutable StringBuilder only if editing is intended, hence reduces memory footprint and String conversion at compilation in such case. - ShaderCode.create(..) factory methods add nw attribute 'mutableStringBuilder' if true method returns a mutable StringBuilder instance which can be edited later on at the costs of a String conversion when passing to 'glShaderSource(int, int, String[], IntBuffer)'. If <code>false</code> method returns an immutable <code>String</code> instance, which can be passed to {@link GL2ES2#glShaderSource(int, int, String[], IntBuffer)} at no additional costs. - New 'edit' methods in ShaderCode: ' - int insertShaderSource(int shaderIdx, String tag, int fromIndex, CharSequence data); - int insertShaderSource(int shaderIdx, int position, CharSequence data);
* TexSequence/Movie Demo's Shader: Remove profile specific 'header' files, ↵Sven Gothel2012-04-167-42/+7
| | | | prepare for shader code injection.
* StringBuffer -> StringBuilder (Local objects, no concurrency) ; Impacts: ↵Sven Gothel2012-04-1660-101/+99
| | | | Capabilities/GLContext API 'toString(StringBuilder)'
* JOGL/Native: Add JNIEnv functionsSven Gothel2012-04-122-0/+94
|
* AndroidWindow: Fix regression (commit ↵Sven Gothel2012-04-121-1/+1
| | | | c9066a6df7a0b8612a8a0b3e5c8977268a1257e8), no destruction on surface size change.
* Reloc OMXGLMediaPlayer jogamp.opengl.omx -> jogamp.opengl.util.av.implSven Gothel2012-04-122-20/+16
|
* Graph UI Demo: Add zoom w/ mouse wheel (desktop)Sven Gothel2012-04-111-0/+5
|
* Refine API docSven Gothel2012-04-113-11/+12
|
* ShaderState: No exception in 'releaseAllAttributes()' if attribute is n/aSven Gothel2012-04-111-6/+2
|
* Refine GLMediaPlayer/TextureSequence, add MovieCube demo, fix minor bug in ↵Sven Gothel2012-04-1134-257/+1188
| | | | | | | | | | | | | | | | | | | | Texture - Add TextureSequence, base interface of GLMediaPlayer to genralize texture streams - TextureSequence / GLMediaPlayer: Use inner classes for event and texture data - getLastTexture() shall never return 'null', initialization of TextureSequence (initGLStream(..), etc) shall provide a TextureFrame w/ the stream's dimension. - GLMediaPlayerImpl.createTexImageImpl() y-flip defaults to 'false' impl. shall define y-flip, if required. - Added MovieCube demo - Fix Texture: initialize aspectRation for 'wrapping' ctor -
* GLArrayData: Fix 'growBuffer()' / clarify 'initialSize' -> 'initialElementCount'Sven Gothel2012-04-117-104/+120
| | | | | - growBuffer() was using '(osize+additional) * components' -> 'osize + (additional * components )' - added jogl.debug.GLArrayData - notifying growBuffer()
* Move com.jogamp.opengl.av -> com.jogamp.opengl.util.av (it's in the util ↵Sven Gothel2012-04-116-0/+0
| | | | atomic JAR and not core)
* Move ProjectFloat back to private, exposing basic math in FloatUtilSven Gothel2012-04-094-345/+350
| | | | | | | | - Partially reverting commit de2b129a56335262a44a05541a3ab2e35668cc6e - ProjectFloat and FloatUtil must reside in core, not util - Moved slice2float -> GlueGen's Buffers
* Adding assets-test/placeholder.txtSven Gothel2012-04-091-0/+1
|
* Add missing: MovieSimpleActivity0Sven Gothel2012-04-091-0/+119
|
* ShaderUtil: Remove 'Impl' redirection, we already have GL OO hierarchy.Sven Gothel2012-04-091-356/+246
|
* ShaderUtil: isProgramValid() -> isProgramLinkStatusValid() + ↵Sven Gothel2012-04-094-45/+45
| | | | | | | | | | | isProgramExecStatusValid() isProgramValid() was testing whether the linkx status is valid and whether the executable environment is valid for the shader, see glValidateProgram(). glValidateProgram() may fail on some implementations in some circumstances (APX2500 and Tegra2) and indeed require all resources are set for execution of the shader program (glDraw*). This is not a requirement for issueing useProgram(), hence removed this test and made it available explicit for debugging purposes: isProgramExecStatusValid().
* Android: Cleanup AndroidWindow. NewtBaseActivity: Reset FPSCounter on ↵Sven Gothel2012-04-093-43/+24
| | | | resume, Sync LauncherUtil
* GLMediaPlayer*: Revised - Working on buggy MediaPlayer impl. (Android ICS Tegra)Sven Gothel2012-04-0917-340/+373
| | | | | | | | | | | | | GLMediaPlayer: Merging 'initStream()' and 'initGL()' to 'initGLStream()' due to incompatible/buggy implementations (Android/Tegra) requiring the GL texture being setup before preparing the stream. This also implies that w/o an GL context we cannot fetch the stream information (size, ..) hence we need to evaluate this detail (FIXME). 'getNextTexture(GL gl, boolean blocking)' can request the impl. to block GLMediaEventListener: The TextureFrame not yet available, adding 'when'
* Fix EGL/ES types GLeglImageOES, EGLImageKHR & EGLClientBuffer - and ↵Sven Gothel2012-04-097-14/+19
| | | | | | | | | | functions: eglCreateImageKHR, eglCreatePbufferFromClientBuffer Unique typedef for: EGLConfig, EGLContext, EGLDisplay, EGLSurface, EGLNativeDisplayType, EGLNativeWindowType, EGLNativePixmapType, EGLImageKHR, GLeglImageOES and EGLSyncKHR allowing to render them individually opaque (long) and keep EGLClientBuffer as NIO buffer.
* GLMediaPlayer: Fix destruction (NPE) / Fix MovieSimple shader, no ↵Sven Gothel2012-04-074-8/+5
| | | | GL_OES_EGL_image_external for plain ES2.
* TextureIO: PNGImage 1stSven Gothel2012-04-071-2/+2
|
* TextureIO: Add PNG TextureProvider and TextureWriter for RGB[A]/BGR[A] - ↵Sven Gothel2012-04-0715-13/+377
| | | | incl. unit tests; Test/Demos: Use PNG snapshots.
* Merge PNGJ 0.85 into namespaceSven Gothel2012-04-0750-1/+4889
| | | | | | | | | | | | | | | | | PNGJ Version 0.85 (1 April 2012) Apache 2.0 License http://code.google.com/p/pngj/ Merged code: - Changed namespace ar.com.hjg.pngj -> jogamp.opengl.util.pngj to avoid collision when using a different version of PNGJ. - Removed test and lossy packages and helper classes to reduce footprint. License information is added in main LICENSE.txt file.
* Remove tga textureSven Gothel2012-04-071-0/+0
|
* NullGLMediaPlayer: Use low-res PNG instead of TGA texture to save footprint. ↵Sven Gothel2012-04-076-7/+18
| | | | Move texture to jogl jar/apk for accessibility.
* GLMediaPlayer: Add (c) tag; Add NullGLMediaPlayer (dummy texture);Sven Gothel2012-04-0614-195/+541
| | | | | - Factory falls back to NullGLMediaPlayer allowing to test on platforms where no player is available. - MovieSimple (c) to JogAmp since it is no more derived from the old project.
* TextureIO/TGA: Only use current GLContext if available, allowing pre-GL ↵Sven Gothel2012-04-064-46/+54
| | | | usage; writeFile() restricted to GL2GL3, not GL2.
* PMVMatrix: Add convenient ProjectFloat calls of gluLookAt, gluProject, ↵Sven Gothel2012-04-062-52/+192
| | | | gluUnProject and gluPickMatrix
* Android MovieSimple Split: zoom and orig size for performance analysisSven Gothel2012-04-066-8/+192
|
* GLMediaPlayer: Use URLConnection to clarify emphasize passing an available ↵Sven Gothel2012-04-055-46/+31
| | | | connected URL. API doc: Useing html table for state chart
* JoglVersion: Dump GLSL version if GLSL is available.Sven Gothel2012-04-051-2/+5
|
* Enhance MovieSimple Demo: Split shader to es2/gl2, check for ↵Sven Gothel2012-04-0511-74/+92
| | | | GL_OES_EGL_image_external extension if requested, use proper texture unit
* NEWT/Android: Add notion of 'brokenFocusChange' for Android impl, where ↵Sven Gothel2012-04-042-12/+16
| | | | requestFocus and focusChanged is always forced
* Split Android MovieSimple Launcher to 3Sven Gothel2012-04-047-71/+349
| | | | | | | | 00: One movie view, centered, no effects 01: Two movie views (Main + HUD) using same GLMediaPlayer [texture] and stream 02: Two movie views (Main + HUD) each using own GLMediaPlayer and stream
* GLMediaPlayer/MovieSimple: Refine API (split setStream(GL, URL) -> ↵Sven Gothel2012-04-037-178/+249
| | | | | | | | | initStream(URL) + initGL(GL)) .. IllegalStateException if wrong. Using internet streams of BigBuckBunny, if avail. - Splitting the initialization in stream and GL allows using the stream information (eg: size, ..) for setting the GLDrawable properties .. - Make the impl. more bullet proof ..
* Add Android API 14 GLMediaPlayer demo: MovieSimpleSven Gothel2012-04-039-114/+411
| | | | | | | | | | | | | | | | | Activity adds 2 NEWT GLWindow's in a ViewGroup, one main view and one small HUD view. Both GLWindow contain one GLEventListener playing the same stream using GLMediaPlayer one with no effect, one w/ a gradient color effect. The stream's URL is currently hardcoded 'file:///mnt/sdcard/Movies/BigBuckBunny_320x180.mp4'. Upper half of main window: - click start/pause video - drag rotate video Lower half of main window: - drag bwd/fwd in the stream (seek)
* GLMediaPlayer: API and implementation update. First working version on ↵Sven Gothel2012-04-037-171/+355
| | | | | | | | | | | | | | 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, ..)
* Ant Build: Split 2nd pass in android and non-android builds. The former uses ↵Sven Gothel2012-04-032-2/+28
| | | | the Android API JAR for android specifics.
* GLArrayData*: toString(): Dump the vboOffset in decimalSven Gothel2012-04-032-2/+2
|
* AndroidWindow/NewtBaseActivity: Properly split functionality, remove ↵Sven Gothel2012-04-032-81/+182
| | | | | | | | | | | | | | | | | | | | | | | | android.view.Window reference and use from AndroidWindow; Force transparency flag; Multiple NEWT Windows in Activity. AndroidWindow: - Force transparency flag to EGL Capabilities chooser (see commit 0d12af05128da433aa7b6767ba5a7f6ee9bce6c4) - Keep androidFormat besides nativeFormat, used to determine transparency flag and recreation. - Move transparency style selection from AndroidWindow.instantiationFinished() -> NewtBaseActivity.setContentView(..) - Remove AndroidWindow.becomeContentViewOf(..) and add it's fullscreen layout features to NewtBaseActivity.setContentView(..) NewtBaseActivity: - General support for multiple NEWT windows. - Adding functionality removed from AndroidWindow - see above - Adding 'addContentView(..)' and 'registerNEWTWindow(..)' which, besides 'setContentView(..)' performs registration of the NEWT window for the 'onDestroy()' method. The 'add*' and 'set*' variant also handle layout etc. - Add direct methods to set fullscreen feature and transparency theme.
* GLContext: Don't enable TRACE_SWITCH if DEBUG is enabled.Sven Gothel2012-04-032-3/+3
|
* Texture: Ignore enable/disable for GL_TEXTURE_EXTERNAL_OES; TextureCoords: ↵Sven Gothel2012-04-032-4/+53
| | | | Add convenience coord transfer method to buffer.