libxine-java Windows port
Ok. Here's the master plan. libxine-java on Windows first requires xine-lib for Windows. :)
Plan
- DONE: Compile xine-lib for Windows
- DONE: Windows JNI
- Follow Sun's JAWT example for Windows JAWT access
- Example Code
- DONE: Audio playback working
- DONE: Video output on Windows
- SDL cannot change output window at runtime.
- DirectX driver now supports XINE_GUI_SEND_DRAWABLE_CHANGED. video output is send to offscreen window. later video is put into Java AWT or SWT canvas.
- With the support for XINE_GUI_SEND_DRAWABLE_CHANGED, a prototype is already working.
- Non-HW accelerated video works
- Fix video overlay handling somehow
- With HW-accelerated video, the windows desktop is not refreshed in time, leaving large black areas e.g. after switching to fullscreen and back.
- Get libxine-java to compile on Windows
- Write script to download and install:
- glib-2.0, pkg-config (http://www.gtk.org/download-windows.html )
- dvdread
- SWIG binary
- Configure
- ./configure CPPFLAGS=-I/usr/local/include LDFLAGS="-L/usr/local/lib"
- Fix build system for install into /usr/local/
- ./configure delivers mixed paths: unix / windows style. at least, the windows backslash has to be escaped to
*** the linker on win32 does only check libs once. without libtool, the order of libs is important
- ./configure delivers mixed paths: unix / windows style. at least, the windows backslash has to be escaped to
- libxineJNI depends on xine. this is should not be the case.
- Loading of JNI libs
- Java does not accept unix-style paths for JNI loading ("c:\\.." is needed for absolute paths)
- Dependent libraries: jawt.dll or libxine.dll are not found when not in PATH
- Write script to download and install:
- Windows video support for SWT
- canvas.handle already provides the needed HWND
- add windows platform to org.libxine.SWTCanvas
- add C code for windows activate/deactivate
- Make libxine-java relocatable -- BinaryDistribution
- Distribution folder contains
- libxine.jar
- libxineJNI.dll
- libxineAWT.dll
- xine library.
- Distribution folder contains
- xine plugin path
- in xine-engine/load_plugins.c:_x_scan_plugins
- xine uses getenv("XINE_PLUGIN_PATH"), otherwise
- xine_get_home_dir() returns path to executable on win32
- libxine-java can set XINE_PLUGIN_PATH to path of libxine.dll (solves both installed/bundled version)
- think about pluging catalog cache file
- it uses xine_get_homedir()
- maybe re-think xine_get_homedir() on windows
- on unix/mac, homedir is user's home dir :)
- Provide alpha version binaries
- See BinaryDistribution
- Replace absolute paths with relative stuff
- Try to find libxinejava.dll in same folder as libxine.jar
- Support cross compiling libxine-java on Linux/OS X using mingw32