diff --git a/AudioFilter/CMakeLists.txt b/AudioFilter/CMakeLists.txt index c2bd485c96c05a6c2415ca973e6c98cdca538f2b..344b4712d1871f5a3af448f90ec62a367f8aa79b 100644 --- a/AudioFilter/CMakeLists.txt +++ b/AudioFilter/CMakeLists.txt @@ -34,8 +34,8 @@ message(JPL\ path:\ ${JPL_DIRECTORY}/../../../build/${ProjectName}/${JPL_FILE_NA set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True) -set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") -set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") +set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD") +set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd") set(plugin_SRC FilterMediaHandler.cpp FilterAudioSubscriber.cpp @@ -65,15 +65,17 @@ target_include_directories(${ProjectName} PUBLIC ${PROJECT_BINARY_DIR} ${FFMPEG}/include ) target_link_directories(${ProjectName} PUBLIC ${CONTRIB_PATH} - ${FFMPEG}/bin + ${FFMPEG}/lib + ${CONTRIB_PATH}/msvc/lib/x64 ) -target_link_libraries(${ProjectName} PUBLIC avformat swscale swresample avcodec avfilter avutil) +target_link_libraries(${ProjectName} PUBLIC libavfilter libswscale libswresample libavformat libavcodec libavutil libvpx libx264 libopus libmfx + ws2_32 Bcrypt Crypt32 Secur32 Dnsapi) add_custom_command( TARGET ${ProjectName} PRE_BUILD - COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName} + COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName} COMMENT "Assembling Plugin files" ) @@ -82,6 +84,8 @@ add_custom_command( POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} - COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName} + COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName} + COMMAND cd ${CONTRIB_PATH}/src/ffmpeg/ + COMMAND git checkout * COMMENT "Generating JPL archive" ) diff --git a/AudioFilter/build.sh b/AudioFilter/build.sh index d54e9227b70a1c890e5a01a09c247449e00c5443..9b4f33bec76d15dd4c22095e8b3fb214c04af870 100755 --- a/AudioFilter/build.sh +++ b/AudioFilter/build.sh @@ -46,8 +46,20 @@ while getopts t:c:p OPT; do esac done +pwd +cp -r ffmpeg ${CONTRIB_PATH}/src/ + if [ "${PLATFORM}" = "linux-gnu" ] || [ "${PLATFORM}" = "redhat-linux" ] then + if [ -f "${CONTRIB_PATH}/native/.ffmpeg" ]; then + rm "${CONTRIB_PATH}/native/.ffmpeg" + fi + WORKPATH=$(pwd) + cd "${CONTRIB_PATH}/native/" + make .ffmpeg -j8 + rm .ffmpeg + cd ${WORKPATH} + python3 ./../SDK/jplManipulation.py --preassemble --plugin=${PLUGIN_NAME} CONTRIB_PLATFORM_CURT=${ARCH} @@ -110,12 +122,12 @@ then if [ "$CURRENT_ABI" = armeabi-v7a ] then - export AR=$TOOLCHAIN/bin/arm-linux-android-ar - export AS=$TOOLCHAIN/bin/arm-linux-android-as + export AR=$TOOLCHAIN/bin/arm-linux-androideabi-ar + export AS=$TOOLCHAIN/bin/arm-linux-androideabi-as export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++ - export LD=$TOOLCHAIN/bin/arm-linux-android-ld - export RANLIB=$TOOLCHAIN/bin/arm-linux-android-ranlib + export LD=$TOOLCHAIN/bin/arm-linux-androideabi-ld + export RANLIB=$TOOLCHAIN/bin/arm-linux-androideabi-ranlib export STRIP=$TOOLCHAIN/bin/arm-linux-androideabi-strip export ANDROID_SYSROOT=${DAEMON}/../client-android/android-toolchain-21-arm/sysroot @@ -179,6 +191,16 @@ then export EXTRA_LDFLAGS="${EXTRA_LDFLAGS} -L${ANDROID_SYSROOT}/usr/lib/x86_64-linux-android -L${ANDROID_SYSROOT}/usr/lib/x86_64-linux-android/21" fi + + if [ -f "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg" ]; then + rm "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/.ffmpeg" + fi + WORKPATH=$(pwd) + cd "${CONTRIB_PATH}/native-${CONTRIB_PLATFORM}/" + make .ffmpeg -j8 + rm .ffmpeg + cd ${WORKPATH} + #========================================================= # Compile the plugin #========================================================= @@ -225,3 +247,7 @@ then fi python3 ./../SDK/jplManipulation.py --assemble --plugin=${PLUGIN_NAME} --distribution=${PLATFORM} --extraPath=${EXTRAPATH} +cd ${CONTRIB_PATH}/src/ffmpeg/ +# ffmpeg build configuration files were changed during plugin build +# this git checkout will remove these changes +git checkout -- . diff --git a/AudioFilter/ffmpeg/package.json b/AudioFilter/ffmpeg/package.json new file mode 100644 index 0000000000000000000000000000000000000000..0fd39eb17052eb5e52e334eb26f7471bbee1bb8e --- /dev/null +++ b/AudioFilter/ffmpeg/package.json @@ -0,0 +1,33 @@ +{ + "name": "ffmpeg", + "version": "9f38fac053010205806ece11e6aea9b7d3bde041", + "url": "https://github.com/FFmpeg/FFmpeg/archive/__VERSION__.tar.gz", + "deps": [ + "vpx", + "x264", + "opus", + "ffnvcodec", + "media-sdk" + ], + "patches": [ + "change-RTCP-ratio.patch", + "rtp_ext_abs_send_time.patch", + "libopusenc-enable-FEC.patch", + "libopusdec-enable-FEC.patch" + ], + "win_patches": [ + "windows-configure.patch", + "windows-configure-ffnvcodec.patch", + "windows-configure-libmfx.patch" + ], + "project_paths": [], + "with_env" : "10.0.16299.0", + "custom_scripts": { + "pre_build": [], + "build": [ + "call \"%CONTRIB_SRC_DIR%\\ffmpeg\\build_ffmpeg.bat\"", + "cd Build/win32/x64/lib & ren *.a *.lib" + ], + "post_build": [] + } +} diff --git a/AudioFilter/ffmpeg/rules.mak b/AudioFilter/ffmpeg/rules.mak new file mode 100644 index 0000000000000000000000000000000000000000..b8528df9f2285d7ec8d869c0e4a1697d66993168 --- /dev/null +++ b/AudioFilter/ffmpeg/rules.mak @@ -0,0 +1,364 @@ +ifdef HAVE_DARWIN_OS +FFMPEG_HASH := n4.2.2 +else +FFMPEG_HASH := 9f38fac053010205806ece11e6aea9b7d3bde041 +endif + +FFMPEG_URL := https://git.ffmpeg.org/gitweb/ffmpeg.git/snapshot/$(FFMPEG_HASH).tar.gz + +PKGS+=ffmpeg + +ifeq ($(call need_pkg,"libavutil >= 55.75.100 libavcodec >= 57.106.101 libavformat >= 57.82.100 libavdevice >= 57.8.101 libavfilter >= 6.105.100 libswscale >= 4.7.103 libswresample >= 2.9.100"),) +PKGS_FOUND += ffmpeg +endif + +DEPS_ffmpeg = iconv zlib vpx opus speex x264 + +FFMPEGCONF = \ + --cc="$(CC)" \ + --pkg-config="$(PKG_CONFIG)" + +#disable everything +FFMPEGCONF += \ + --disable-everything \ + --enable-zlib \ + --enable-gpl \ + --enable-swscale \ + --enable-bsfs \ + --disable-filters \ + --disable-programs \ + --disable-postproc + +FFMPEGCONF += \ + --disable-protocols \ + --enable-protocol=crypto \ + --enable-protocol=file \ + --enable-protocol=rtp \ + --enable-protocol=srtp \ + --enable-protocol=tcp \ + --enable-protocol=udp \ + --enable-protocol=unix \ + --enable-protocol=pipe + +#enable muxers/demuxers +FFMPEGCONF += \ + --disable-demuxers \ + --disable-muxers \ + --enable-muxer=rtp \ + --enable-muxer=g722 \ + --enable-muxer=h263 \ + --enable-muxer=h264 \ + --enable-muxer=hevc \ + --enable-muxer=webm \ + --enable-muxer=ogg \ + --enable-muxer=pcm_s16be \ + --enable-muxer=pcm_s16le \ + --enable-demuxer=rtp \ + --enable-demuxer=mjpeg \ + --enable-demuxer=mjpeg_2000 \ + --enable-demuxer=mpegvideo \ + --enable-demuxer=gif \ + --enable-demuxer=image_jpeg_pipe \ + --enable-demuxer=image_png_pipe \ + --enable-demuxer=image_webp_pipe \ + --enable-demuxer=matroska \ + --enable-demuxer=m4v \ + --enable-demuxer=mp3 \ + --enable-demuxer=ogg \ + --enable-demuxer=flac \ + --enable-demuxer=wav \ + --enable-demuxer=ac3 \ + --enable-demuxer=g722 \ + --enable-demuxer=pcm_mulaw \ + --enable-demuxer=pcm_alaw \ + --enable-demuxer=pcm_s16be \ + --enable-demuxer=pcm_s16le \ + --enable-demuxer=h263 \ + --enable-demuxer=h264 \ + --enable-demuxer=hevc + +#enable parsers +FFMPEGCONF += \ + --enable-parser=h263 \ + --enable-parser=h264 \ + --enable-parser=hevc \ + --enable-parser=mpeg4video \ + --enable-parser=vp8 \ + --enable-parser=vp9 \ + --enable-parser=opus + +#encoders/decoders +FFMPEGCONF += \ + --enable-encoder=adpcm_g722 \ + --enable-decoder=adpcm_g722 \ + --enable-encoder=rawvideo \ + --enable-decoder=rawvideo \ + --enable-encoder=libx264 \ + --enable-decoder=h264 \ + --enable-encoder=pcm_alaw \ + --enable-decoder=pcm_alaw \ + --enable-encoder=pcm_mulaw \ + --enable-decoder=pcm_mulaw \ + --enable-encoder=mpeg4 \ + --enable-decoder=mpeg4 \ + --enable-encoder=libvpx_vp8 \ + --enable-decoder=vp8 \ + --enable-decoder=vp9 \ + --enable-encoder=h263 \ + --enable-encoder=h263p \ + --enable-decoder=h263 \ + --enable-encoder=mjpeg \ + --enable-decoder=mjpeg \ + --enable-decoder=mjpegb \ + --enable-libspeex \ + --enable-libopus \ + --enable-libvpx \ + --enable-libx264 \ + --enable-encoder=libspeex \ + --enable-decoder=libspeex \ + --enable-encoder=libopus \ + --enable-decoder=libopus + +# decoders for ringtones and audio streaming +FFMPEGCONF += \ + --enable-decoder=flac \ + --enable-decoder=vorbis \ + --enable-decoder=aac \ + --enable-decoder=ac3 \ + --enable-decoder=eac3 \ + --enable-decoder=mp3 \ + --enable-decoder=pcm_u24be \ + --enable-decoder=pcm_u24le \ + --enable-decoder=pcm_u32be \ + --enable-decoder=pcm_u32le \ + --enable-decoder=pcm_u8 \ + --enable-decoder=pcm_f16le \ + --enable-decoder=pcm_f24le \ + --enable-decoder=pcm_f32be \ + --enable-decoder=pcm_f32le \ + --enable-decoder=pcm_f64be \ + --enable-decoder=pcm_f64le \ + --enable-decoder=pcm_s16be \ + --enable-decoder=pcm_s16be_planar \ + --enable-decoder=pcm_s16le \ + --enable-decoder=pcm_s16le_planar \ + --enable-decoder=pcm_s24be \ + --enable-decoder=pcm_s24le \ + --enable-decoder=pcm_s24le_planar \ + --enable-decoder=pcm_s32be \ + --enable-decoder=pcm_s32le \ + --enable-decoder=pcm_s32le_planar \ + --enable-decoder=pcm_s64be \ + --enable-decoder=pcm_s64le \ + --enable-decoder=pcm_s8 \ + --enable-decoder=pcm_s8_planar \ + --enable-decoder=pcm_u16be \ + --enable-decoder=pcm_u16le + +#encoders/decoders for images +FFMPEGCONF += \ + --enable-encoder=gif \ + --enable-decoder=gif \ + --enable-encoder=jpegls \ + --enable-decoder=jpegls \ + --enable-encoder=ljpeg \ + --enable-decoder=jpeg2000 \ + --enable-encoder=png \ + --enable-decoder=png \ + --enable-encoder=bmp \ + --enable-decoder=bmp \ + --enable-encoder=tiff \ + --enable-decoder=tiff + +#filters +FFMPEGCONF += \ + --enable-filter=scale \ + --enable-filter=overlay \ + --enable-filter=amix \ + --enable-filter=amerge \ + --enable-filter=aresample \ + --enable-filter=format \ + --enable-filter=aformat \ + --enable-filter=fps \ + --enable-filter=transpose \ + --enable-filter=pad \ + --enable-filter=afir + +#platform specific options + +ifdef HAVE_WIN32 +FFMPEGCONF += \ + --enable-indev=dshow \ + --enable-indev=gdigrab \ + --enable-dxva2 +endif + +ifdef HAVE_LINUX +FFMPEGCONF += --enable-pic +ifdef HAVE_ANDROID +# Android Linux +FFMPEGCONF += \ + --target-os=android \ + --enable-jni \ + --enable-mediacodec \ + --enable-decoder=vp8_mediacodec \ + --enable-decoder=h264_mediacodec \ + --enable-decoder=mpeg4_mediacodec \ + --enable-decoder=hevc_mediacodec \ + --enable-cross-compile \ + --ranlib=$(RANLIB) \ + --strip=$(STRIP) \ + --cc=$(CC) \ + --cxx=$(CXX) \ + --ld=$(CC) \ + --ar=$(AR) +# ASM not working on Android x86 https://trac.ffmpeg.org/ticket/4928 +ifeq ($(ARCH),i386) +FFMPEGCONF += --disable-asm +endif +ifeq ($(ARCH),x86_64) +FFMPEGCONF += --disable-asm +endif +else +# Desktop Linux +DEPS_ffmpeg += ffnvcodec +FFMPEGCONF += \ + --target-os=linux \ + --enable-indev=v4l2 \ + --enable-indev=xcbgrab \ + --enable-vdpau \ + --enable-hwaccel=h264_vdpau \ + --enable-hwaccel=mpeg4_vdpau \ + --enable-vaapi \ + --enable-hwaccel=h264_vaapi \ + --enable-hwaccel=mpeg4_vaapi \ + --enable-hwaccel=h263_vaapi \ + --enable-hwaccel=vp8_vaapi \ + --enable-hwaccel=mjpeg_vaapi \ + --enable-hwaccel=hevc_vaapi \ + --enable-encoder=h264_vaapi \ + --enable-encoder=vp8_vaapi \ + --enable-encoder=mjpeg_vaapi \ + --enable-encoder=hevc_vaapi +# ffnvcodec is not supported on ARM then we enable it here for i386 and x86_64 +ifeq ($(ARCH),$(filter $(ARCH),i386 x86_64)) +FFMPEGCONF += --enable-cuvid \ + --enable-ffnvcodec \ + --enable-nvdec \ + --enable-nvenc \ + --enable-hwaccel=h264_nvdec \ + --enable-hwaccel=hevc_nvdec \ + --enable-hwaccel=vp8_nvdec \ + --enable-hwaccel=mjpeg_nvdec \ + --enable-encoder=h264_nvenc \ + --enable-encoder=hevc_nvenc +endif +# End Desktop Linux: +endif +# End HAVE_LINUX: +endif + +ifdef HAVE_MACOSX +FFMPEGCONF += \ + --enable-avfoundation \ + --enable-indev=avfoundation \ + --enable-videotoolbox \ + --enable-hwaccel=h263_videotoolbox \ + --enable-hwaccel=h264_videotoolbox \ + --enable-hwaccel=mpeg4_videotoolbox \ + --enable-hwaccel=hevc_videotoolbox \ + --enable-encoder=h264_videotoolbox \ + --enable-encoder=hevc_videotoolbox \ + --disable-securetransport +endif + +ifdef HAVE_IOS +FFMPEGCONF += \ + --enable-videotoolbox \ + --enable-hwaccel=h263_videotoolbox \ + --enable-hwaccel=h264_videotoolbox \ + --enable-hwaccel=mpeg4_videotoolbox \ + --enable-hwaccel=hevc_videotoolbox \ + --enable-encoder=h264_videotoolbox \ + --enable-encoder=hevc_videotoolbox \ + --target-os=darwin \ + --enable-cross-compile \ + --enable-pic +endif + +ifndef HAVE_IOS +ifndef HAVE_ANDROID +ifdef HAVE_CROSS_COMPILE +FFMPEGCONF += --cross-prefix=$(HOST)- +endif +endif +endif + +# x86 stuff +ifeq ($(ARCH),i386) +FFMPEGCONF += --arch=x86 +endif + +ifeq ($(ARCH),x86_64) +FFMPEGCONF += --arch=x86_64 +endif + +# ARM stuff +ifeq ($(ARCH),arm) +FFMPEGCONF += --arch=arm +ifdef HAVE_ARMV7A +FFMPEGCONF += --cpu=cortex-a8 +endif +ifdef HAVE_ARMV6 +FFMPEGCONF += --cpu=armv6 --disable-neon +endif +endif + +# ARM64 stuff +ifeq ($(ARCH),aarch64) +FFMPEGCONF += --arch=aarch64 +endif +ifeq ($(ARCH),arm64) +FFMPEGCONF += --arch=aarch64 +endif + +# Windows +ifdef HAVE_WIN32 +DEPS_ffmpeg += ffnvcodec +FFMPEGCONF += --target-os=mingw32 \ + --enable-w32threads \ + --disable-decoder=dca \ + --enable-cuvid \ + --enable-ffnvcodec \ + --enable-nvdec \ + --enable-nvenc \ + --enable-hwaccel=h264_nvdec \ + --enable-hwaccel=hevc_nvdec \ + --enable-hwaccel=vp8_nvdec \ + --enable-hwaccel=mjpeg_nvdec \ + --enable-encoder=h264_nvenc \ + --enable-encoder=hevc_nvenc +endif + +$(TARBALLS)/ffmpeg-$(FFMPEG_HASH).tar.gz: + $(call download,$(FFMPEG_URL)) + +.sum-ffmpeg: ffmpeg-$(FFMPEG_HASH).tar.gz + +ffmpeg: ffmpeg-$(FFMPEG_HASH).tar.gz + rm -Rf $@ $@-$(FFMPEG_HASH) + mkdir -p $@-$(FFMPEG_HASH) + (cd $@-$(FFMPEG_HASH) && tar x $(if ${BATCH_MODE},,-v) --strip-components=1 -f ../$<) + $(APPLY) $(SRC)/ffmpeg/remove-mjpeg-log.patch + $(APPLY) $(SRC)/ffmpeg/change-RTCP-ratio.patch + $(APPLY) $(SRC)/ffmpeg/rtp_ext_abs_send_time.patch + $(UPDATE_AUTOCONFIG) + $(MOVE) + +.ffmpeg: ffmpeg .sum-ffmpeg + cd $< && $(HOSTVARS) ./configure \ + --extra-cflags="$(CFLAGS)" \ + --extra-ldflags="$(LDFLAGS)" $(FFMPEGCONF) \ + --prefix="$(PREFIX)" --enable-static --disable-shared + cd $< && $(MAKE) install-libs install-headers + touch $@ diff --git a/AudioFilter/ffmpeg/windows-configure-make.sh b/AudioFilter/ffmpeg/windows-configure-make.sh new file mode 100644 index 0000000000000000000000000000000000000000..8fa493541f1012eb0517cd8665adc1684c7cbb73 --- /dev/null +++ b/AudioFilter/ffmpeg/windows-configure-make.sh @@ -0,0 +1,203 @@ +#!/bin/bash +set +x +set +e +DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +cd $DIR/../../build/ffmpeg +FFMPEGCONF=' + --toolchain=msvc + --target-os=win32' + +#disable everything +FFMPEGCONF+=' + --disable-everything + --disable-programs + --disable-d3d11va + --disable-dxva2 + --disable-postproc + --disable-filters' + +FFMPEGCONF+=' + --enable-cross-compile + --enable-gpl + --enable-swscale + --enable-protocols + --enable-bsfs' + +#enable muxers/demuxers +FFMPEGCONF+=' + --enable-demuxers + --enable-muxers' + +#enable parsers +FFMPEGCONF+=' + --enable-parser=h263 + --enable-parser=h264 + --enable-parser=hevc + --enable-parser=mpeg4video + --enable-parser=vp8 + --enable-parser=vp9 + --enable-parser=opus' + +#encoders/decoders +FFMPEGCONF+=' + --enable-libopus + --enable-encoder=libopus + --enable-decoder=libopus + --enable-encoder=adpcm_g722 + --enable-decoder=adpcm_g722 + --enable-encoder=pcm_alaw + --enable-decoder=pcm_alaw + --enable-encoder=pcm_mulaw + --enable-decoder=pcm_mulaw + --enable-libx264 + --enable-encoder=libx264 + --enable-decoder=h264 + --enable-encoder=rawvideo + --enable-decoder=rawvideo + --enable-encoder=mpeg4 + --enable-decoder=mpeg4 + --enable-encoder=h263 + --enable-encoder=h263p + --enable-decoder=h263 + --enable-encoder=mjpeg + --enable-decoder=mjpeg + --enable-decoder=mjpegb' + +# decoders for ringtones and audio streaming +FFMPEGCONF+=' + --enable-decoder=flac + --enable-decoder=vorbis + --enable-decoder=aac + --enable-decoder=ac3 + --enable-decoder=eac3 + --enable-decoder=mp3 + --enable-decoder=pcm_u24be + --enable-decoder=pcm_u24le + --enable-decoder=pcm_u32be + --enable-decoder=pcm_u32le + --enable-decoder=pcm_u8 + --enable-decoder=pcm_f16le + --enable-decoder=pcm_f24le + --enable-decoder=pcm_f32be + --enable-decoder=pcm_f32le + --enable-decoder=pcm_f64be + --enable-decoder=pcm_f64le + --enable-decoder=pcm_s16be + --enable-decoder=pcm_s16be_planar + --enable-decoder=pcm_s16le + --enable-decoder=pcm_s16le_planar + --enable-decoder=pcm_s24be + --enable-decoder=pcm_s24le + --enable-decoder=pcm_s24le_planar + --enable-decoder=pcm_s32be + --enable-decoder=pcm_s32le + --enable-decoder=pcm_s32le_planar + --enable-decoder=pcm_s64be + --enable-decoder=pcm_s64le + --enable-decoder=pcm_s8 + --enable-decoder=pcm_s8_planar + --enable-decoder=pcm_u16be + --enable-decoder=pcm_u16le' + +#encoders/decoders for images +FFMPEGCONF+=' + --enable-encoder=gif + --enable-decoder=gif + --enable-encoder=jpegls + --enable-decoder=jpegls + --enable-encoder=ljpeg + --enable-decoder=jpeg2000 + --enable-encoder=png + --enable-decoder=png + --enable-encoder=bmp + --enable-decoder=bmp + --enable-encoder=tiff + --enable-decoder=tiff' + +#filters +FFMPEGCONF+=' + --enable-filter=scale + --enable-filter=overlay + --enable-filter=amix + --enable-filter=amerge + --enable-filter=aresample + --enable-filter=format + --enable-filter=aformat + --enable-filter=fps + --enable-filter=transpose + --enable-filter=pad + --enable-filter=afir' + +if [ "$1" == "uwp" ]; then + EXTRACFLAGS='-MD -DWINAPI_FAMILY=WINAPI_FAMILY_APP -D_WIN32_WINNT=0x0A00 -I../../../../../msvc/include -I../../../../../msvc/include/opus' + if [ "$2" == "x64" ]; then + echo "configure and make ffmpeg for UWP-x64..." + EXTRALDFLAGS='-APPCONTAINER WindowsApp.lib libopus.lib libx264.lib -LIBPATH:../../../../../msvc/lib/x64' + FFMPEGCONF+=' --arch=x86_64' + PREFIX=../../../Build/Windows10/x64 + OUTDIR=Output/Windows10/x64 + elif [ "$2" == "x86" ]; then + echo "configure and make ffmpeg for UWP-x86..." + EXTRALDFLAGS='-APPCONTAINER WindowsApp.lib libopus.lib libx264.lib -LIBPATH:../../../../../msvc/lib/x86' + FFMPEGCONF+=' --arch=x86' + PREFIX=../../../Build/Windows10/x86 + OUTDIR=Output/Windows10/x86 + fi +elif [ "$1" == "win32" ]; then + EXTRACFLAGS='-MD -D_WINDLL -I../../../../../msvc/include -I../../../../../msvc/include/opus -I../../../../../msvc/include/vpx -I../../../../../msvc/include/ffnvcodec -I../../../../../msvc/include/mfx' + FFMPEGCONF+=' + --enable-libvpx + --enable-encoder=libvpx_vp8 + --enable-decoder=vp8 + --enable-decoder=vp9' + FFMPEGCONF+=' + --enable-indev=dshow + --enable-indev=gdigrab + --enable-dxva2' + FFMPEGCONF+=' + --enable-ffnvcodec + --enable-cuvid + --enable-nvdec + --enable-nvenc + --enable-hwaccel=h264_nvdec + --enable-hwaccel=hevc_nvdec + --enable-hwaccel=vp8_nvdec + --enable-hwaccel=mjpeg_nvdec + --enable-encoder=h264_nvenc + --enable-encoder=hevc_nvenc' + FFMPEGCONF+=' + --enable-libmfx + --enable-encoder=h264_qsv + --enable-encoder=hevc_qsv + --enable-encoder=mjpeg_qsv + --enable-decoder=vp8_qsv + --enable-decoder=h264_qsv + --enable-decoder=hevc_qsv + --enable-decoder=mjpeg_qsv + --enable-decoder=vp9_qsv + --enable-filter=scale_qsv + --enable-filter=overlay_qsv' + if [ "$2" == "x64" ]; then + echo "configure and make ffmpeg for win32-x64..." + EXTRALDFLAGS='-APPCONTAINER:NO -MACHINE:x64 Ole32.lib Kernel32.lib Gdi32.lib User32.lib Strmiids.lib Advapi32.lib OleAut32.lib Shlwapi.lib Vfw32.lib Secur32.lib Advapi32.lib libopus.lib libx264.lib libvpx.lib libmfx.lib -LIBPATH:../../../../../msvc/lib/x64' + FFMPEGCONF+=' --arch=x86_64' + PREFIX=../../../Build/win32/x64 + OUTDIR=Output/win32/x64 + elif [ "$2" == "x86" ]; then + echo "configure and make ffmpeg for win32-x86..." + EXTRALDFLAGS='-APPCONTAINER:NO -MACHINE:x86 Ole32.lib Kernel32.lib Gdi32.lib User32.lib Strmiids.lib OleAut32.lib Shlwapi.lib Vfw32.lib Secur32.lib Advapi32.lib libopus.lib libx264.lib libvpx.lib libmfx.lib -LIBPATH:../../../../../msvc/lib/x86' + FFMPEGCONF+=' --arch=x86' + PREFIX=../../../Build/win32/x86 + OUTDIR=Output/win32/x86 + fi +fi +rm -rf $OUTDIR +mkdir -p $OUTDIR +cd $OUTDIR +pwd +FFMPEGCONF=$(echo $FFMPEGCONF | sed -e "s/[[:space:]]\+/ /g") +set -x +set -e +../../../configure $FFMPEGCONF --extra-cflags="${EXTRACFLAGS}" --extra-ldflags="${EXTRALDFLAGS}" --prefix="${PREFIX}" +make -j8 install +cd ../../.. diff --git a/AutoAnswer/CMakeLists.txt b/AutoAnswer/CMakeLists.txt index 176cb6151483d811b2917cd5a0087d07c39a0862..db5d00d81b10a9c502a83bb14bd3f3be71e535cd 100644 --- a/AutoAnswer/CMakeLists.txt +++ b/AutoAnswer/CMakeLists.txt @@ -64,7 +64,7 @@ target_link_directories(${ProjectName} PUBLIC ${CONTRIB_PATH} add_custom_command( TARGET ${ProjectName} PRE_BUILD - COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName} + COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName} COMMENT "Assembling Plugin files" ) @@ -73,6 +73,6 @@ add_custom_command( POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} - COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName} + COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName} COMMENT "Generating JPL archive" ) diff --git a/AutoAnswer/build.sh b/AutoAnswer/build.sh index 5369dbc138a8e7971530257f878602797b111443..12f6d35efe66662ec6405fd534e7f5535f50004e 100755 --- a/AutoAnswer/build.sh +++ b/AutoAnswer/build.sh @@ -99,12 +99,12 @@ then if [ "$CURRENT_ABI" = armeabi-v7a ] then - export AR=$TOOLCHAIN/bin/arm-linux-android-ar - export AS=$TOOLCHAIN/bin/arm-linux-android-as + export AR=$TOOLCHAIN/bin/arm-linux-androideabi-ar + export AS=$TOOLCHAIN/bin/arm-linux-androideabi-as export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++ - export LD=$TOOLCHAIN/bin/arm-linux-android-ld - export RANLIB=$TOOLCHAIN/bin/arm-linux-android-ranlib + export LD=$TOOLCHAIN/bin/arm-linux-androideabi-ld + export RANLIB=$TOOLCHAIN/bin/arm-linux-androideabi-ranlib export STRIP=$TOOLCHAIN/bin/arm-linux-androideabi-strip export ANDROID_SYSROOT=${DAEMON}/../client-android/android-toolchain-21-arm/sysroot diff --git a/GreenScreen/build.sh b/GreenScreen/build.sh index 04e9efbd17915643ab837aa0c702cd3926f39a3b..c5e4ea7fbb406e278916a6dd30667fb50ce4f3aa 100755 --- a/GreenScreen/build.sh +++ b/GreenScreen/build.sh @@ -148,12 +148,12 @@ then if [ "$CURRENT_ABI" = armeabi-v7a ] then - export AR=$TOOLCHAIN/bin/arm-linux-android-ar - export AS=$TOOLCHAIN/bin/arm-linux-android-as + export AR=$TOOLCHAIN/bin/arm-linux-androideabi-ar + export AS=$TOOLCHAIN/bin/arm-linux-androideabi-as export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++ - export LD=$TOOLCHAIN/bin/arm-linux-android-ld - export RANLIB=$TOOLCHAIN/bin/arm-linux-android-ranlib + export LD=$TOOLCHAIN/bin/arm-linux-androideabi-ld + export RANLIB=$TOOLCHAIN/bin/arm-linux-androideabi-ranlib export STRIP=$TOOLCHAIN/bin/arm-linux-androideabi-strip export ANDROID_SYSROOT=${DAEMON}/../client-android/android-toolchain-21-arm/sysroot diff --git a/HelloWorld/CMakeLists.txt b/HelloWorld/CMakeLists.txt index 475f7e87d54678ef54c80682520f6268feb2267b..1a77e942f340fab2dfdf911df888ff84863eb1c4 100644 --- a/HelloWorld/CMakeLists.txt +++ b/HelloWorld/CMakeLists.txt @@ -79,7 +79,7 @@ target_link_libraries(${ProjectName} PUBLIC swscale avutil opencv_imgproc411 ope add_custom_command( TARGET ${ProjectName} PRE_BUILD - COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName} + COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName} COMMENT "Assembling Plugin files" ) @@ -88,6 +88,6 @@ add_custom_command( POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} - COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName} + COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName} COMMENT "Generating JPL archive" ) diff --git a/HelloWorld/build.sh b/HelloWorld/build.sh index d5308ef196b13beb95a19f3165d05f0b1862c7d9..953f7a3a178823e6fcb6db258e72ffab92ac385e 100755 --- a/HelloWorld/build.sh +++ b/HelloWorld/build.sh @@ -109,12 +109,12 @@ then if [ "$CURRENT_ABI" = armeabi-v7a ] then - export AR=$TOOLCHAIN/bin/arm-linux-android-ar - export AS=$TOOLCHAIN/bin/arm-linux-android-as + export AR=$TOOLCHAIN/bin/arm-linux-androideabi-ar + export AS=$TOOLCHAIN/bin/arm-linux-androideabi-as export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang++ - export LD=$TOOLCHAIN/bin/arm-linux-android-ld - export RANLIB=$TOOLCHAIN/bin/arm-linux-android-ranlib + export LD=$TOOLCHAIN/bin/arm-linux-androideabi-ld + export RANLIB=$TOOLCHAIN/bin/arm-linux-androideabi-ranlib export STRIP=$TOOLCHAIN/bin/arm-linux-androideabi-strip export ANDROID_SYSROOT=${DAEMON}/../client-android/android-toolchain-21-arm/sysroot diff --git a/SDK/Templates/CMakeLists.txt b/SDK/Templates/CMakeLists.txt index a855ea45671c50577160940d65b2e867da0a743d..8ee8aff305e67db7a9f4e2a1c763419d78e853af 100644 --- a/SDK/Templates/CMakeLists.txt +++ b/SDK/Templates/CMakeLists.txt @@ -66,7 +66,7 @@ target_link_libraries(${ProjectName} PUBLIC ---FFMPEGLIBS---) add_custom_command( TARGET ${ProjectName} PRE_BUILD - COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName} + COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --preassemble --plugin=${ProjectName} COMMENT "Assembling Plugin files" ) @@ -75,6 +75,6 @@ add_custom_command( POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${ProjectName}.lib ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/Release/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} - COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName} + COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=${ProjectName} COMMENT "Generating JPL archive" ) diff --git a/TensorflowSegmentation/CMakeLists.txt b/TensorflowSegmentation/CMakeLists.txt index da541a77cda00a003f4100c2f9e34be491cf87f2..f451bbcba9115964cc48fc9c92670cb469298282 100644 --- a/TensorflowSegmentation/CMakeLists.txt +++ b/TensorflowSegmentation/CMakeLists.txt @@ -171,7 +171,7 @@ else() POST_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${JPL_DIRECTORY}/../../../build/x86_64-linux-gnu/${TENSORFLOW} COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_BINARY_DIR}/${LIBRARY_FILE_NAME} ${JPL_DIRECTORY}/lib/${CONTRIB_PLATFORM} - COMMAND python3 ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=TensorflowSegmentation --extraPath=${TENSORFLOW} + COMMAND python ${PROJECT_SOURCE_DIR}/../SDK/jplManipulation.py --assemble --plugin=TensorflowSegmentation --extraPath=${TENSORFLOW} COMMENT "Generating JPL archive" ) diff --git a/docker/Dockerfile_android_onnxruntime b/docker/Dockerfile_android_onnxruntime index fb7ee8e6b41436821cc0aa2dd9c35fbacd30e488..5ea23e5094950981684b0a77d500ce7735d2829e 100644 --- a/docker/Dockerfile_android_onnxruntime +++ b/docker/Dockerfile_android_onnxruntime @@ -2,6 +2,7 @@ FROM sflagsantos/onnxruntime1.6.0-android ENV DEBIAN_FRONTEND noninteractive ENV EXTRALIBS_PATH=/home/gradle/Libs/onnxruntime/ +ENV SSH_AUTH_SOCK /home/gradle/.sockets/ssh ENV LANG en_US.utf8 ENV LC_ALL en_US.utf8 @@ -44,8 +45,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && locale-gen $LANG $LC_ALL && update-locale $LANG $LC_ALL # Android SDK tools -ENV ANDROID_HOME=/opt/android-sdk -ENV ANDROID_SDK_ROOT=${ANDROID_HOME} +ENV ANDROID_HOME /opt/android-sdk +ENV ANDROID_SDK_ROOT ${ANDROID_HOME} RUN wget -O /tmp/android-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip && \ mkdir -p ${ANDROID_HOME} && \ unzip -q -d ${ANDROID_HOME} /tmp/android-tools.zip && \ @@ -66,9 +67,10 @@ RUN (while sleep 1; do echo "y"; done) | sdkmanager --sdk_root=${ANDROID_HOME} ' 'extras;android;m2repository'\ 'extras;google;m2repository'\ 'ndk;21.3.6528147' -ENV ANDROID_SDK=${ANDROID_HOME} -ENV ANDROID_NDK=${ANDROID_HOME}/ndk/21.3.6528147 +ENV ANDROID_SDK ${ANDROID_HOME} +ENV ANDROID_NDK ${ANDROID_HOME}/ndk/21.3.6528147 # Fastlane RUN gem install fastlane -NV ENV HOME=/tmp + diff --git a/docker/Dockerfile_ubuntu_18.04_deploy b/docker/Dockerfile_ubuntu_18.04_deploy new file mode 100644 index 0000000000000000000000000000000000000000..8bf8842b34fc11d1a45c44034b36434125f5c4c7 --- /dev/null +++ b/docker/Dockerfile_ubuntu_18.04_deploy @@ -0,0 +1,78 @@ +FROM sflagsantos/onnxruntime1.6.0-ubuntu18.04 + +ENV DEBIAN_FRONTEND noninteractive +ENV CUDA_HOME=/root/Libs/cuda +ENV CUDNN_HOME=/root/Libs/cuda +ENV EXTRALIBS_PATH=/root/Libs/onnxruntime/ + +# Speed up mk-build-deps +RUN apt-get clean +RUN apt-get update && \ + apt-get install -y -o Acquire::Retries=2 \ + clang \ + g++-8 \ + gcc-8 \ + cpp-8 \ + file \ + make \ + libc6-dev \ + libstdc++-8-dev \ + git \ + autoconf \ + automake \ + autopoint \ + cmake \ + libdbus-1-dev \ + libdbus-c++-dev \ + libgnutls28-dev \ + libargon2-0-dev \ + libcanberra-gtk3-dev \ + libclutter-gtk-1.0-dev \ + libclutter-1.0-dev \ + libglib2.0-dev \ + libgtk-3-dev \ + libnotify-dev \ + qtbase5-dev \ + qttools5-dev \ + qttools5-dev-tools \ + yasm \ + nasm \ + autotools-dev \ + gettext \ + libpulse-dev \ + libasound2-dev \ + libexpat1-dev \ + libpcre3-dev \ + libyaml-cpp-dev \ + libboost-dev \ + libxext-dev \ + libxfixes-dev \ + libspeex-dev \ + libspeexdsp-dev \ + uuid-dev \ + libavcodec-dev \ + libavutil-dev \ + libavformat-dev \ + libswscale-dev \ + libavdevice-dev \ + libopus-dev \ + libudev-dev \ + libgsm1-dev \ + libjsoncpp-dev \ + libmsgpack-dev \ + libnatpmp-dev \ + libayatana-appindicator3-dev \ + libqrencode-dev \ + libnm-dev \ + libwebkit2gtk-4.0-dev \ + libcrypto++-dev \ + libva-dev \ + libvdpau-dev \ + libssl-dev \ + libsndfile1-dev + +RUN update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 50 +RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 50 + +RUN chown 999:999 /root +WORKDIR /root