diff options
author | Sven Gothel <[email protected]> | 2013-08-26 13:38:40 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2013-08-26 13:38:40 +0200 |
commit | b5876b598ecf3eb32ceb183ecbd5d29b8885a304 (patch) | |
tree | 9b63eb4a58e12e1df27e1406e0c041218b7fe2c5 | |
parent | ee64b0b3e47cc5d52fb3679c582d3ad0134adb9e (diff) |
libav/ffmpeg: Compile/Link 2 versions of native FFMPEGMediaPlayer methods FFMPEGNatives -> FFMPEGv08Natives + FFMPEGv09Natives
Enables FFMPEGMediaPlayer to work w/ either ffmpeg/libav version 8 or 9 w/ same JOGL binary
Same C source code is compiled against
1: version 0.8 FFMPEGv08Natives lavc53.lavf53.lavu51
2: version 0.9 FFMPEGv09Natives lavc54.lavf54.lavu52.lavr01
FFMPEGv08Natives and FFMPEGv09Natives implements FFMPEGNatives,
native C code uses CPP '##' macro concatenation to produce unique function names.
To enable 'cpp' to find the libav* header files matching the desired version,
we have placed them in the c-file's folder, issued '#include "path/file.h"
and added symbolic links to allow finding same module and 'sister modules':
ls -l libavformat/
..
lrwxrwxrwx 1 sven sven 13 Aug 26 12:56 libavcodec -> ../libavcodec
lrwxrwxrwx 1 sven sven 14 Aug 26 12:56 libavformat -> ../libavformat
lrwxrwxrwx 1 sven sven 12 Aug 26 12:57 libavutil -> ../libavutil
..
At static init FFMPEGDynamicLibraryBundleInfo, determines the runtime version
and instantiates the matching FFMPEGNatives, or null if non matches.
FFMPEGMediaPlayer still compares the compile-time and runtime versions.
FFMPEGMediaPlayer passes it's own instance to FFMPEGNatives for callbacks.
-rw-r--r-- | make/build-jogl.xml | 14 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/opengl/openal/av/ALDummyUsage.java | 3 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGDynamicLibraryBundleInfo.java | 56 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java | 269 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGNatives.java | 188 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGStaticNatives.java | 15 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGv08Natives.java | 51 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGv09Natives.java | 51 | ||||
-rw-r--r-- | src/jogl/native/libav/ffmpeg_tool.h | 12 | ||||
-rw-r--r-- | src/jogl/native/libav/jogamp_opengl_util_av_impl_FFMPEGStaticNatives.c | 84 | ||||
-rw-r--r-- | src/jogl/native/libav/jogamp_opengl_util_av_impl_FFMPEGvXXNatives.c (renamed from src/jogl/native/libav/jogamp_opengl_util_av_impl_FFMPEGMediaPlayer.c) | 105 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/jogamp_opengl_util_av_impl_FFMPEGv08Natives.c | 31 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/avcodec.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/avcodec.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/avfft.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/avfft.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/dxva2.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/dxva2.h) | 0 | ||||
l--------- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/libavcodec | 1 | ||||
l--------- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/libavutil | 1 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/opt.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/opt.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/vaapi.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/vaapi.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/vda.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/vda.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/vdpau.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/vdpau.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/version.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/version.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/xvmc.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/xvmc.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/avformat.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavformat/avformat.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/avio.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavformat/avio.h) | 0 | ||||
l--------- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/libavcodec | 1 | ||||
l--------- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/libavformat | 1 | ||||
l--------- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/libavutil | 1 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/version.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavformat/version.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/adler32.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/adler32.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/aes.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/aes.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/attributes.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/attributes.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/audioconvert.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/audioconvert.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/avassert.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/avassert.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/avconfig.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/avconfig.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/avstring.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/avstring.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/avutil.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/avutil.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/base64.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/base64.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/bswap.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/bswap.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/common.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/common.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/cpu.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/cpu.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/crc.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/crc.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/dict.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/dict.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/error.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/error.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/eval.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/eval.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/fifo.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/fifo.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/file.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/file.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/imgutils.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/imgutils.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/intfloat.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/intfloat.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/intfloat_readwrite.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/intfloat_readwrite.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/intreadwrite.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/intreadwrite.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/lfg.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/lfg.h) | 0 | ||||
l--------- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/libavutil | 1 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/log.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/log.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/lzo.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/lzo.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/mathematics.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/mathematics.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/md5.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/md5.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/mem.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/mem.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/opt.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/opt.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/parseutils.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/parseutils.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/pixdesc.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/pixdesc.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/pixfmt.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/pixfmt.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/random_seed.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/random_seed.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/rational.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/rational.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/samplefmt.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/samplefmt.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/sha.h (renamed from make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/sha.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/jogamp_opengl_util_av_impl_FFMPEGv09Natives.c | 31 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/avcodec.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/avcodec.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/avfft.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/avfft.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/dxva2.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/dxva2.h) | 0 | ||||
l--------- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/libavcodec | 1 | ||||
l--------- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/libavutil | 1 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/old_codec_ids.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/old_codec_ids.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vaapi.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vaapi.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vda.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vda.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vdpau.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vdpau.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/version.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/version.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/xvmc.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/xvmc.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/avformat.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavformat/avformat.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/avio.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavformat/avio.h) | 0 | ||||
l--------- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/libavcodec | 1 | ||||
l--------- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/libavformat | 1 | ||||
l--------- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/libavutil | 1 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/version.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavformat/version.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/avresample.h | 379 | ||||
l--------- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/libavresample | 1 | ||||
l--------- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/libavutil | 1 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/version.h | 46 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/adler32.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/adler32.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/aes.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/aes.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/attributes.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/attributes.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/audio_fifo.h | 146 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/audioconvert.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/audioconvert.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avassert.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avassert.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avconfig.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avconfig.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avstring.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avstring.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avutil.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avutil.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/base64.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/base64.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/blowfish.h | 76 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/bswap.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/bswap.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/channel_layout.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/channel_layout.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/common.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/common.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/cpu.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/cpu.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/crc.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/crc.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/dict.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/dict.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/error.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/error.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/eval.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/eval.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/fifo.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/fifo.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/file.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/file.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/imgutils.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/imgutils.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intfloat.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intfloat.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intfloat_readwrite.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intfloat_readwrite.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intreadwrite.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intreadwrite.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/lfg.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/lfg.h) | 0 | ||||
l--------- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/libavutil | 1 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/log.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/log.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/lzo.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/lzo.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/mathematics.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/mathematics.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/md5.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/md5.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/mem.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/mem.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/old_pix_fmts.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/old_pix_fmts.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/opt.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/opt.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/parseutils.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/parseutils.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/pixdesc.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/pixdesc.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/pixfmt.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/pixfmt.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/random_seed.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/random_seed.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/rational.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/rational.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/samplefmt.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/samplefmt.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/sha.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/sha.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/time.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/time.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/version.h (renamed from make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/version.h) | 0 | ||||
-rw-r--r-- | src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/xtea.h | 61 |
132 files changed, 1314 insertions, 318 deletions
diff --git a/make/build-jogl.xml b/make/build-jogl.xml index 190782976..b384aebc2 100644 --- a/make/build-jogl.xml +++ b/make/build-jogl.xml @@ -1434,7 +1434,9 @@ <include name="${rootrel.src.c}/GLXGetProcAddressARB.c" if="isX11"/> <!-- FIXME: the Mixer should be moved to another library --> <!--include name="${rootrel.src.c}/Mixer.cpp" if="isWindows"/--> - <include name="${rootrel.src.c.libav}/jogamp_opengl_util_av_impl_FFMPEGMediaPlayer.c"/> + <include name="${rootrel.src.c.libav}/jogamp_opengl_util_av_impl_FFMPEGStaticNatives.c"/> + <include name="${rootrel.src.c.libav}/lavc53.lavf53.lavu51/jogamp_opengl_util_av_impl_FFMPEGv08Natives.c"/> + <include name="${rootrel.src.c.libav}/lavc54.lavf54.lavu52.lavr01/jogamp_opengl_util_av_impl_FFMPEGv09Natives.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"/> @@ -1451,7 +1453,9 @@ <include name="${rootrel.src.c}/JoglCommon.c"/> <include name="${rootrel.src.c}/GLDebugMessageHandler.c"/> <include name="${rootrel.src.c}/GLXGetProcAddressARB.c" if="isX11"/> - <include name="${rootrel.src.c.libav}/jogamp_opengl_util_av_impl_FFMPEGMediaPlayer.c"/> + <include name="${rootrel.src.c.libav}/jogamp_opengl_util_av_impl_FFMPEGStaticNatives.c"/> + <include name="${rootrel.src.c.libav}/lavc53.lavf53.lavu51/jogamp_opengl_util_av_impl_FFMPEGv08Natives.c"/> + <include name="${rootrel.src.c.libav}/lavc54.lavf54.lavu52.lavr01/jogamp_opengl_util_av_impl_FFMPEGv09Natives.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"/> @@ -1500,8 +1504,6 @@ <includepath path="stub_includes/khr"/> <includepath path="stub_includes/egl"/> <includepath path="stub_includes/opengl"/> - <includepath path="stub_includes/libav/lavc53.lavf53.lavu51" /> <!-- headers required by our libav/ffmpeg MediaPlayer impl. using lavc53.lavf53.lavu51 --> - <!-- includepath path="stub_includes/libav/lavc54.lavf54.lavu52.lavr01" / --> <!-- headers required by our libav/ffmpeg MediaPlayer impl. using lavc54.lavf54.lavu52.lavr01 --> <includepath path="stub_includes/openmax" if="setup.addNativeOpenMAX"/> <includepath path="stub_includes/cg" if="setup.addNativeNVidiaCG"/> @@ -1554,7 +1556,9 @@ <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.FFMPEGMediaPlayer" /> + <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.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 --> diff --git a/src/jogl/classes/jogamp/opengl/openal/av/ALDummyUsage.java b/src/jogl/classes/jogamp/opengl/openal/av/ALDummyUsage.java index 69223d0b9..2c1dfa237 100644 --- a/src/jogl/classes/jogamp/opengl/openal/av/ALDummyUsage.java +++ b/src/jogl/classes/jogamp/opengl/openal/av/ALDummyUsage.java @@ -1,7 +1,5 @@ package jogamp.opengl.openal.av; -import jogamp.opengl.util.av.impl.FFMPEGMediaPlayer; - import com.jogamp.openal.AL; import com.jogamp.openal.JoalVersion; @@ -10,7 +8,6 @@ import com.jogamp.openal.JoalVersion; */ public class ALDummyUsage { static AL al; - static FFMPEGMediaPlayer.PixelFormat pfmt; public static void main(String args[]) { System.err.println("JOGL> Hello JOAL"); diff --git a/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGDynamicLibraryBundleInfo.java b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGDynamicLibraryBundleInfo.java index 2f92f9bf3..ab16c5e5e 100644 --- a/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGDynamicLibraryBundleInfo.java +++ b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGDynamicLibraryBundleInfo.java @@ -43,6 +43,7 @@ import javax.media.opengl.GLProfile; import com.jogamp.common.os.DynamicLibraryBundle; import com.jogamp.common.os.DynamicLibraryBundleInfo; import com.jogamp.common.util.RunnableExecutor; +import com.jogamp.common.util.VersionNumber; /** * FIXME: We need native structure access methods to deal with API changes @@ -148,10 +149,15 @@ class FFMPEGDynamicLibraryBundleInfo implements DynamicLibraryBundleInfo { "avresample_convert", }; - private static long[] symbolAddr; + private static final long[] symbolAddr = new long[symbolCount]; private static final boolean ready; private static final boolean libsLoaded; private static final boolean avresampleLoaded; // optional + static final VersionNumber avCodecVersion; + static final VersionNumber avFormatVersion; + static final VersionNumber avUtilVersion; + static final VersionNumber avResampleVersion; + private static final FFMPEGNatives natives; static { // native ffmpeg media player implementation is included in jogl_desktop and jogl_mobile @@ -159,26 +165,51 @@ class FFMPEGDynamicLibraryBundleInfo implements DynamicLibraryBundleInfo { boolean _ready = false; boolean[] _libsLoaded= { false }; boolean[] _avresampleLoaded= { false }; + VersionNumber[] _versions = new VersionNumber[4]; try { - _ready = initSymbols(_libsLoaded, _avresampleLoaded); + _ready = initSymbols(_libsLoaded, _avresampleLoaded, _versions); } catch (Throwable t) { t.printStackTrace(); } libsLoaded = _libsLoaded[0]; avresampleLoaded = _avresampleLoaded[0]; - ready = _ready; + avCodecVersion = _versions[0]; + avFormatVersion = _versions[1]; + avUtilVersion = _versions[2]; + avResampleVersion = _versions[3]; if(!libsLoaded) { System.err.println("LIB_AV Not Available"); - } else if(!ready) { + natives = null; + ready = false; + } else if(!_ready) { System.err.println("LIB_AV Not Matching"); + natives = null; + ready = false; + } else { + if( avCodecVersion.getMajor() <= 53 && avFormatVersion.getMajor() <= 53 && avUtilVersion.getMajor() <= 51 ) { + // lavc53.lavf53.lavu51 + natives = new FFMPEGv08Natives(); + } else if( avCodecVersion.getMajor() == 54 && avFormatVersion.getMajor() <= 54 && avUtilVersion.getMajor() <= 52 ) { + // lavc54.lavf54.lavu52.lavr01 + natives = new FFMPEGv09Natives(); + } else { + System.err.println("LIB_AV No Version/Native-Impl Match"); + natives = null; + } + if( null != natives ) { + ready = natives.initSymbols0(symbolAddr, symbolCount); + } else { + ready = false; + } } } static boolean libsLoaded() { return libsLoaded; } static boolean avResampleLoaded() { return avresampleLoaded; } + static FFMPEGNatives getNatives() { return natives; } static boolean initSingleton() { return ready; } - private static final boolean initSymbols(boolean[] libsLoaded, boolean[] avresampleLoaded) { + private static final boolean initSymbols(boolean[] libsLoaded, boolean[] avresampleLoaded, VersionNumber[] versions) { libsLoaded[0] = false; final DynamicLibraryBundle dl = AccessController.doPrivileged(new PrivilegedAction<DynamicLibraryBundle>() { public DynamicLibraryBundle run() { @@ -191,15 +222,11 @@ class FFMPEGDynamicLibraryBundleInfo implements DynamicLibraryBundleInfo { throw new RuntimeException("FFMPEG Tool library incomplete: [ avutil "+avutilLoaded+", avformat "+avformatLoaded+", avcodec "+avcodecLoaded+"]"); } avresampleLoaded[0] = dl.isToolLibLoaded(3); - /** Ignore .. due to optional libavresample - if(!dl.isToolLibComplete()) { - throw new RuntimeException("FFMPEG Tool libraries incomplete"); - } */ libsLoaded[0] = true; + if(symbolNames.length != symbolCount) { throw new InternalError("XXX0 "+symbolNames.length+" != "+symbolCount); } - symbolAddr = new long[symbolCount]; // optional symbol name set final Set<String> optionalSymbolNameSet = new HashSet<String>(); @@ -258,7 +285,12 @@ class FFMPEGDynamicLibraryBundleInfo implements DynamicLibraryBundleInfo { } } } - return initSymbols0(symbolAddr, symbolCount) && res; + versions[0] = FFMPEGStaticNatives.getAVVersion(FFMPEGStaticNatives.getAvCodecVersion0(symbolAddr[0])); + versions[1] = FFMPEGStaticNatives.getAVVersion(FFMPEGStaticNatives.getAvFormatVersion0(symbolAddr[1])); + versions[2] = FFMPEGStaticNatives.getAVVersion(FFMPEGStaticNatives.getAvUtilVersion0(symbolAddr[2])); + versions[3] = FFMPEGStaticNatives.getAVVersion(FFMPEGStaticNatives.getAvResampleVersion0(symbolAddr[3])); + + return res; } protected FFMPEGDynamicLibraryBundleInfo() { @@ -361,6 +393,4 @@ class FFMPEGDynamicLibraryBundleInfo implements DynamicLibraryBundleInfo { public final RunnableExecutor getLibLoaderExecutor() { return DynamicLibraryBundle.getDefaultRunnableExecutor(); } - - private static native boolean initSymbols0(long[] symbols, int count); } diff --git a/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java index 258c6757b..bcf4994b5 100644 --- a/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java +++ b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGMediaPlayer.java @@ -29,7 +29,6 @@ package jogamp.opengl.util.av.impl; import java.io.IOException; -import java.nio.Buffer; import java.nio.ByteBuffer; import java.security.AccessController; import java.security.PrivilegedAction; @@ -39,7 +38,6 @@ import javax.media.opengl.GL2ES2; import javax.media.opengl.GLException; import com.jogamp.common.os.Platform; -import com.jogamp.common.util.VersionNumber; import com.jogamp.gluegen.runtime.ProcAddressTable; import com.jogamp.opengl.util.TimeFrameI; import com.jogamp.opengl.util.GLPixelStorageModes; @@ -51,6 +49,8 @@ import com.jogamp.opengl.util.texture.Texture; import jogamp.opengl.GLContextImpl; import jogamp.opengl.util.av.GLMediaPlayerImpl; +import jogamp.opengl.util.av.impl.FFMPEGNatives.PixelFormat; +import jogamp.opengl.util.av.impl.FFMPEGNatives.SampleFormat; /*** * Implementation utilizes <a href="http://libav.org/">Libav</a> @@ -109,65 +109,47 @@ public class FFMPEGMediaPlayer extends GLMediaPlayerImpl { /** POSIX ENOSYS {@value}: Function not implemented. FIXME: Move to GlueGen ?!*/ private static final int ENOSYS = 38; - /** Default number of audio frames per video frame */ - private static final int AV_DEFAULT_AFRAMES = 8; - // Instance data + private static final FFMPEGNatives natives; private static final int avUtilMajorVersionCC; private static final int avFormatMajorVersionCC; private static final int avCodecMajorVersionCC; private static final int avResampleMajorVersionCC; - private static final VersionNumber avUtilVersion; - private static final VersionNumber avFormatVersion; - private static final VersionNumber avCodecVersion; - private static final VersionNumber avResampleVersion; private static final boolean available; static { final boolean libAVGood = FFMPEGDynamicLibraryBundleInfo.initSingleton(); final boolean libAVVersionGood; if( FFMPEGDynamicLibraryBundleInfo.libsLoaded() ) { - avUtilMajorVersionCC = getAvUtilMajorVersionCC0(); - avFormatMajorVersionCC = getAvFormatMajorVersionCC0(); - avCodecMajorVersionCC = getAvCodecMajorVersionCC0(); - avResampleMajorVersionCC = getAvResampleMajorVersionCC0(); - avUtilVersion = getAVVersion(getAvUtilVersion0()); - avFormatVersion = getAVVersion(getAvFormatVersion0()); - avCodecVersion = getAVVersion(getAvCodecVersion0()); - avResampleVersion = getAVVersion(getAvResampleVersion0()); - System.err.println("LIB_AV Util : "+avUtilVersion+" [cc "+avUtilMajorVersionCC+"]"); - System.err.println("LIB_AV Format : "+avFormatVersion+" [cc "+avFormatMajorVersionCC+"]"); - System.err.println("LIB_AV Codec : "+avCodecVersion+" [cc "+avCodecMajorVersionCC+"]"); - System.err.println("LIB_AV Resample: "+avResampleVersion+" [cc "+avResampleMajorVersionCC+"]"); - libAVVersionGood = avUtilMajorVersionCC == avUtilVersion.getMajor() && - avFormatMajorVersionCC == avFormatVersion.getMajor() && - avCodecMajorVersionCC == avCodecVersion.getMajor() && - avResampleMajorVersionCC == avResampleVersion.getMajor(); + natives = FFMPEGDynamicLibraryBundleInfo.getNatives(); + avUtilMajorVersionCC = natives.getAvUtilMajorVersionCC0(); + avFormatMajorVersionCC = natives.getAvFormatMajorVersionCC0(); + avCodecMajorVersionCC = natives.getAvCodecMajorVersionCC0(); + avResampleMajorVersionCC = natives.getAvResampleMajorVersionCC0(); + System.err.println("LIB_AV Util : "+FFMPEGDynamicLibraryBundleInfo.avUtilVersion+" [cc "+avUtilMajorVersionCC+"]"); + System.err.println("LIB_AV Format : "+FFMPEGDynamicLibraryBundleInfo.avFormatVersion+" [cc "+avFormatMajorVersionCC+"]"); + System.err.println("LIB_AV Codec : "+FFMPEGDynamicLibraryBundleInfo.avCodecVersion+" [cc "+avCodecMajorVersionCC+"]"); + System.err.println("LIB_AV Resample: "+FFMPEGDynamicLibraryBundleInfo.avResampleVersion+" [cc "+avResampleMajorVersionCC+"]"); + libAVVersionGood = avUtilMajorVersionCC == FFMPEGDynamicLibraryBundleInfo.avUtilVersion.getMajor() && + avFormatMajorVersionCC == FFMPEGDynamicLibraryBundleInfo.avFormatVersion.getMajor() && + avCodecMajorVersionCC == FFMPEGDynamicLibraryBundleInfo.avCodecVersion.getMajor() && + avResampleMajorVersionCC == FFMPEGDynamicLibraryBundleInfo.avResampleVersion.getMajor(); if( !libAVVersionGood ) { System.err.println("LIB_AV Not Matching Compile-Time / Runtime Major-Version"); } } else { + natives = null; avUtilMajorVersionCC = 0; avFormatMajorVersionCC = 0; avCodecMajorVersionCC = 0; avResampleMajorVersionCC = 0; - avUtilVersion = null; - avFormatVersion = null; - avCodecVersion = null; - avResampleVersion = null; libAVVersionGood = false; } - available = libAVGood && libAVVersionGood ? initIDs0() : false; + available = libAVGood && libAVVersionGood && null != natives ? natives.initIDs0() : false; } public static final boolean isAvailable() { return available; } - private static VersionNumber getAVVersion(int vers) { - return new VersionNumber( ( vers >> 16 ) & 0xFF, - ( vers >> 8 ) & 0xFF, - ( vers >> 0 ) & 0xFF ); - } - // // General // @@ -199,7 +181,7 @@ public class FFMPEGMediaPlayer extends GLMediaPlayerImpl { if(!available) { throw new RuntimeException("FFMPEGMediaPlayer not available"); } - moviePtr = createInstance0( DEBUG_NATIVE ); + moviePtr = natives.createInstance0(this, DEBUG_NATIVE); if(0==moviePtr) { throw new GLException("Couldn't create FFMPEGInstance"); } @@ -210,7 +192,7 @@ public class FFMPEGMediaPlayer extends GLMediaPlayerImpl { @Override protected final void destroyImpl(GL gl) { if (moviePtr != 0) { - destroyInstance0(moviePtr); + natives.destroyInstance0(moviePtr); moviePtr = 0; } destroyAudioSink(); @@ -280,7 +262,7 @@ public class FFMPEGMediaPlayer extends GLMediaPlayerImpl { final int aMaxChannelCount = audioSink.getMaxSupportedChannels(); final int aPrefSampleRate = preferredAudioFormat.sampleRate; // setStream(..) issues updateAttributes*(..), and defines avChosenAudioFormat, vid, aid, .. etc - setStream0(moviePtr, resStreamLocS, inFormat, vid, aid, aMaxChannelCount, aPrefSampleRate); + natives.setStream0(moviePtr, resStreamLocS, inFormat, vid, aid, aMaxChannelCount, aPrefSampleRate); } @Override @@ -301,7 +283,7 @@ public class FFMPEGMediaPlayer extends GLMediaPlayerImpl { final long procAddrGLGetError = pt.getAddressFor("glGetError"); final long procAddrGLFlush = pt.getAddressFor("glFlush"); final long procAddrGLFinish = pt.getAddressFor("glFinish"); - setGLFuncs0(moviePtr, procAddrGLTexSubImage2D, procAddrGLGetError, procAddrGLFlush, procAddrGLFinish); + natives.setGLFuncs0(moviePtr, procAddrGLTexSubImage2D, procAddrGLGetError, procAddrGLFlush, procAddrGLFinish); return null; } } ); audioQueueLimit = AudioSink.DefaultQueueLimitWithVideo; @@ -367,12 +349,13 @@ public class FFMPEGMediaPlayer extends GLMediaPlayerImpl { */ /** + * Native callback * Converts the given libav/ffmpeg values to {@link AudioFormat} and returns {@link AudioSink#isSupported(AudioFormat)}. * @param audioSampleFmt ffmpeg/libav audio-sample-format, see {@link SampleFormat}. * @param audioSampleRate sample rate in Hz (1/s) * @param audioChannels number of channels */ - private final boolean isAudioFormatSupported(int audioSampleFmt, int audioSampleRate, int audioChannels) { + final boolean isAudioFormatSupported(int audioSampleFmt, int audioSampleRate, int audioChannels) { final AudioFormat audioFormat = avAudioFormat2Local(SampleFormat.valueOf(audioSampleFmt), audioSampleRate, audioChannels); final boolean res = audioSink.isSupported(audioFormat); if( DEBUG ) { @@ -434,6 +417,7 @@ public class FFMPEGMediaPlayer extends GLMediaPlayerImpl { } /** + * Native callback * @param pixFmt * @param planes * @param bitsPerPixel @@ -449,11 +433,11 @@ public class FFMPEGMediaPlayer extends GLMediaPlayerImpl { * @param audioChannels * @param audioSamplesPerFrameAndChannel in audio samples per frame and channel */ - private void updateAttributes2(int pixFmt, int planes, int bitsPerPixel, int bytesPerPixelPerPlane, - int lSz0, int lSz1, int lSz2, - int tWd0, int tWd1, int tWd2, int tH, - int audioSampleFmt, int audioSampleRate, - int audioChannels, int audioSamplesPerFrameAndChannel) { + void updateAttributes2(int pixFmt, int planes, int bitsPerPixel, int bytesPerPixelPerPlane, + int lSz0, int lSz1, int lSz2, + int tWd0, int tWd1, int tWd2, int tH, + int audioSampleFmt, int audioSampleRate, + int audioChannels, int audioSamplesPerFrameAndChannel) { vPixelFmt = PixelFormat.valueOf(pixFmt); vPlanes = planes; vBitsPerPixel = bitsPerPixel; @@ -562,7 +546,7 @@ public class FFMPEGMediaPlayer extends GLMediaPlayerImpl { if(0==moviePtr) { return false; } - final int errno = play0(moviePtr); + final int errno = natives.play0(moviePtr); if( DEBUG_NATIVE && errno != 0 && errno != -ENOSYS) { System.err.println("libav play err: "+errno); } @@ -574,7 +558,7 @@ public class FFMPEGMediaPlayer extends GLMediaPlayerImpl { if(0==moviePtr) { return false; } - final int errno = pause0(moviePtr); + final int errno = natives.pause0(moviePtr); if( DEBUG_NATIVE && errno != 0 && errno != -ENOSYS) { System.err.println("libav pause err: "+errno); } @@ -586,7 +570,7 @@ public class FFMPEGMediaPlayer extends GLMediaPlayerImpl { if(0==moviePtr) { throw new GLException("FFMPEG native instance null"); } - return seek0(moviePtr, msec); + return natives.seek0(moviePtr, msec); } @Override @@ -614,7 +598,7 @@ public class FFMPEGMediaPlayer extends GLMediaPlayerImpl { /** Try decode up to 10 packets to find one containing video. */ for(int i=0; TimeFrameI.INVALID_PTS == vPTS && 10 > i; i++) { - vPTS = readNextPacket0(moviePtr, textureTarget, textureFormat, textureType); + vPTS = natives.readNextPacket0(moviePtr, textureTarget, textureFormat, textureType); } if( null != nextFrame ) { nextFrame.setPTS(vPTS); @@ -622,195 +606,12 @@ public class FFMPEGMediaPlayer extends GLMediaPlayerImpl { return vPTS; } - private final void pushSound(ByteBuffer sampleData, int data_size, int audio_pts) { + final void pushSound(ByteBuffer sampleData, int data_size, int audio_pts) { setFirstAudioPTS2SCR( audio_pts ); if( 1.0f == playSpeed || audioSinkPlaySpeedSet ) { audioSink.enqueueData( audio_pts, sampleData, data_size); } } - private static native int getAvUtilVersion0(); - private static native int getAvUtilMajorVersionCC0(); - private static native int getAvFormatVersion0(); - private static native int getAvFormatMajorVersionCC0(); - private static native int getAvCodecVersion0(); - private static native int getAvCodecMajorVersionCC0(); - private static native int getAvResampleVersion0(); - private static native int getAvResampleMajorVersionCC0(); - private static native boolean initIDs0(); - private native long createInstance0(boolean verbose); - private native void destroyInstance0(long moviePtr); - - /** - * Issues {@link #updateAttributes(int, int, int, int, int, int, int, float, int, int, String, String)} - * and {@link #updateAttributes2(int, int, int, int, int, int, int, int, int, int)}. - * <p> - * Always uses {@link AudioSink.AudioFormat}: - * <pre> - * [type PCM, sampleRate [10000(?)..44100..48000], sampleSize 16, channelCount 1-2, signed, littleEndian] - * </pre> - * </p> - * - * @param moviePtr - * @param url - * @param vid - * @param aid - * @param aPrefChannelCount - * @param aPrefSampleRate - */ - private native void setStream0(long moviePtr, String url, String inFormat, int vid, int aid, int aMaxChannelCount, int aPrefSampleRate); - private native void setGLFuncs0(long moviePtr, long procAddrGLTexSubImage2D, long procAddrGLGetError, long procAddrGLFlush, long procAddrGLFinish); - - private native int getVideoPTS0(long moviePtr); - - private native int getAudioPTS0(long moviePtr); - private native Buffer getAudioBuffer0(long moviePtr, int plane); - - /** - * @return resulting current video PTS, or {@link TextureFrame#INVALID_PTS} - */ - private native int readNextPacket0(long moviePtr, int texTarget, int texFmt, int texType); - - private native int play0(long moviePtr); - private native int pause0(long moviePtr); - private native int seek0(long moviePtr, int position); - - /** FFMPEG/libAV Audio Sample Format */ - public static enum SampleFormat { - // NONE = -1, - U8, ///< unsigned 8 bits - S16, ///< signed 16 bits - S32, ///< signed 32 bits - FLT, ///< float - DBL, ///< double - - U8P, ///< unsigned 8 bits, planar - S16P, ///< signed 16 bits, planar - S32P, ///< signed 32 bits, planar - FLTP, ///< float, planar - DBLP, ///< double, planar - - COUNT; ///< Number of sample formats. - - public static SampleFormat valueOf(int i) { - for (SampleFormat fmt : SampleFormat.values()) { - if(fmt.ordinal() == i) { - return fmt; - } - } - return null; - } - }; - - /** FFMPEG/libAV Pixel Format */ - public static enum PixelFormat { - // NONE= -1, - YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) - YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr - RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... - BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR... - YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) - YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) - YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) - YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) - GRAY8, ///< Y , 8bpp - MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb - MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb - PAL8, ///< 8 bit with RGB32 palette - YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of YUV420P and setting color_range - YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of YUV422P and setting color_range - YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of YUV444P and setting color_range - XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing - XVMC_MPEG2_IDCT, - UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 - UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 - BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) - BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) - RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) - RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb) - NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) - NV21, ///< as above, but U and V bytes are swapped - - ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB... - RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA... - ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR... - BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA... - - GRAY16BE, ///< Y , 16bpp, big-endian - GRAY16LE, ///< Y , 16bpp, little-endian - YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) - YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of YUV440P and setting color_range - YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) - VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian - RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian - - RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian - RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian - RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), big-endian, most significant bit to 0 - RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), little-endian, most significant bit to 0 - - BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian - BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian - BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), big-endian, most significant bit to 1 - BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), little-endian, most significant bit to 1 - - VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers - VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers - VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - - YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer - - RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0 - RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0 - BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), little-endian, most significant bits to 1 - BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), big-endian, most significant bits to 1 - Y400A, ///< 8bit gray, 8bit alpha - BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian - BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian - YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - VDA_VLD, ///< hardware decoding through VDA - GBRP, ///< planar GBR 4:4:4 24bpp - GBRP9BE, ///< planar GBR 4:4:4 27bpp, big endian - GBRP9LE, ///< planar GBR 4:4:4 27bpp, little endian - GBRP10BE, ///< planar GBR 4:4:4 30bpp, big endian - GBRP10LE, ///< planar GBR 4:4:4 30bpp, little endian - GBRP16BE, ///< planar GBR 4:4:4 48bpp, big endian - GBRP16LE, ///< planar GBR 4:4:4 48bpp, little endian - COUNT ///< number of pixel formats in this list - ; - public static PixelFormat valueOf(int i) { - for (PixelFormat fmt : PixelFormat.values()) { - if(fmt.ordinal() == i) { - return fmt; - } - } - return null; - } - } } diff --git a/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGNatives.java b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGNatives.java new file mode 100644 index 000000000..5ff15564c --- /dev/null +++ b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGNatives.java @@ -0,0 +1,188 @@ +package jogamp.opengl.util.av.impl; + +import com.jogamp.opengl.util.av.AudioSink; +import com.jogamp.opengl.util.texture.TextureSequence.TextureFrame; + +interface FFMPEGNatives { + + boolean initSymbols0(long[] symbols, int count); + int getAvUtilMajorVersionCC0(); + int getAvFormatMajorVersionCC0(); + int getAvCodecMajorVersionCC0(); + int getAvResampleMajorVersionCC0(); + boolean initIDs0(); + + long createInstance0(FFMPEGMediaPlayer upstream, boolean verbose); + void destroyInstance0(long moviePtr); + + /** + * Issues {@link #updateAttributes(int, int, int, int, int, int, int, float, int, int, String, String)} + * and {@link #updateAttributes2(int, int, int, int, int, int, int, int, int, int)}. + * <p> + * Always uses {@link AudioSink.AudioFormat}: + * <pre> + * [type PCM, sampleRate [10000(?)..44100..48000], sampleSize 16, channelCount 1-2, signed, littleEndian] + * </pre> + * </p> + * + * @param moviePtr + * @param url + * @param vid + * @param aid + * @param aPrefChannelCount + * @param aPrefSampleRate + */ + void setStream0(long moviePtr, String url, String inFormat, int vid, int aid, int aMaxChannelCount, int aPrefSampleRate); + void setGLFuncs0(long moviePtr, long procAddrGLTexSubImage2D, long procAddrGLGetError, long procAddrGLFlush, long procAddrGLFinish); + + int getVideoPTS0(long moviePtr); + + int getAudioPTS0(long moviePtr); + + /** + * @return resulting current video PTS, or {@link TextureFrame#INVALID_PTS} + */ + int readNextPacket0(long moviePtr, int texTarget, int texFmt, int texType); + + int play0(long moviePtr); + int pause0(long moviePtr); + int seek0(long moviePtr, int position); + + /** FFMPEG/libAV Audio Sample Format */ + public static enum SampleFormat { + // NONE = -1, + U8, ///< unsigned 8 bits + S16, ///< signed 16 bits + S32, ///< signed 32 bits + FLT, ///< float + DBL, ///< double + + U8P, ///< unsigned 8 bits, planar + S16P, ///< signed 16 bits, planar + S32P, ///< signed 32 bits, planar + FLTP, ///< float, planar + DBLP, ///< double, planar + + COUNT; ///< Number of sample formats. + + public static SampleFormat valueOf(int i) { + for (SampleFormat fmt : SampleFormat.values()) { + if(fmt.ordinal() == i) { + return fmt; + } + } + return null; + } + }; + + /** FFMPEG/libAV Pixel Format */ + public static enum PixelFormat { + // NONE= -1, + YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) + YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr + RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... + BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR... + YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) + YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) + YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) + YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) + GRAY8, ///< Y , 8bpp + MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb + MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb + PAL8, ///< 8 bit with RGB32 palette + YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of YUV420P and setting color_range + YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of YUV422P and setting color_range + YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of YUV444P and setting color_range + XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing + XVMC_MPEG2_IDCT, + UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 + UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 + BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) + BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits + BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) + RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) + RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits + RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb) + NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) + NV21, ///< as above, but U and V bytes are swapped + + ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB... + RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA... + ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR... + BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA... + + GRAY16BE, ///< Y , 16bpp, big-endian + GRAY16LE, ///< Y , 16bpp, little-endian + YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) + YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of YUV440P and setting color_range + YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) + VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian + RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian + + RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian + RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian + RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), big-endian, most significant bit to 0 + RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), little-endian, most significant bit to 0 + + BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian + BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian + BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), big-endian, most significant bit to 1 + BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), little-endian, most significant bit to 1 + + VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers + VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers + VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + + YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers + DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer + + RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0 + RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0 + BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), little-endian, most significant bits to 1 + BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), big-endian, most significant bits to 1 + Y400A, ///< 8bit gray, 8bit alpha + BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian + BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian + YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian + YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian + YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian + YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian + YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian + YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian + VDA_VLD, ///< hardware decoding through VDA + GBRP, ///< planar GBR 4:4:4 24bpp + GBRP9BE, ///< planar GBR 4:4:4 27bpp, big endian + GBRP9LE, ///< planar GBR 4:4:4 27bpp, little endian + GBRP10BE, ///< planar GBR 4:4:4 30bpp, big endian + GBRP10LE, ///< planar GBR 4:4:4 30bpp, little endian + GBRP16BE, ///< planar GBR 4:4:4 48bpp, big endian + GBRP16LE, ///< planar GBR 4:4:4 48bpp, little endian + COUNT ///< number of pixel formats in this list + ; + public static PixelFormat valueOf(int i) { + for (PixelFormat fmt : PixelFormat.values()) { + if(fmt.ordinal() == i) { + return fmt; + } + } + return null; + } + } +} diff --git a/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGStaticNatives.java b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGStaticNatives.java new file mode 100644 index 000000000..3e9c4bf36 --- /dev/null +++ b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGStaticNatives.java @@ -0,0 +1,15 @@ +package jogamp.opengl.util.av.impl; + +import com.jogamp.common.util.VersionNumber; + +class FFMPEGStaticNatives { + static VersionNumber getAVVersion(int vers) { + return new VersionNumber( ( vers >> 16 ) & 0xFF, + ( vers >> 8 ) & 0xFF, + ( vers >> 0 ) & 0xFF ); + } + static native int getAvUtilVersion0(long func); + static native int getAvFormatVersion0(long func); + static native int getAvCodecVersion0(long func); + static native int getAvResampleVersion0(long func); +} diff --git a/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGv08Natives.java b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGv08Natives.java new file mode 100644 index 000000000..2a4d20f37 --- /dev/null +++ b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGv08Natives.java @@ -0,0 +1,51 @@ +package jogamp.opengl.util.av.impl; + +class FFMPEGv08Natives implements FFMPEGNatives { + @Override + public native boolean initSymbols0(long[] symbols, int count); + + @Override + public native int getAvUtilMajorVersionCC0(); + + @Override + public native int getAvFormatMajorVersionCC0(); + + @Override + public native int getAvCodecMajorVersionCC0(); + + @Override + public native int getAvResampleMajorVersionCC0(); + + @Override + public native boolean initIDs0(); + + @Override + public native long createInstance0(FFMPEGMediaPlayer upstream, boolean verbose); + + @Override + public native void destroyInstance0(long moviePtr); + + @Override + public native void setStream0(long moviePtr, String url, String inFormat, int vid, int aid, int aMaxChannelCount, int aPrefSampleRate); + + @Override + public native void setGLFuncs0(long moviePtr, long procAddrGLTexSubImage2D, long procAddrGLGetError, long procAddrGLFlush, long procAddrGLFinish); + + @Override + public native int getVideoPTS0(long moviePtr); + + @Override + public native int getAudioPTS0(long moviePtr); + + @Override + public native int readNextPacket0(long moviePtr, int texTarget, int texFmt, int texType); + + @Override + public native int play0(long moviePtr); + + @Override + public native int pause0(long moviePtr); + + @Override + public native int seek0(long moviePtr, int position); +} diff --git a/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGv09Natives.java b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGv09Natives.java new file mode 100644 index 000000000..b250fbac8 --- /dev/null +++ b/src/jogl/classes/jogamp/opengl/util/av/impl/FFMPEGv09Natives.java @@ -0,0 +1,51 @@ +package jogamp.opengl.util.av.impl; + +class FFMPEGv09Natives implements FFMPEGNatives { + @Override + public native boolean initSymbols0(long[] symbols, int count); + + @Override + public native int getAvUtilMajorVersionCC0(); + + @Override + public native int getAvFormatMajorVersionCC0(); + + @Override + public native int getAvCodecMajorVersionCC0(); + + @Override + public native int getAvResampleMajorVersionCC0(); + + @Override + public native boolean initIDs0(); + + @Override + public native long createInstance0(FFMPEGMediaPlayer upstream, boolean verbose); + + @Override + public native void destroyInstance0(long moviePtr); + + @Override + public native void setStream0(long moviePtr, String url, String inFormat, int vid, int aid, int aMaxChannelCount, int aPrefSampleRate); + + @Override + public native void setGLFuncs0(long moviePtr, long procAddrGLTexSubImage2D, long procAddrGLGetError, long procAddrGLFlush, long procAddrGLFinish); + + @Override + public native int getVideoPTS0(long moviePtr); + + @Override + public native int getAudioPTS0(long moviePtr); + + @Override + public native int readNextPacket0(long moviePtr, int texTarget, int texFmt, int texType); + + @Override + public native int play0(long moviePtr); + + @Override + public native int pause0(long moviePtr); + + @Override + public native int seek0(long moviePtr, int position); +} diff --git a/src/jogl/native/libav/ffmpeg_tool.h b/src/jogl/native/libav/ffmpeg_tool.h index a44bbb39a..d62cff60f 100644 --- a/src/jogl/native/libav/ffmpeg_tool.h +++ b/src/jogl/native/libav/ffmpeg_tool.h @@ -29,6 +29,7 @@ #ifndef _FFMPEG_TOOL_H #define _FFMPEG_TOOL_H +/*** #ifdef _WIN32 #include <windows.h> // __declspec(dllimport) void __stdcall Sleep(unsigned long dwMilliseconds); @@ -41,13 +42,15 @@ #include <gluegen_stddef.h> #include <gluegen_stdint.h> -#include <libavcodec/avcodec.h> -#include <libavformat/avformat.h> -#include <libavutil/avutil.h> +#include "libavcodec/avcodec.h" +#include "libavformat/avformat.h" +#include "libavutil/avutil.h" #if LIBAVCODEC_VERSION_MAJOR >= 54 -#include <libavresample/avresample.h> +#include "libavresample/avresample.h" #endif +*/ + #ifndef LIBAVRESAMPLE_VERSION_MAJOR #define LIBAVRESAMPLE_VERSION_MAJOR 0 typedef void* AVAudioResampleContext; @@ -122,6 +125,7 @@ typedef struct { typedef struct { + jobject ffmpegMediaPlayer; int32_t verbose; uint32_t avcodecVersion; diff --git a/src/jogl/native/libav/jogamp_opengl_util_av_impl_FFMPEGStaticNatives.c b/src/jogl/native/libav/jogamp_opengl_util_av_impl_FFMPEGStaticNatives.c new file mode 100644 index 000000000..ee7f3f47d --- /dev/null +++ b/src/jogl/native/libav/jogamp_opengl_util_av_impl_FFMPEGStaticNatives.c @@ -0,0 +1,84 @@ +/** + * Copyright 2013 JogAmp Community. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of JogAmp Community. + */ + +#ifdef _WIN32 + #include <windows.h> + // __declspec(dllimport) void __stdcall Sleep(unsigned long dwMilliseconds); + + #define usleep(t) Sleep((t) / 1000) +#endif + +#include <gluegen_stdint.h> +#include <gluegen_inttypes.h> +#include <gluegen_stddef.h> +#include <gluegen_stdint.h> + +#include "jogamp_opengl_util_av_impl_FFMPEGStaticNatives.h" + +#include "JoglCommon.h" + +#include <GL/gl.h> + +typedef unsigned (APIENTRYP AV_GET_VERSION)(void); + +JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGStaticNatives_getAvUtilVersion0 + (JNIEnv *env, jclass clazz, jlong func) { + if( 0 != func ) { + return (jint) ((AV_GET_VERSION)func)(); + } else { + return 0; + } +} + +JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGStaticNatives_getAvFormatVersion0 + (JNIEnv *env, jclass clazz, jlong func) { + if( 0 != func ) { + return (jint) ((AV_GET_VERSION)func)(); + } else { + return 0; + } +} + +JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGStaticNatives_getAvCodecVersion0 + (JNIEnv *env, jclass clazz, jlong func) { + if( 0 != func ) { + return (jint) ((AV_GET_VERSION)func)(); + } else { + return 0; + } +} + +JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGStaticNatives_getAvResampleVersion0 + (JNIEnv *env, jclass clazz, jlong func) { + if( 0 != func ) { + return (jint) ((AV_GET_VERSION)func)(); + } else { + return 0; + } +} + diff --git a/src/jogl/native/libav/jogamp_opengl_util_av_impl_FFMPEGMediaPlayer.c b/src/jogl/native/libav/jogamp_opengl_util_av_impl_FFMPEGvXXNatives.c index cfbb604e4..54615c4b9 100644 --- a/src/jogl/native/libav/jogamp_opengl_util_av_impl_FFMPEGMediaPlayer.c +++ b/src/jogl/native/libav/jogamp_opengl_util_av_impl_FFMPEGvXXNatives.c @@ -26,16 +26,18 @@ * or implied, of JogAmp Community. */ -#include "jogamp_opengl_util_av_impl_FFMPEGMediaPlayer.h" +// #define FF_FUNC(METHOD) Java_jogamp_opengl_util_av_impl_FFMPEGv08 ## METHOD #include "JoglCommon.h" #include "ffmpeg_tool.h" -#include <libavutil/pixdesc.h> -#include <libavutil/samplefmt.h> +/** +#include "libavutil/pixdesc.h" +#include "libavutil/samplefmt.h" #if LIBAVUTIL_VERSION_MAJOR < 53 - #include <libavutil/audioconvert.h> - // 52: #include <libavutil/channel_layout.h> + #include "libavutil/audioconvert.h" + // 52: #include "libavutil/channel_layout.h" #endif +*/ #include <GL/gl.h> static const char * const ClazzNameFFMPEGMediaPlayer = "jogamp/opengl/util/av/impl/FFMPEGMediaPlayer"; @@ -170,14 +172,14 @@ static AVRESAMPLE_CONVERT sp_avresample_convert; #define SYMBOL_COUNT 51 -JNIEXPORT jboolean JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGDynamicLibraryBundleInfo_initSymbols0 - (JNIEnv *env, jclass clazz, jobject jSymbols, jint count) +JNIEXPORT jboolean JNICALL FF_FUNC(initSymbols0) + (JNIEnv *env, jobject instance, jobject jSymbols, jint count) { int64_t* symbols; // jlong -> int64_t -> intptr_t -> FUNC_PTR int i; if(SYMBOL_COUNT != count) { - fprintf(stderr, "FFMPEGDynamicLibraryBundleInfo.initSymbols0: Wrong symbol count: Expected %d, Is %d\n", + fprintf(stderr, "FFMPEGNatives.initSymbols0: Wrong symbol count: Expected %d, Is %d\n", SYMBOL_COUNT, count); return JNI_FALSE; } @@ -251,7 +253,7 @@ JNIEXPORT jboolean JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGDynamicLibraryB if(SYMBOL_COUNT != i) { // boom - fprintf(stderr, "FFMPEGDynamicLibraryBundleInfo.initSymbols0: Wrong symbol assignment count: Expected %d, Is %d\n", + fprintf(stderr, "FFMPEGNatives.initSymbols0: Wrong symbol assignment count: Expected %d, Is %d\n", SYMBOL_COUNT, i); return JNI_FALSE; } @@ -259,9 +261,9 @@ JNIEXPORT jboolean JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGDynamicLibraryB return JNI_TRUE; } -static int _isAudioFormatSupported(JNIEnv *env, jobject instance, enum AVSampleFormat aSampleFmt, int32_t aSampleRate, int32_t aChannels) +static int _isAudioFormatSupported(JNIEnv *env, jobject ffmpegMediaPlayer, enum AVSampleFormat aSampleFmt, int32_t aSampleRate, int32_t aChannels) { - return JNI_TRUE == (*env)->CallBooleanMethod(env, instance, jni_mid_isAudioFormatSupported, aSampleFmt, aSampleRate, aChannels); + return JNI_TRUE == (*env)->CallBooleanMethod(env, ffmpegMediaPlayer, jni_mid_isAudioFormatSupported, aSampleFmt, aSampleRate, aChannels); } static void _updateJavaAttributes(JNIEnv *env, jobject instance, FFMPEGToolBasicAV_t* pAV) { @@ -276,13 +278,13 @@ static void _updateJavaAttributes(JNIEnv *env, jobject instance, FFMPEGToolBasic w = 0; h = 0; } - (*env)->CallVoidMethod(env, instance, jni_mid_updateAttributes2, + (*env)->CallVoidMethod(env, pAV->ffmpegMediaPlayer, jni_mid_updateAttributes2, pAV->vPixFmt, pAV->vBufferPlanes, pAV->vBitsPerPixel, pAV->vBytesPerPixelPerPlane, pAV->vLinesize[0], pAV->vLinesize[1], pAV->vLinesize[2], pAV->vTexWidth[0], pAV->vTexWidth[1], pAV->vTexWidth[2], h, pAV->aSampleFmtOut, pAV->aSampleRateOut, pAV->aChannelsOut, pAV->aFrameSize); - (*env)->CallVoidMethod(env, instance, jni_mid_updateAttributes1, + (*env)->CallVoidMethod(env, pAV->ffmpegMediaPlayer, jni_mid_updateAttributes1, pAV->vid, pAV->aid, w, h, pAV->bps_stream, pAV->bps_video, pAV->bps_audio, @@ -366,6 +368,10 @@ static void freeInstance(JNIEnv *env, FFMPEGToolBasicAV_t* pAV) { } pAV->pFormatCtx = NULL; } + if( NULL != pAV->ffmpegMediaPlayer ) { + (*env)->DeleteGlobalRef(env, pAV->ffmpegMediaPlayer); + pAV->ffmpegMediaPlayer = NULL; + } free(pAV); } } @@ -407,48 +413,28 @@ static enum PixelFormat my_get_format(struct AVCodecContext *s, const enum Pixel } #endif -JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_getAvUtilVersion0 - (JNIEnv *env, jclass clazz) { - return (jint) sp_avutil_version(); -} -JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_getAvUtilMajorVersionCC0 - (JNIEnv *env, jclass clazz) { +JNIEXPORT jint JNICALL FF_FUNC(getAvUtilMajorVersionCC0) + (JNIEnv *env, jobject instance) { return (jint) LIBAVUTIL_VERSION_MAJOR; } -JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_getAvFormatVersion0 - (JNIEnv *env, jclass clazz) { - return (jint) sp_avformat_version(); -} -JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_getAvFormatMajorVersionCC0 - (JNIEnv *env, jclass clazz) { +JNIEXPORT jint JNICALL FF_FUNC(getAvFormatMajorVersionCC0) + (JNIEnv *env, jobject instance) { return (jint) LIBAVFORMAT_VERSION_MAJOR; } -JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_getAvCodecVersion0 - (JNIEnv *env, jclass clazz) { - return (jint) sp_avcodec_version(); -} -JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_getAvCodecMajorVersionCC0 - (JNIEnv *env, jclass clazz) { +JNIEXPORT jint JNICALL FF_FUNC(getAvCodecMajorVersionCC0) + (JNIEnv *env, jobject instance) { return (jint) LIBAVCODEC_VERSION_MAJOR; } -JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_getAvResampleVersion0 - (JNIEnv *env, jclass clazz) { - if(HAS_FUNC(sp_avresample_version)) { - return (jint) sp_avresample_version(); - } else { - return 0; - } -} -JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_getAvResampleMajorVersionCC0 - (JNIEnv *env, jclass clazz) { +JNIEXPORT jint JNICALL FF_FUNC(getAvResampleMajorVersionCC0) + (JNIEnv *env, jobject instance) { return (jint) LIBAVRESAMPLE_VERSION_MAJOR; } -JNIEXPORT jboolean JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_initIDs0 - (JNIEnv *env, jclass clazz) +JNIEXPORT jboolean JNICALL FF_FUNC(initIDs0) + (JNIEnv *env, jobject instance) { JoglCommon_init(env); @@ -481,8 +467,8 @@ JNIEXPORT jboolean JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_ini return JNI_TRUE; } -JNIEXPORT jlong JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_createInstance0 - (JNIEnv *env, jobject instance, jboolean verbose) +JNIEXPORT jlong JNICALL FF_FUNC(createInstance0) + (JNIEnv *env, jobject instance, jobject ffmpegMediaPlayer, jboolean verbose) { FFMPEGToolBasicAV_t * pAV = calloc(1, sizeof(FFMPEGToolBasicAV_t)); if(NULL==pAV) { @@ -515,6 +501,7 @@ JNIEXPORT jlong JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_create sp_avformat_network_init(); } + pAV->ffmpegMediaPlayer = (*env)->NewGlobalRef(env, ffmpegMediaPlayer); pAV->verbose = verbose; pAV->vid=AV_STREAM_ID_AUTO; pAV->aid=AV_STREAM_ID_AUTO; @@ -522,7 +509,7 @@ JNIEXPORT jlong JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_create return (jlong) (intptr_t) pAV; } -JNIEXPORT void JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_destroyInstance0 +JNIEXPORT void JNICALL FF_FUNC(destroyInstance0) (JNIEnv *env, jobject instance, jlong ptr) { FFMPEGToolBasicAV_t *pAV = (FFMPEGToolBasicAV_t *)((void *)((intptr_t)ptr)); @@ -549,7 +536,7 @@ static uint64_t getDefaultAudioChannelLayout(int channelCount) { static void initPTSStats(PTSStats *ptsStats); static int64_t evalPTS(PTSStats *ptsStats, int64_t inPTS, int64_t inDTS); -JNIEXPORT void JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_setStream0 +JNIEXPORT void JNICALL FF_FUNC(setStream0) (JNIEnv *env, jobject instance, jlong ptr, jstring jURL, jstring jInFmtStr, jint vid, jint aid, jint aMaxChannelCount, jint aPrefSampleRate) { @@ -716,7 +703,7 @@ JNIEXPORT void JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_setStre pAV->aFrameSize = pAV->pACodecCtx->frame_size; // in samples per channel! pAV->aSampleFmt = pAV->pACodecCtx->sample_fmt; pAV->frames_audio = pAV->pAStream->nb_frames; - pAV->aSinkSupport = _isAudioFormatSupported(env, instance, pAV->aSampleFmt, pAV->aSampleRate, pAV->aChannels); + pAV->aSinkSupport = _isAudioFormatSupported(env, pAV->ffmpegMediaPlayer, pAV->aSampleFmt, pAV->aSampleRate, pAV->aChannels); if( pAV->verbose ) { fprintf(stderr, "A channels %d [l %d], sample_rate %d, frame_size %d, frame_number %d, r_frame_rate %f, avg_frame_rate %f, nb_frames %d, [maxChan %d, prefRate %d, req_chan_layout %d, req_chan %d], sink-support %d \n", pAV->aChannels, pAV->pACodecCtx->channel_layout, pAV->aSampleRate, pAV->aFrameSize, pAV->pACodecCtx->frame_number, @@ -746,11 +733,11 @@ JNIEXPORT void JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_setStre int32_t aSampleRateOut; int32_t minChannelCount = MIN_INT(aMaxChannelCount,pAV->pACodecCtx->channels); - if( _isAudioFormatSupported(env, instance, aSampleFmtOut, aPrefSampleRate, pAV->pACodecCtx->channels) ) { + if( _isAudioFormatSupported(env, pAV->ffmpegMediaPlayer, aSampleFmtOut, aPrefSampleRate, pAV->pACodecCtx->channels) ) { aChannelsOut = pAV->pACodecCtx->channels; aSampleRateOut = aPrefSampleRate; aSinkSupport = 1; - } else if( _isAudioFormatSupported(env, instance, aSampleFmtOut, aPrefSampleRate, minChannelCount) ) { + } else if( _isAudioFormatSupported(env, pAV->ffmpegMediaPlayer, aSampleFmtOut, aPrefSampleRate, minChannelCount) ) { aChannelsOut = minChannelCount; aSampleRateOut = aPrefSampleRate; aSinkSupport = 1; @@ -898,7 +885,7 @@ JNIEXPORT void JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_setStre _updateJavaAttributes(env, instance, pAV); } -JNIEXPORT void JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_setGLFuncs0 +JNIEXPORT void JNICALL FF_FUNC(setGLFuncs0) (JNIEnv *env, jobject instance, jlong ptr, jlong jProcAddrGLTexSubImage2D, jlong jProcAddrGLGetError, jlong jProcAddrGLFlush, jlong jProcAddrGLFinish) { FFMPEGToolBasicAV_t *pAV = (FFMPEGToolBasicAV_t *)((void *)((intptr_t)ptr)); @@ -916,7 +903,7 @@ JNIEXPORT void JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_setGLFu #define DBG_TEXSUBIMG2D_b(p) #endif -JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_readNextPacket0 +JNIEXPORT jint JNICALL FF_FUNC(readNextPacket0) (JNIEnv *env, jobject instance, jlong ptr, jint texTarget, jint texFmt, jint texType) { FFMPEGToolBasicAV_t *pAV = (FFMPEGToolBasicAV_t *)((void *)((intptr_t)ptr)); @@ -961,7 +948,7 @@ JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_readNex #if 0 len1 = sp_avcodec_decode_audio3(pAV->pACodecCtx, int16_t *samples, int *frame_size_ptr, &frameDecoded, &packet); #endif - JoglCommon_throwNewRuntimeException(env, "Unimplemented: FFMPEGMediaPlayer sp_avcodec_decode_audio3 fallback"); + JoglCommon_throwNewRuntimeException(env, "Unimplemented: FFMPEGNatives sp_avcodec_decode_audio3 fallback"); return 0; } if (len1 < 0) { @@ -1066,7 +1053,7 @@ JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_readNex pNIOBufferCurrent->origPtr, pNIOBufferCurrent->nioRef, pNIOBufferCurrent->size); } } - (*env)->CallVoidMethod(env, instance, jni_mid_pushSound, pNIOBufferCurrent->nioRef, data_size, pAV->aPTS); + (*env)->CallVoidMethod(env, pAV->ffmpegMediaPlayer, jni_mid_pushSound, pNIOBufferCurrent->nioRef, data_size, pAV->aPTS); } } } else if(packet.stream_index==pAV->vid) { @@ -1197,20 +1184,20 @@ static int64_t evalPTS(PTSStats *ptsStats, int64_t inPTS, int64_t inDTS) { } -JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_play0 +JNIEXPORT jint JNICALL FF_FUNC(play0) (JNIEnv *env, jobject instance, jlong ptr) { FFMPEGToolBasicAV_t *pAV = (FFMPEGToolBasicAV_t *)((void *)((intptr_t)ptr)); return sp_av_read_play(pAV->pFormatCtx); } -JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_pause0 +JNIEXPORT jint JNICALL FF_FUNC(pause0) (JNIEnv *env, jobject instance, jlong ptr) { FFMPEGToolBasicAV_t *pAV = (FFMPEGToolBasicAV_t *)((void *)((intptr_t)ptr)); return sp_av_read_pause(pAV->pFormatCtx); } -JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_seek0 +JNIEXPORT jint JNICALL FF_FUNC(seek0) (JNIEnv *env, jobject instance, jlong ptr, jint pos1) { const FFMPEGToolBasicAV_t *pAV = (FFMPEGToolBasicAV_t *)((void *)((intptr_t)ptr)); @@ -1267,14 +1254,14 @@ JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_seek0 return rPTS; } -JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_getVideoPTS0 +JNIEXPORT jint JNICALL FF_FUNC(getVideoPTS0) (JNIEnv *env, jobject instance, jlong ptr) { FFMPEGToolBasicAV_t *pAV = (FFMPEGToolBasicAV_t *)((void *)((intptr_t)ptr)); return pAV->vPTS; } -JNIEXPORT jint JNICALL Java_jogamp_opengl_util_av_impl_FFMPEGMediaPlayer_getAudioPTS0 +JNIEXPORT jint JNICALL FF_FUNC(getAudioPTS0) (JNIEnv *env, jobject instance, jlong ptr) { FFMPEGToolBasicAV_t *pAV = (FFMPEGToolBasicAV_t *)((void *)((intptr_t)ptr)); diff --git a/src/jogl/native/libav/lavc53.lavf53.lavu51/jogamp_opengl_util_av_impl_FFMPEGv08Natives.c b/src/jogl/native/libav/lavc53.lavf53.lavu51/jogamp_opengl_util_av_impl_FFMPEGv08Natives.c new file mode 100644 index 000000000..217ca8cc4 --- /dev/null +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/jogamp_opengl_util_av_impl_FFMPEGv08Natives.c @@ -0,0 +1,31 @@ +#ifdef _WIN32 + #include <windows.h> + // __declspec(dllimport) void __stdcall Sleep(unsigned long dwMilliseconds); + + #define usleep(t) Sleep((t) / 1000) +#endif + +#include <gluegen_stdint.h> +#include <gluegen_inttypes.h> +#include <gluegen_stddef.h> +#include <gluegen_stdint.h> + +#include "libavcodec/avcodec.h" +#include "libavformat/avformat.h" +#include "libavutil/avutil.h" +#if LIBAVCODEC_VERSION_MAJOR >= 54 +#include "libavresample/avresample.h" +#endif + +#include "libavutil/pixdesc.h" +#include "libavutil/samplefmt.h" +#if LIBAVUTIL_VERSION_MAJOR < 53 + #include "libavutil/audioconvert.h" + // 52: #include "libavutil/channel_layout.h" +#endif + +#include "jogamp_opengl_util_av_impl_FFMPEGv08Natives.h" + +#define FF_FUNC(METHOD) Java_jogamp_opengl_util_av_impl_FFMPEGv08Natives_ ## METHOD + +#include "../jogamp_opengl_util_av_impl_FFMPEGvXXNatives.c" diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/avcodec.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/avcodec.h index 2451294c1..2451294c1 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/avcodec.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/avcodec.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/avfft.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/avfft.h index 91fe2f429..91fe2f429 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/avfft.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/avfft.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/dxva2.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/dxva2.h index 374ae039a..374ae039a 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/dxva2.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/dxva2.h diff --git a/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/libavcodec b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/libavcodec new file mode 120000 index 000000000..1bd140d57 --- /dev/null +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/libavcodec @@ -0,0 +1 @@ +../libavcodec
\ No newline at end of file diff --git a/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/libavutil b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/libavutil new file mode 120000 index 000000000..29ab1c9b4 --- /dev/null +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/libavutil @@ -0,0 +1 @@ +../libavutil
\ No newline at end of file diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/opt.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/opt.h index 2380e7433..2380e7433 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/opt.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/opt.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/vaapi.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/vaapi.h index 36fb386ac..36fb386ac 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/vaapi.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/vaapi.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/vda.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/vda.h index 2cb51c5f5..2cb51c5f5 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/vda.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/vda.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/vdpau.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/vdpau.h index 6f1386067..6f1386067 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/vdpau.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/vdpau.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/version.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/version.h index 77e16823f..77e16823f 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/version.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/version.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/xvmc.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/xvmc.h index 1239015fc..1239015fc 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavcodec/xvmc.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavcodec/xvmc.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavformat/avformat.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/avformat.h index 22a89d3cd..22a89d3cd 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavformat/avformat.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/avformat.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavformat/avio.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/avio.h index 78935d941..78935d941 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavformat/avio.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/avio.h diff --git a/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/libavcodec b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/libavcodec new file mode 120000 index 000000000..1bd140d57 --- /dev/null +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/libavcodec @@ -0,0 +1 @@ +../libavcodec
\ No newline at end of file diff --git a/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/libavformat b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/libavformat new file mode 120000 index 000000000..2b9647693 --- /dev/null +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/libavformat @@ -0,0 +1 @@ +../libavformat
\ No newline at end of file diff --git a/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/libavutil b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/libavutil new file mode 120000 index 000000000..29ab1c9b4 --- /dev/null +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/libavutil @@ -0,0 +1 @@ +../libavutil
\ No newline at end of file diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavformat/version.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/version.h index 009a60b1a..009a60b1a 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavformat/version.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavformat/version.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/adler32.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/adler32.h index a8ff6f9d4..a8ff6f9d4 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/adler32.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/adler32.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/aes.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/aes.h index cf7b46209..cf7b46209 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/aes.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/aes.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/attributes.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/attributes.h index ef990a1d4..ef990a1d4 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/attributes.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/attributes.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/audioconvert.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/audioconvert.h index 00ed0ff7b..00ed0ff7b 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/audioconvert.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/audioconvert.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/avassert.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/avassert.h index b223d26e8..b223d26e8 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/avassert.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/avassert.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/avconfig.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/avconfig.h index f10aa6186..f10aa6186 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/avconfig.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/avconfig.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/avstring.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/avstring.h index ed4e465cb..ed4e465cb 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/avstring.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/avstring.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/avutil.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/avutil.h index 05e924837..05e924837 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/avutil.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/avutil.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/base64.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/base64.h index 4750cf5c7..4750cf5c7 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/base64.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/base64.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/bswap.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/bswap.h index 8a350e1cd..8a350e1cd 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/bswap.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/bswap.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/common.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/common.h index c99d85847..c99d85847 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/common.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/common.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/cpu.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/cpu.h index df7bf4421..df7bf4421 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/cpu.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/cpu.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/crc.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/crc.h index a93411941..a93411941 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/crc.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/crc.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/dict.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/dict.h index 6e28b6140..6e28b6140 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/dict.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/dict.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/error.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/error.h index 11bcc5c4c..11bcc5c4c 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/error.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/error.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/eval.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/eval.h index ccb29e7a3..ccb29e7a3 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/eval.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/eval.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/fifo.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/fifo.h index f10623930..f10623930 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/fifo.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/fifo.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/file.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/file.h index c481c37f9..c481c37f9 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/file.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/file.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/imgutils.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/imgutils.h index 3815a49ae..3815a49ae 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/imgutils.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/imgutils.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/intfloat.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/intfloat.h index 9db624a6c..9db624a6c 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/intfloat.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/intfloat.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/intfloat_readwrite.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/intfloat_readwrite.h index f093b92cd..f093b92cd 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/intfloat_readwrite.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/intfloat_readwrite.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/intreadwrite.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/intreadwrite.h index 01eb27804..01eb27804 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/intreadwrite.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/intreadwrite.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/lfg.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/lfg.h index 904d00a66..904d00a66 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/lfg.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/lfg.h diff --git a/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/libavutil b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/libavutil new file mode 120000 index 000000000..29ab1c9b4 --- /dev/null +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/libavutil @@ -0,0 +1 @@ +../libavutil
\ No newline at end of file diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/log.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/log.h index 0678e1a3b..0678e1a3b 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/log.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/log.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/lzo.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/lzo.h index 1b774a53b..1b774a53b 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/lzo.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/lzo.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/mathematics.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/mathematics.h index 0b072ebe6..0b072ebe6 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/mathematics.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/mathematics.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/md5.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/md5.h index 1412ee240..1412ee240 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/md5.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/md5.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/mem.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/mem.h index cd8490b2d..cd8490b2d 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/mem.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/mem.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/opt.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/opt.h index 19549408e..19549408e 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/opt.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/opt.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/parseutils.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/parseutils.h index 0844abb2f..0844abb2f 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/parseutils.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/parseutils.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/pixdesc.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/pixdesc.h index b5972c78f..b5972c78f 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/pixdesc.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/pixdesc.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/pixfmt.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/pixfmt.h index bd898bdc8..bd898bdc8 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/pixfmt.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/pixfmt.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/random_seed.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/random_seed.h index b1fad13d0..b1fad13d0 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/random_seed.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/random_seed.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/rational.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/rational.h index 0ec18ec96..0ec18ec96 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/rational.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/rational.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/samplefmt.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/samplefmt.h index b6715561d..b6715561d 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/samplefmt.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/samplefmt.h diff --git a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/sha.h b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/sha.h index 8350954c4..8350954c4 100644 --- a/make/stub_includes/libav/lavc53.lavf53.lavu51/libavutil/sha.h +++ b/src/jogl/native/libav/lavc53.lavf53.lavu51/libavutil/sha.h diff --git a/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/jogamp_opengl_util_av_impl_FFMPEGv09Natives.c b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/jogamp_opengl_util_av_impl_FFMPEGv09Natives.c new file mode 100644 index 000000000..53f72754f --- /dev/null +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/jogamp_opengl_util_av_impl_FFMPEGv09Natives.c @@ -0,0 +1,31 @@ +#ifdef _WIN32 + #include <windows.h> + // __declspec(dllimport) void __stdcall Sleep(unsigned long dwMilliseconds); + + #define usleep(t) Sleep((t) / 1000) +#endif + +#include <gluegen_stdint.h> +#include <gluegen_inttypes.h> +#include <gluegen_stddef.h> +#include <gluegen_stdint.h> + +#include "libavcodec/avcodec.h" +#include "libavformat/avformat.h" +#include "libavutil/avutil.h" +#if LIBAVCODEC_VERSION_MAJOR >= 54 +#include "libavresample/avresample.h" +#endif + +#include "libavutil/pixdesc.h" +#include "libavutil/samplefmt.h" +#if LIBAVUTIL_VERSION_MAJOR < 53 + #include "libavutil/audioconvert.h" + // 52: #include "libavutil/channel_layout.h" +#endif + +#include "jogamp_opengl_util_av_impl_FFMPEGv09Natives.h" + +#define FF_FUNC(METHOD) Java_jogamp_opengl_util_av_impl_FFMPEGv09Natives_ ## METHOD + +#include "../jogamp_opengl_util_av_impl_FFMPEGvXXNatives.c" diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/avcodec.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/avcodec.h index e6b8ec626..e6b8ec626 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/avcodec.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/avcodec.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/avfft.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/avfft.h index b89618258..b89618258 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/avfft.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/avfft.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/dxva2.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/dxva2.h index c06f1f333..c06f1f333 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/dxva2.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/dxva2.h diff --git a/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/libavcodec b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/libavcodec new file mode 120000 index 000000000..1bd140d57 --- /dev/null +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/libavcodec @@ -0,0 +1 @@ +../libavcodec
\ No newline at end of file diff --git a/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/libavutil b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/libavutil new file mode 120000 index 000000000..29ab1c9b4 --- /dev/null +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/libavutil @@ -0,0 +1 @@ +../libavutil
\ No newline at end of file diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/old_codec_ids.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/old_codec_ids.h index 2b72e38d2..2b72e38d2 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/old_codec_ids.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/old_codec_ids.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vaapi.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vaapi.h index 39e88259d..39e88259d 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vaapi.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vaapi.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vda.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vda.h index f0ec2bfec..f0ec2bfec 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vda.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vda.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vdpau.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vdpau.h index 241ff1905..241ff1905 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vdpau.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/vdpau.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/version.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/version.h index 348ce99f2..348ce99f2 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/version.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/version.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/xvmc.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/xvmc.h index 1f77e4efc..1f77e4efc 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/xvmc.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavcodec/xvmc.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavformat/avformat.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/avformat.h index 149b66f1c..149b66f1c 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavformat/avformat.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/avformat.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavformat/avio.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/avio.h index b6d3cb33b..b6d3cb33b 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavformat/avio.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/avio.h diff --git a/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/libavcodec b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/libavcodec new file mode 120000 index 000000000..1bd140d57 --- /dev/null +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/libavcodec @@ -0,0 +1 @@ +../libavcodec
\ No newline at end of file diff --git a/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/libavformat b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/libavformat new file mode 120000 index 000000000..2b9647693 --- /dev/null +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/libavformat @@ -0,0 +1 @@ +../libavformat
\ No newline at end of file diff --git a/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/libavutil b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/libavutil new file mode 120000 index 000000000..29ab1c9b4 --- /dev/null +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/libavutil @@ -0,0 +1 @@ +../libavutil
\ No newline at end of file diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavformat/version.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/version.h index c2c1e3a8d..c2c1e3a8d 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavformat/version.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavformat/version.h diff --git a/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/avresample.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/avresample.h new file mode 100644 index 000000000..001278740 --- /dev/null +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/avresample.h @@ -0,0 +1,379 @@ +/* + * Copyright (c) 2012 Justin Ruggles <[email protected]> + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVRESAMPLE_AVRESAMPLE_H +#define AVRESAMPLE_AVRESAMPLE_H + +/** + * @file + * @ingroup lavr + * external API header + */ + +/** + * @defgroup lavr Libavresample + * @{ + * + * Libavresample (lavr) is a library that handles audio resampling, sample + * format conversion and mixing. + * + * Interaction with lavr is done through AVAudioResampleContext, which is + * allocated with avresample_alloc_context(). It is opaque, so all parameters + * must be set with the @ref avoptions API. + * + * For example the following code will setup conversion from planar float sample + * format to interleaved signed 16-bit integer, downsampling from 48kHz to + * 44.1kHz and downmixing from 5.1 channels to stereo (using the default mixing + * matrix): + * @code + * AVAudioResampleContext *avr = avresample_alloc_context(); + * av_opt_set_int(avr, "in_channel_layout", AV_CH_LAYOUT_5POINT1, 0); + * av_opt_set_int(avr, "out_channel_layout", AV_CH_LAYOUT_STEREO, 0); + * av_opt_set_int(avr, "in_sample_rate", 48000, 0); + * av_opt_set_int(avr, "out_sample_rate", 44100, 0); + * av_opt_set_int(avr, "in_sample_fmt", AV_SAMPLE_FMT_FLTP, 0); + * av_opt_set_int(avr, "out_sample_fmt", AV_SAMPLE_FMT_S16, 0); + * @endcode + * + * Once the context is initialized, it must be opened with avresample_open(). If + * you need to change the conversion parameters, you must close the context with + * avresample_close(), change the parameters as described above, then reopen it + * again. + * + * The conversion itself is done by repeatedly calling avresample_convert(). + * Note that the samples may get buffered in two places in lavr. The first one + * is the output FIFO, where the samples end up if the output buffer is not + * large enough. The data stored in there may be retrieved at any time with + * avresample_read(). The second place is the resampling delay buffer, + * applicable only when resampling is done. The samples in it require more input + * before they can be processed. Their current amount is returned by + * avresample_get_delay(). At the end of conversion the resampling buffer can be + * flushed by calling avresample_convert() with NULL input. + * + * The following code demonstrates the conversion loop assuming the parameters + * from above and caller-defined functions get_input() and handle_output(): + * @code + * uint8_t **input; + * int in_linesize, in_samples; + * + * while (get_input(&input, &in_linesize, &in_samples)) { + * uint8_t *output + * int out_linesize; + * int out_samples = avresample_available(avr) + + * av_rescale_rnd(avresample_get_delay(avr) + + * in_samples, 44100, 48000, AV_ROUND_UP); + * av_samples_alloc(&output, &out_linesize, 2, out_samples, + * AV_SAMPLE_FMT_S16, 0); + * out_samples = avresample_convert(avr, &output, out_linesize, out_samples, + * input, in_linesize, in_samples); + * handle_output(output, out_linesize, out_samples); + * av_freep(&output); + * } + * @endcode + * + * When the conversion is finished and the FIFOs are flushed if required, the + * conversion context and everything associated with it must be freed with + * avresample_free(). + */ + +#include "libavutil/avutil.h" +#include "libavutil/channel_layout.h" +#include "libavutil/dict.h" +#include "libavutil/log.h" + +#include "libavresample/version.h" + +#define AVRESAMPLE_MAX_CHANNELS 32 + +typedef struct AVAudioResampleContext AVAudioResampleContext; + +/** Mixing Coefficient Types */ +enum AVMixCoeffType { + AV_MIX_COEFF_TYPE_Q8, /** 16-bit 8.8 fixed-point */ + AV_MIX_COEFF_TYPE_Q15, /** 32-bit 17.15 fixed-point */ + AV_MIX_COEFF_TYPE_FLT, /** floating-point */ + AV_MIX_COEFF_TYPE_NB, /** Number of coeff types. Not part of ABI */ +}; + +/** Resampling Filter Types */ +enum AVResampleFilterType { + AV_RESAMPLE_FILTER_TYPE_CUBIC, /**< Cubic */ + AV_RESAMPLE_FILTER_TYPE_BLACKMAN_NUTTALL, /**< Blackman Nuttall Windowed Sinc */ + AV_RESAMPLE_FILTER_TYPE_KAISER, /**< Kaiser Windowed Sinc */ +}; + +enum AVResampleDitherMethod { + AV_RESAMPLE_DITHER_NONE, /**< Do not use dithering */ + AV_RESAMPLE_DITHER_RECTANGULAR, /**< Rectangular Dither */ + AV_RESAMPLE_DITHER_TRIANGULAR, /**< Triangular Dither*/ + AV_RESAMPLE_DITHER_TRIANGULAR_HP, /**< Triangular Dither with High Pass */ + AV_RESAMPLE_DITHER_TRIANGULAR_NS, /**< Triangular Dither with Noise Shaping */ + AV_RESAMPLE_DITHER_NB, /**< Number of dither types. Not part of ABI. */ +}; + +/** + * Return the LIBAVRESAMPLE_VERSION_INT constant. + */ +unsigned avresample_version(void); + +/** + * Return the libavresample build-time configuration. + * @return configure string + */ +const char *avresample_configuration(void); + +/** + * Return the libavresample license. + */ +const char *avresample_license(void); + +/** + * Get the AVClass for AVAudioResampleContext. + * + * Can be used in combination with AV_OPT_SEARCH_FAKE_OBJ for examining options + * without allocating a context. + * + * @see av_opt_find(). + * + * @return AVClass for AVAudioResampleContext + */ +const AVClass *avresample_get_class(void); + +/** + * Allocate AVAudioResampleContext and set options. + * + * @return allocated audio resample context, or NULL on failure + */ +AVAudioResampleContext *avresample_alloc_context(void); + +/** + * Initialize AVAudioResampleContext. + * + * @param avr audio resample context + * @return 0 on success, negative AVERROR code on failure + */ +int avresample_open(AVAudioResampleContext *avr); + +/** + * Close AVAudioResampleContext. + * + * This closes the context, but it does not change the parameters. The context + * can be reopened with avresample_open(). It does, however, clear the output + * FIFO and any remaining leftover samples in the resampling delay buffer. If + * there was a custom matrix being used, that is also cleared. + * + * @see avresample_convert() + * @see avresample_set_matrix() + * + * @param avr audio resample context + */ +void avresample_close(AVAudioResampleContext *avr); + +/** + * Free AVAudioResampleContext and associated AVOption values. + * + * This also calls avresample_close() before freeing. + * + * @param avr audio resample context + */ +void avresample_free(AVAudioResampleContext **avr); + +/** + * Generate a channel mixing matrix. + * + * This function is the one used internally by libavresample for building the + * default mixing matrix. It is made public just as a utility function for + * building custom matrices. + * + * @param in_layout input channel layout + * @param out_layout output channel layout + * @param center_mix_level mix level for the center channel + * @param surround_mix_level mix level for the surround channel(s) + * @param lfe_mix_level mix level for the low-frequency effects channel + * @param normalize if 1, coefficients will be normalized to prevent + * overflow. if 0, coefficients will not be + * normalized. + * @param[out] matrix mixing coefficients; matrix[i + stride * o] is + * the weight of input channel i in output channel o. + * @param stride distance between adjacent input channels in the + * matrix array + * @param matrix_encoding matrixed stereo downmix mode (e.g. dplii) + * @return 0 on success, negative AVERROR code on failure + */ +int avresample_build_matrix(uint64_t in_layout, uint64_t out_layout, + double center_mix_level, double surround_mix_level, + double lfe_mix_level, int normalize, double *matrix, + int stride, enum AVMatrixEncoding matrix_encoding); + +/** + * Get the current channel mixing matrix. + * + * If no custom matrix has been previously set or the AVAudioResampleContext is + * not open, an error is returned. + * + * @param avr audio resample context + * @param matrix mixing coefficients; matrix[i + stride * o] is the weight of + * input channel i in output channel o. + * @param stride distance between adjacent input channels in the matrix array + * @return 0 on success, negative AVERROR code on failure + */ +int avresample_get_matrix(AVAudioResampleContext *avr, double *matrix, + int stride); + +/** + * Set channel mixing matrix. + * + * Allows for setting a custom mixing matrix, overriding the default matrix + * generated internally during avresample_open(). This function can be called + * anytime on an allocated context, either before or after calling + * avresample_open(), as long as the channel layouts have been set. + * avresample_convert() always uses the current matrix. + * Calling avresample_close() on the context will clear the current matrix. + * + * @see avresample_close() + * + * @param avr audio resample context + * @param matrix mixing coefficients; matrix[i + stride * o] is the weight of + * input channel i in output channel o. + * @param stride distance between adjacent input channels in the matrix array + * @return 0 on success, negative AVERROR code on failure + */ +int avresample_set_matrix(AVAudioResampleContext *avr, const double *matrix, + int stride); + +/** + * Set compensation for resampling. + * + * This can be called anytime after avresample_open(). If resampling is not + * automatically enabled because of a sample rate conversion, the + * "force_resampling" option must have been set to 1 when opening the context + * in order to use resampling compensation. + * + * @param avr audio resample context + * @param sample_delta compensation delta, in samples + * @param compensation_distance compensation distance, in samples + * @return 0 on success, negative AVERROR code on failure + */ +int avresample_set_compensation(AVAudioResampleContext *avr, int sample_delta, + int compensation_distance); + +/** + * Convert input samples and write them to the output FIFO. + * + * The upper bound on the number of output samples is given by + * avresample_available() + (avresample_get_delay() + number of input samples) * + * output sample rate / input sample rate. + * + * The output data can be NULL or have fewer allocated samples than required. + * In this case, any remaining samples not written to the output will be added + * to an internal FIFO buffer, to be returned at the next call to this function + * or to avresample_read(). + * + * If converting sample rate, there may be data remaining in the internal + * resampling delay buffer. avresample_get_delay() tells the number of remaining + * samples. To get this data as output, call avresample_convert() with NULL + * input. + * + * At the end of the conversion process, there may be data remaining in the + * internal FIFO buffer. avresample_available() tells the number of remaining + * samples. To get this data as output, either call avresample_convert() with + * NULL input or call avresample_read(). + * + * @see avresample_available() + * @see avresample_read() + * @see avresample_get_delay() + * + * @param avr audio resample context + * @param output output data pointers + * @param out_plane_size output plane size, in bytes. + * This can be 0 if unknown, but that will lead to + * optimized functions not being used directly on the + * output, which could slow down some conversions. + * @param out_samples maximum number of samples that the output buffer can hold + * @param input input data pointers + * @param in_plane_size input plane size, in bytes + * This can be 0 if unknown, but that will lead to + * optimized functions not being used directly on the + * input, which could slow down some conversions. + * @param in_samples number of input samples to convert + * @return number of samples written to the output buffer, + * not including converted samples added to the internal + * output FIFO + */ +int avresample_convert(AVAudioResampleContext *avr, uint8_t **output, + int out_plane_size, int out_samples, uint8_t **input, + int in_plane_size, int in_samples); + +/** + * Return the number of samples currently in the resampling delay buffer. + * + * When resampling, there may be a delay between the input and output. Any + * unconverted samples in each call are stored internally in a delay buffer. + * This function allows the user to determine the current number of samples in + * the delay buffer, which can be useful for synchronization. + * + * @see avresample_convert() + * + * @param avr audio resample context + * @return number of samples currently in the resampling delay buffer + */ +int avresample_get_delay(AVAudioResampleContext *avr); + +/** + * Return the number of available samples in the output FIFO. + * + * During conversion, if the user does not specify an output buffer or + * specifies an output buffer that is smaller than what is needed, remaining + * samples that are not written to the output are stored to an internal FIFO + * buffer. The samples in the FIFO can be read with avresample_read() or + * avresample_convert(). + * + * @see avresample_read() + * @see avresample_convert() + * + * @param avr audio resample context + * @return number of samples available for reading + */ +int avresample_available(AVAudioResampleContext *avr); + +/** + * Read samples from the output FIFO. + * + * During conversion, if the user does not specify an output buffer or + * specifies an output buffer that is smaller than what is needed, remaining + * samples that are not written to the output are stored to an internal FIFO + * buffer. This function can be used to read samples from that internal FIFO. + * + * @see avresample_available() + * @see avresample_convert() + * + * @param avr audio resample context + * @param output output data pointers. May be NULL, in which case + * nb_samples of data is discarded from output FIFO. + * @param nb_samples number of samples to read from the FIFO + * @return the number of samples written to output + */ +int avresample_read(AVAudioResampleContext *avr, uint8_t **output, int nb_samples); + +/** + * @} + */ + +#endif /* AVRESAMPLE_AVRESAMPLE_H */ diff --git a/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/libavresample b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/libavresample new file mode 120000 index 000000000..60a35c626 --- /dev/null +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/libavresample @@ -0,0 +1 @@ +../libavresample
\ No newline at end of file diff --git a/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/libavutil b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/libavutil new file mode 120000 index 000000000..29ab1c9b4 --- /dev/null +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/libavutil @@ -0,0 +1 @@ +../libavutil
\ No newline at end of file diff --git a/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/version.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/version.h new file mode 100644 index 000000000..ebcd07f57 --- /dev/null +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavresample/version.h @@ -0,0 +1,46 @@ +/* + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVRESAMPLE_VERSION_H +#define AVRESAMPLE_VERSION_H + +#define LIBAVRESAMPLE_VERSION_MAJOR 1 +#define LIBAVRESAMPLE_VERSION_MINOR 0 +#define LIBAVRESAMPLE_VERSION_MICRO 1 + +#define LIBAVRESAMPLE_VERSION_INT AV_VERSION_INT(LIBAVRESAMPLE_VERSION_MAJOR, \ + LIBAVRESAMPLE_VERSION_MINOR, \ + LIBAVRESAMPLE_VERSION_MICRO) +#define LIBAVRESAMPLE_VERSION AV_VERSION(LIBAVRESAMPLE_VERSION_MAJOR, \ + LIBAVRESAMPLE_VERSION_MINOR, \ + LIBAVRESAMPLE_VERSION_MICRO) +#define LIBAVRESAMPLE_BUILD LIBAVRESAMPLE_VERSION_INT + +#define LIBAVRESAMPLE_IDENT "Lavr" AV_STRINGIFY(LIBAVRESAMPLE_VERSION) + +/** + * FF_API_* defines may be placed below to indicate public API that will be + * dropped at a future version bump. The defines themselves are not part of + * the public API and may change, break or disappear at any time. + */ + +#ifndef FF_API_RESAMPLE_CLOSE_OPEN +#define FF_API_RESAMPLE_CLOSE_OPEN (LIBAVRESAMPLE_VERSION_MAJOR < 2) +#endif + +#endif /* AVRESAMPLE_VERSION_H */ diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/adler32.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/adler32.h index a8ff6f9d4..a8ff6f9d4 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/adler32.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/adler32.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/aes.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/aes.h index edff275b7..edff275b7 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/aes.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/aes.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/attributes.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/attributes.h index 292a0a1a8..292a0a1a8 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/attributes.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/attributes.h diff --git a/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/audio_fifo.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/audio_fifo.h new file mode 100644 index 000000000..8c7638825 --- /dev/null +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/audio_fifo.h @@ -0,0 +1,146 @@ +/* + * Audio FIFO + * Copyright (c) 2012 Justin Ruggles <[email protected]> + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/** + * @file + * Audio FIFO Buffer + */ + +#ifndef AVUTIL_AUDIO_FIFO_H +#define AVUTIL_AUDIO_FIFO_H + +#include "avutil.h" +#include "fifo.h" +#include "samplefmt.h" + +/** + * @addtogroup lavu_audio + * @{ + */ + +/** + * Context for an Audio FIFO Buffer. + * + * - Operates at the sample level rather than the byte level. + * - Supports multiple channels with either planar or packed sample format. + * - Automatic reallocation when writing to a full buffer. + */ +typedef struct AVAudioFifo AVAudioFifo; + +/** + * Free an AVAudioFifo. + * + * @param af AVAudioFifo to free + */ +void av_audio_fifo_free(AVAudioFifo *af); + +/** + * Allocate an AVAudioFifo. + * + * @param sample_fmt sample format + * @param channels number of channels + * @param nb_samples initial allocation size, in samples + * @return newly allocated AVAudioFifo, or NULL on error + */ +AVAudioFifo *av_audio_fifo_alloc(enum AVSampleFormat sample_fmt, int channels, + int nb_samples); + +/** + * Reallocate an AVAudioFifo. + * + * @param af AVAudioFifo to reallocate + * @param nb_samples new allocation size, in samples + * @return 0 if OK, or negative AVERROR code on failure + */ +int av_audio_fifo_realloc(AVAudioFifo *af, int nb_samples); + +/** + * Write data to an AVAudioFifo. + * + * The AVAudioFifo will be reallocated automatically if the available space + * is less than nb_samples. + * + * @see enum AVSampleFormat + * The documentation for AVSampleFormat describes the data layout. + * + * @param af AVAudioFifo to write to + * @param data audio data plane pointers + * @param nb_samples number of samples to write + * @return number of samples actually written, or negative AVERROR + * code on failure. + */ +int av_audio_fifo_write(AVAudioFifo *af, void **data, int nb_samples); + +/** + * Read data from an AVAudioFifo. + * + * @see enum AVSampleFormat + * The documentation for AVSampleFormat describes the data layout. + * + * @param af AVAudioFifo to read from + * @param data audio data plane pointers + * @param nb_samples number of samples to read + * @return number of samples actually read, or negative AVERROR code + * on failure. + */ +int av_audio_fifo_read(AVAudioFifo *af, void **data, int nb_samples); + +/** + * Drain data from an AVAudioFifo. + * + * Removes the data without reading it. + * + * @param af AVAudioFifo to drain + * @param nb_samples number of samples to drain + * @return 0 if OK, or negative AVERROR code on failure + */ +int av_audio_fifo_drain(AVAudioFifo *af, int nb_samples); + +/** + * Reset the AVAudioFifo buffer. + * + * This empties all data in the buffer. + * + * @param af AVAudioFifo to reset + */ +void av_audio_fifo_reset(AVAudioFifo *af); + +/** + * Get the current number of samples in the AVAudioFifo available for reading. + * + * @param af the AVAudioFifo to query + * @return number of samples available for reading + */ +int av_audio_fifo_size(AVAudioFifo *af); + +/** + * Get the current number of samples in the AVAudioFifo available for writing. + * + * @param af the AVAudioFifo to query + * @return number of samples available for writing + */ +int av_audio_fifo_space(AVAudioFifo *af); + +/** + * @} + */ + +#endif /* AVUTIL_AUDIO_FIFO_H */ diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/audioconvert.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/audioconvert.h index 300a67cd3..300a67cd3 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/audioconvert.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/audioconvert.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avassert.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avassert.h index b223d26e8..b223d26e8 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avassert.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avassert.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avconfig.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avconfig.h index f10aa6186..f10aa6186 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avconfig.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avconfig.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avstring.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avstring.h index acd6610d3..acd6610d3 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avstring.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avstring.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avutil.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avutil.h index 33f9bea72..33f9bea72 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avutil.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/avutil.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/base64.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/base64.h index 4750cf5c7..4750cf5c7 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/base64.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/base64.h diff --git a/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/blowfish.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/blowfish.h new file mode 100644 index 000000000..8c29536cf --- /dev/null +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/blowfish.h @@ -0,0 +1,76 @@ +/* + * Blowfish algorithm + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_BLOWFISH_H +#define AVUTIL_BLOWFISH_H + +#include <stdint.h> + +/** + * @defgroup lavu_blowfish Blowfish + * @ingroup lavu_crypto + * @{ + */ + +#define AV_BF_ROUNDS 16 + +typedef struct AVBlowfish { + uint32_t p[AV_BF_ROUNDS + 2]; + uint32_t s[4][256]; +} AVBlowfish; + +/** + * Initialize an AVBlowfish context. + * + * @param ctx an AVBlowfish context + * @param key a key + * @param key_len length of the key + */ +void av_blowfish_init(struct AVBlowfish *ctx, const uint8_t *key, int key_len); + +/** + * Encrypt or decrypt a buffer using a previously initialized context. + * + * @param ctx an AVBlowfish context + * @param xl left four bytes halves of input to be encrypted + * @param xr right four bytes halves of input to be encrypted + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_blowfish_crypt_ecb(struct AVBlowfish *ctx, uint32_t *xl, uint32_t *xr, + int decrypt); + +/** + * Encrypt or decrypt a buffer using a previously initialized context. + * + * @param ctx an AVBlowfish context + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param count number of 8 byte blocks + * @param iv initialization vector for CBC mode, if NULL ECB will be used + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_blowfish_crypt(struct AVBlowfish *ctx, uint8_t *dst, const uint8_t *src, + int count, uint8_t *iv, int decrypt); + +/** + * @} + */ + +#endif /* AVUTIL_BLOWFISH_H */ diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/bswap.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/bswap.h index 8a350e1cd..8a350e1cd 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/bswap.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/bswap.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/channel_layout.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/channel_layout.h index 15b6887a6..15b6887a6 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/channel_layout.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/channel_layout.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/common.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/common.h index cc4df16e4..cc4df16e4 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/common.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/common.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/cpu.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/cpu.h index 4929512c6..4929512c6 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/cpu.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/cpu.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/crc.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/crc.h index 0540619d2..0540619d2 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/crc.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/crc.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/dict.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/dict.h index 492da9a41..492da9a41 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/dict.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/dict.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/error.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/error.h index 3dfd8807f..3dfd8807f 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/error.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/error.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/eval.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/eval.h index ccb29e7a3..ccb29e7a3 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/eval.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/eval.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/fifo.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/fifo.h index ea30f5d2b..ea30f5d2b 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/fifo.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/fifo.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/file.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/file.h index e3f02a830..e3f02a830 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/file.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/file.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/imgutils.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/imgutils.h index 71510132a..71510132a 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/imgutils.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/imgutils.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intfloat.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intfloat.h index 38d26ad87..38d26ad87 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intfloat.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intfloat.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intfloat_readwrite.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intfloat_readwrite.h index f093b92cd..f093b92cd 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intfloat_readwrite.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intfloat_readwrite.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intreadwrite.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intreadwrite.h index f77fd60f3..f77fd60f3 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intreadwrite.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/intreadwrite.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/lfg.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/lfg.h index 5e526c1da..5e526c1da 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/lfg.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/lfg.h diff --git a/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/libavutil b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/libavutil new file mode 120000 index 000000000..29ab1c9b4 --- /dev/null +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/libavutil @@ -0,0 +1 @@ +../libavutil
\ No newline at end of file diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/log.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/log.h index 7b173302f..7b173302f 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/log.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/log.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/lzo.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/lzo.h index 9d7e8f1dc..9d7e8f1dc 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/lzo.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/lzo.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/mathematics.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/mathematics.h index 043dd0faf..043dd0faf 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/mathematics.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/mathematics.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/md5.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/md5.h index 29e4e7c2b..29e4e7c2b 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/md5.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/md5.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/mem.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/mem.h index 8f4722447..8f4722447 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/mem.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/mem.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/old_pix_fmts.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/old_pix_fmts.h index 31765aed5..31765aed5 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/old_pix_fmts.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/old_pix_fmts.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/opt.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/opt.h index 2d3cc731e..2d3cc731e 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/opt.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/opt.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/parseutils.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/parseutils.h index 0844abb2f..0844abb2f 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/parseutils.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/parseutils.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/pixdesc.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/pixdesc.h index 47e6bb838..47e6bb838 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/pixdesc.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/pixdesc.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/pixfmt.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/pixfmt.h index 1072f0089..1072f0089 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/pixfmt.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/pixfmt.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/random_seed.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/random_seed.h index b1fad13d0..b1fad13d0 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/random_seed.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/random_seed.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/rational.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/rational.h index 5d7dab7fd..5d7dab7fd 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/rational.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/rational.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/samplefmt.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/samplefmt.h index 33cbdedf5..33cbdedf5 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/samplefmt.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/samplefmt.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/sha.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/sha.h index 4c9a0c909..4c9a0c909 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/sha.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/sha.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/time.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/time.h index b01a97d77..b01a97d77 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/time.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/time.h diff --git a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/version.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/version.h index 1dbb11ca2..1dbb11ca2 100644 --- a/make/stub_includes/libav/lavc54.lavf54.lavu52.lavr01/libavutil/version.h +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/version.h diff --git a/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/xtea.h b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/xtea.h new file mode 100644 index 000000000..7d2b07bbc --- /dev/null +++ b/src/jogl/native/libav/lavc54.lavf54.lavu52.lavr01/libavutil/xtea.h @@ -0,0 +1,61 @@ +/* + * A 32-bit implementation of the XTEA algorithm + * + * This file is part of Libav. + * + * Libav is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * Libav is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with Libav; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVUTIL_XTEA_H +#define AVUTIL_XTEA_H + +#include <stdint.h> + +/** + * @defgroup lavu_xtea XTEA + * @ingroup lavu_crypto + * @{ + */ + +typedef struct AVXTEA { + uint32_t key[16]; +} AVXTEA; + +/** + * Initialize an AVXTEA context. + * + * @param ctx an AVXTEA context + * @param key a key of 16 bytes used for encryption/decryption + */ +void av_xtea_init(struct AVXTEA *ctx, const uint8_t key[16]); + +/** + * Encrypt or decrypt a buffer using a previously initialized context. + * + * @param ctx an AVXTEA context + * @param dst destination array, can be equal to src + * @param src source array, can be equal to dst + * @param count number of 8 byte blocks + * @param iv initialization vector for CBC mode, if NULL then ECB will be used + * @param decrypt 0 for encryption, 1 for decryption + */ +void av_xtea_crypt(struct AVXTEA *ctx, uint8_t *dst, const uint8_t *src, + int count, uint8_t *iv, int decrypt); + +/** + * @} + */ + +#endif /* AVUTIL_XTEA_H */ |