libxine-java Windows port

Ok. Here's the master plan. libxine-java on Windows first requires xine-lib for Windows. :)

Plan

  1. DONE: Compile xine-lib for Windows
  2. DONE: Windows JNI
    • Follow Sun's JAWT example for Windows JAWT access
    • Example Code
  3. DONE: Audio playback working
  4. 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
  5. 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.
  6. Get libxine-java to compile on Windows
    1. Write script to download and install:
    2. Configure
      • ./configure CPPFLAGS=-I/usr/local/include LDFLAGS="-L/usr/local/lib"
    3. 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
    4. libxineJNI depends on xine. this is should not be the case.
    5. 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
  7. 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
  8. Make libxine-java relocatable -- BinaryDistribution
    • Distribution folder contains
      • libxine.jar
      • libxineJNI.dll
      • libxineAWT.dll
      • xine library.
  9. 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)
  10. 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 :)
  11. Provide alpha version binaries
    1. See BinaryDistribution
    2. Replace absolute paths with relative stuff
    3. Try to find libxinejava.dll in same folder as libxine.jar
  12. Support cross compiling libxine-java on Linux/OS X using mingw32
    1. See Cross compiling JLVC for win32