diff options
author | Sven Gothel <sgothel@jausoft.com> | 2013-08-29 22:46:57 +0200 |
---|---|---|
committer | Sven Gothel <sgothel@jausoft.com> | 2013-08-29 22:46:57 +0200 |
commit | eca6a5cb1e2beda84dfbafc31ed225e272f4f3fb (patch) | |
tree | c77750eac39a611bbc46b77f64e5ae5c123e9427 /make/build-jogl.xml | |
parent | 9bf14f3c6bf98bd86913bec6e7feb54537f9b7d3 (diff) |
Enhance GLMediaPlayer: Full FFMPeg support, 'dshow' camera support on windows, 2 more pixel formats, fail-safe data handling
- add support for ffmpeg 2 / libav 10 -> lavc55_lavf55_lavu52_lavr01
- add support for ffmpeg libswresample (similar to libavresample)
- handle BGRA (GL type) and BGR24 (texture shader)
- Change Camera URI semantics, drop 'host' and use 'path' for camera ID
and use 'query' for options.
- add support for Window's DShow camera selection
- our camera id -> index of list of video-input devices,
this gives us same behavior as w/ Linux
- requires windows libs: strmiids, uuid, ole32, oleaut32
- Compiles w/ MingW64, works w/ libav/ffmpeg
- TODO: test compilation w/ MingW 32bit !
- don't push data to texture if (linesize <= 0)
this may happen due to buggy decoder / setup ..
Tested manually on GNU/Linux x64 and Windows x64:
- GNU/Linux libav 0.8, libav 9, libav 10, ffmpeg 1.2, ffmpeg 2.0
- Windows libav 0.8, libav 9, ffmpeg 2.0
- videos and camera
Diffstat (limited to 'make/build-jogl.xml')
-rw-r--r-- | make/build-jogl.xml | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/make/build-jogl.xml b/make/build-jogl.xml index 582e8b654..5a461359a 100644 --- a/make/build-jogl.xml +++ b/make/build-jogl.xml @@ -1225,12 +1225,12 @@ <linker id="linker.cfg.win32.mingw.jogl" extends="linker.cfg.win32.mingw"> <linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names --> - <syslibset libs="gdi32, kernel32"/> + <syslibset libs="gdi32, kernel32, strmiids, uuid, ole32, oleaut32"/> <!-- last 4 for dshow video input query! --> </linker> <linker id="linker.cfg.win64.mingw.jogl" extends="linker.cfg.win64.mingw"> <linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names --> - <syslibset libs="gdi32, kernel32"/> + <syslibset libs="gdi32, kernel32, strmiids, uuid, ole32, oleaut32"/> <!-- last 4 for dshow video input query! --> </linker> <linker id="linker.cfg.win32.msvc.jogl" extends="linker.cfg.win32.msvc"> @@ -1425,6 +1425,7 @@ <patternset id="c.src.files.@{version.lav}"> <include name="${rootrel.src.c}/JoglCommon.c"/> + <include name="${rootrel.src.c.libav}/ffmpeg_dshow.c"/> <include name="${rootrel.src.c.libav}/ffmpeg_@{version.lav}.c"/> </patternset> @@ -1469,6 +1470,9 @@ <!-- This must come last to not override real include paths --> <!-- includepath path="stub_includes/macosx" if="isOSX" / --> </compiler> + + <linker extends="@{linker.cfg.id}"> + </linker> </cc> </sequential> </outofdate> @@ -1492,6 +1496,7 @@ <patternset id="c.obj.files.ffmpeg.inject"> <include name="${rootrel.obj.joglsub}/ffmpeg_lavc53_lavf53_lavu51.*"/> <include name="${rootrel.obj.joglsub}/ffmpeg_lavc54_lavf54_lavu52_lavr01.*"/> + <include name="${rootrel.obj.joglsub}/ffmpeg_lavc55_lavf55_lavu52_lavr01.*"/> </patternset> <patternset id="c.src.files.jogl.desktop"> @@ -1507,6 +1512,7 @@ <!-- FIXME: the Mixer should be moved to another library --> <!--include name="${rootrel.src.c}/Mixer.cpp" if="isWindows"/--> <include name="${rootrel.src.c.libav}/ffmpeg_static.c"/> + <include name="${rootrel.src.c.libav}/ffmpeg_dshow.c"/> <include name="${rootrel.src.c.openmax}/omx_tool.c" if="setup.addNativeOpenMAX"/> <include name="${rootrel.src.c.openmax}/jogamp_opengl_util_av_impl_OMXGLMediaPlayer.c" if="setup.addNativeOpenMAX"/> @@ -1525,6 +1531,7 @@ <include name="${rootrel.src.c}/GLDebugMessageHandler.c"/> <include name="${rootrel.src.c}/GLXGetProcAddressARB.c" if="isX11"/> <include name="${rootrel.src.c.libav}/ffmpeg_static.c"/> + <include name="${rootrel.src.c.libav}/ffmpeg_dshow.c"/> <include name="${rootrel.src.c.openmax}/omx_tool.c" if="setup.addNativeOpenMAX"/> <include name="${rootrel.src.c.openmax}/jogamp_opengl_util_av_impl_OMXGLMediaPlayer.c" if="setup.addNativeOpenMAX"/> @@ -1548,7 +1555,7 @@ <outofdate> <sourcefiles> <fileset dir="${project.root}"><patternset refid="@{c.compiler.src.files}"/></fileset> - <fileset dir="${obj.joglsub}" includes="*jogl_ffmpegv08*, *jogl_ffmpegv09*"/> <!-- requires linkage --> + <fileset dir="${obj.joglsub}" includes="*jogl_ffmpegv08*, *jogl_ffmpegv09*, *jogl_ffmpegv10*"/> <!-- requires linkage --> </sourcefiles> <targetfiles> <fileset dir="${obj.jogl}" includes="lib@{output.lib.name}.so"/> @@ -1629,9 +1636,7 @@ <target name="c.build.jogl.prepare"> <javah destdir="${build.jogl}/gensrc/native/jogl" classpath="${javah.classpath}" class="jogamp.opengl.GLDebugMessageHandler" /> <javah destdir="${build.jogl}/gensrc/native/jogl" classpath="${javah.classpath}" class="jogamp.opengl.GLContextImpl" /> - <javah destdir="${src.generated.c.libav}" classpath="${javah.classpath}" class="jogamp.opengl.util.av.impl.FFMPEGStaticNatives" /> - <javah destdir="${src.generated.c.libav}" classpath="${javah.classpath}" class="jogamp.opengl.util.av.impl.FFMPEGv08Natives" /> - <javah destdir="${src.generated.c.libav}" classpath="${javah.classpath}" class="jogamp.opengl.util.av.impl.FFMPEGv09Natives" /> + <javah destdir="${src.generated.c.libav}" classpath="${javah.classpath}" class="jogamp.opengl.util.av.impl.FFMPEGStaticNatives,jogamp.opengl.util.av.impl.FFMPEGv08Natives,jogamp.opengl.util.av.impl.FFMPEGv09Natives,jogamp.opengl.util.av.impl.FFMPEGv10Natives" /> <javah destdir="${src.generated.c.openmax}" classpath="${javah.classpath}" class="jogamp.opengl.util.av.impl.OMXGLMediaPlayer" /> <!-- Generate the waveout Mixer header --> <!-- FIXME: this is temporary until we move this to another workspace --> @@ -1646,6 +1651,11 @@ output.lib.name="jogl_ffmpegv09" compiler.cfg.id="${compiler.cfg.id}" linker.cfg.id="${linker.cfg.id.os}"/> + + <c.build.ffmpeg version.lav="lavc55_lavf55_lavu52_lavr01" + output.lib.name="jogl_ffmpegv10" + compiler.cfg.id="${compiler.cfg.id}" + linker.cfg.id="${linker.cfg.id.os}"/> </target> <target name="c.build.jogl.desktop" unless="setup.noNativeDesktop"> |