Skip to content

Commit

Permalink
[ffmpeg] Add feature support for zlib, iconv, fdk-aac, mp3lame, opus,…
Browse files Browse the repository at this point in the history
… soxr, theora. (microsoft#11277)

Co-authored-by: Phoebe <20694052+PhoebeHui@users.noreply.github.com>
  • Loading branch information
2 people authored and remz1337 committed Aug 23, 2020
1 parent 68c0dbb commit 8906384
Show file tree
Hide file tree
Showing 36 changed files with 844 additions and 194 deletions.
2 changes: 1 addition & 1 deletion ports/fdk-aac/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,6 @@ if(NOT DISABLE_INSTALL_HEADERS)
libSYS/include/FDK_audio.h
libSYS/include/genericStds.h
libSYS/include/machine_type.h
DESTINATION include
DESTINATION include/fdk-aac
)
endif()
2 changes: 1 addition & 1 deletion ports/fdk-aac/CONTROL
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Source: fdk-aac
Version: 2018-07-08-1
Version: 2018-07-08-2
Homepage: https://github.com/mstorsjo/fdk-aac
Description: A standalone library of the Fraunhofer FDK AAC code
15 changes: 14 additions & 1 deletion ports/ffmpeg/0004-fix-debug-build.patch
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ index bd2de34..fba948a 100755
*)
optname="${opt%%=*}"
optname="${optname#--}"
@@ -6152,8 +6155,13 @@ fi
@@ -6152,8 +6153,13 @@

enabled zlib && { check_pkg_config zlib zlib "zlib.h" zlibVersion ||
check_lib zlib zlib.h zlibVersion -lz; }
Expand All @@ -28,3 +28,16 @@ index bd2de34..fba948a 100755

# On some systems dynamic loading requires no extra linker flags
check_lib libdl dlfcn.h "dlopen dlsym" || check_lib libdl dlfcn.h "dlopen dlsym" -ldl
@@ -6350,7 +6350,11 @@ enabled librubberband && require_pkg_config librubberband "rubberband >= 1.8
enabled libshine && require_pkg_config libshine shine shine/layer3.h shine_encode_buffer
enabled libsmbclient && { check_pkg_config libsmbclient smbclient libsmbclient.h smbc_init ||
require libsmbclient libsmbclient.h smbc_init -lsmbclient; }
-enabled libsnappy && require libsnappy snappy-c.h snappy_compress -lsnappy -lstdc++
+if enabled debug_configure; then
+ enabled libsnappy && require libsnappy snappy-c.h snappy_compress -lsnappyd -lstdc++
+else
+ enabled libsnappy && require libsnappy snappy-c.h snappy_compress -lsnappy -lstdc++
+fi
enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr
enabled libssh && require_pkg_config libssh libssh libssh/sftp.h sftp_init
enabled libspeex && require_pkg_config libspeex speex speex/speex.h speex_decoder_init
33 changes: 31 additions & 2 deletions ports/ffmpeg/0006-fix-StaticFeatures.patch
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,48 @@ diff --git a/configure b/configure
index 3bdcfc6..00b2f13 100644
--- a/configure
+++ b/configure
@@ -6360,6 +6360,7 @@ enabled openal && { { for al_extralibs in "${OPENAL_LIBS}" "-lopenal"
@@ -6251,7 +6251,8 @@ if enabled libmfx; then
enabled libmfx && { check_pkg_config libmfx libmfx "mfx/mfxvideo.h" MFXInit ||
{ require libmfx "mfx/mfxvideo.h" MFXInit "-llibmfx $advapi32_extralibs" && warn "using libmfx without pkg-config"; } }
enabled libmodplug && require_pkg_config libmodplug libmodplug libmodplug/modplug.h ModPlug_Load
-enabled libmp3lame && require "libmp3lame >= 3.98.3" lame/lame.h lame_set_VBR_quality -lmp3lame $libm_extralibs
+enabled libmp3lame && { check_lib libmp3lame lame/lame.h lame_set_VBR_quality -lmp3lame $libm_extralibs ||
+ require libmp3lame lame/lame.h lame_set_VBR_quality -llibmp3lame-static -llibmpghip-static $libm_extralibs; }
enabled libmysofa && { check_pkg_config libmysofa libmysofa mysofa.h mysofa_load ||
require libmysofa mysofa.h mysofa_load -lmysofa $zlib_extralibs; }
enabled libnpp && { check_lib libnpp npp.h nppGetLibVersion -lnppig -lnppicc -lnppc -lnppidei ||
@@ -6292,7 +6293,7 @@ if enabled debug_configure; then
else
enabled libsnappy && require libsnappy snappy-c.h snappy_compress -lsnappy -lstdc++
fi
-enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr
+enabled libsoxr && require libsoxr soxr.h soxr_create -lsoxr -lm
enabled libssh && require_pkg_config libssh libssh libssh/sftp.h sftp_init
enabled libspeex && require_pkg_config libspeex speex speex/speex.h speex_decoder_init
enabled libsrt && require_pkg_config libsrt "srt >= 1.3.0" srt/srt.h srt_socket
@@ -6360,6 +6361,8 @@ enabled openal && { { for al_extralibs in "${OPENAL_LIBS}" "-lopenal"
enabled opencl && { check_pkg_config opencl OpenCL CL/cl.h clEnqueueNDRangeKernel ||
check_lib opencl OpenCL/cl.h clEnqueueNDRangeKernel -Wl,-framework,OpenCL ||
check_lib opencl CL/cl.h clEnqueueNDRangeKernel -lOpenCL ||
+ check_lib opencl CL/cl.h clEnqueueNDRangeKernel -lOpenCL -lAdvapi32 -lOle32 -lCfgmgr32||
+ check_lib opencl CL/cl.h clEnqueueNDRangeKernel -lOpenCL -pthread -ldl ||
die "ERROR: opencl not found"; } &&
{ test_cpp_condition "OpenCL/cl.h" "defined(CL_VERSION_1_2)" ||
test_cpp_condition "CL/cl.h" "defined(CL_VERSION_1_2)" ||
@@ -6379,6 +6380,7 @@ enabled openssl && { check_pkg_config openssl openssl openssl/ssl.h OP
@@ -6379,6 +6382,7 @@ enabled openssl && { check_pkg_config openssl openssl openssl/ssl.h OP
check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto ||
check_lib openssl openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||
+ check_lib openssl openssl/ssl.h OPENSSL_init_ssl -llibssl -llibcrypto -lws2_32 -lgdi32 -lcrypt32 -lAdvapi32 -lUser32||
die "ERROR: openssl not found"; }
enabled pocketsphinx && require_pkg_config pocketsphinx pocketsphinx pocketsphinx/pocketsphinx.h ps_init
enabled rkmpp && { require_pkg_config rkmpp rockchip_mpp rockchip/rk_mpi.h mpp_create &&
@@ -6707,7 +6711,7 @@ enabled amf &&
if enabled libc_iconv; then
check_func_headers iconv.h iconv
elif enabled iconv; then
- check_func_headers iconv.h iconv || check_lib iconv iconv.h iconv -liconv
+ check_func_headers iconv.h iconv || check_lib iconv iconv.h iconv -liconv || check_lib iconv iconv.h iconv -liconv -llibcharset
fi

enabled debug && add_cflags -g"$debuglevel" && add_asflags -g"$debuglevel"
15 changes: 15 additions & 0 deletions ports/ffmpeg/0007-fix-lib-naming.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
diff --git a/configure b/configure
index d6c4388..75b96c3 100644
--- a/configure
+++ b/configure
@@ -4378,6 +4378,10 @@ msvc_common_flags(){
-march=*) ;;
-lz) echo zlib.lib ;;
-lx264) echo libx264.lib ;;
+ -lx265) echo libx265.lib ;;
+ -lmp3lame) echo libmp3lame.lib ;;
+ -liconv) echo libiconv.lib ;;
+ -lm) ;;
-lstdc++) ;;
-l*) echo ${flag#-l}.lib ;;
-LARGEADDRESSAWARE) echo $flag ;;
27 changes: 27 additions & 0 deletions ports/ffmpeg/0008-Fix-wavpack-detection.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
diff --git a/configure b/configure
index e7162dbc56..0f04af2a81 100755
--- a/configure
+++ b/configure
@@ -6391,7 +6391,7 @@ enabled libvpx && {
fi
}

-enabled libwavpack && require libwavpack wavpack/wavpack.h WavpackOpenFileOutput -lwavpack
+enabled libwavpack && { check_pkg_config libwavpack wavpack wavpack.h WavpackOpenFileOutput || check_lib libwavpack wavpack.h WavpackOpenFileOutput -lwavpack || check_lib libwavpack wavpack.h WavpackOpenFileOutput -llibwavpack || require libwavpack wavpack.h WavpackOpenFileOutput -lwavpackdll; }
enabled libwebp && {
enabled libwebp_encoder && require_pkg_config libwebp "libwebp >= 0.2.0" webp/encode.h WebPGetEncoderVersion
enabled libwebp_anim_encoder && check_pkg_config libwebp_anim_encoder "libwebpmux >= 0.4.0" webp/mux.h WebPAnimEncoderOptionsInit; }
diff --git a/libavcodec/libwavpackenc.c b/libavcodec/libwavpackenc.c
index e84b074893..9adf39861b 100644
--- a/libavcodec/libwavpackenc.c
+++ b/libavcodec/libwavpackenc.c
@@ -16,7 +16,7 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/

-#include <wavpack/wavpack.h>
+#include <wavpack.h>
#include <string.h>

#include "libavutil/attributes.h"

14 changes: 14 additions & 0 deletions ports/ffmpeg/0009-Fix-fdk-detection.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
diff --git a/configure b/configure
index b137669dd3..34c92230f4 100755
--- a/configure
+++ b/configure
@@ -6331,7 +6331,7 @@ enabled libdavs2 && require_pkg_config libdavs2 "davs2 >= 1.6.0" davs2.
enabled libdc1394 && require_pkg_config libdc1394 libdc1394-2 dc1394/dc1394.h dc1394_new
enabled libdrm && require_pkg_config libdrm libdrm xf86drm.h drmGetVersion
enabled libfdk_aac && { check_pkg_config libfdk_aac fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen ||
- { require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac &&
+ { require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac -lm -lstdc++ &&
warn "using libfdk without pkg-config"; } }
flite_extralibs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
enabled libflite && require libflite "flite/flite.h" flite_init $flite_extralibs

14 changes: 14 additions & 0 deletions ports/ffmpeg/0010-Fix-x264-detection.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
diff --git a/configure b/configure
index b137669dd3..34a2e644c4 100755
--- a/configure
+++ b/configure
@@ -6443,7 +6443,7 @@ enabled libwebp && {
enabled libwebp_encoder && require_pkg_config libwebp "libwebp >= 0.2.0" webp/encode.h WebPGetEncoderVersion
enabled libwebp_anim_encoder && check_pkg_config libwebp_anim_encoder "libwebpmux >= 0.4.0" webp/mux.h WebPAnimEncoderOptionsInit; }
enabled libx264 && { check_pkg_config libx264 x264 "stdint.h x264.h" x264_encoder_encode ||
- { require libx264 "stdint.h x264.h" x264_encoder_encode "-lx264 $pthreads_extralibs $libm_extralibs" &&
+ { require libx264 "stdint.h x264.h" x264_encoder_encode "-lx264 $pthreads_extralibs $libm_extralibs -ldl" &&
warn "using libx264 without pkg-config"; } } &&
require_cpp_condition libx264 x264.h "X264_BUILD >= 118" &&
check_cpp_condition libx262 x264.h "X264_MPEG2"

16 changes: 16 additions & 0 deletions ports/ffmpeg/0011-Fix-x265-detection.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
diff --git a/configure b/configure
index 34a2e644c4..0ea64bd306 100755
--- a/configure
+++ b/configure
@@ -6447,7 +6447,9 @@ enabled libx264 && { check_pkg_config libx264 x264 "stdint.h x264.h" x
warn "using libx264 without pkg-config"; } } &&
require_cpp_condition libx264 x264.h "X264_BUILD >= 118" &&
check_cpp_condition libx262 x264.h "X264_MPEG2"
-enabled libx265 && require_pkg_config libx265 x265 x265.h x265_api_get &&
+enabled libx265 && { check_pkg_config libx265 x265 x265.h x265_api_get ||
+ { require libx265 x265.h x265_api_get "-lx265 $pthreads_extralibs $libm_extralibs -ldl -lstdc++ -lgcc_s -lgcc -lrt -lnuma" &&
+ warn "using libx265 without pkg-config"; } } &&
require_cpp_condition libx265 x265.h "X265_BUILD >= 68"
enabled libxavs && require libxavs "stdint.h xavs.h" xavs_encoder_encode "-lxavs $pthreads_extralibs $libm_extralibs"
enabled libxavs2 && require_pkg_config libxavs2 "xavs2 >= 1.3.0" "stdint.h xavs2.h" xavs2_api_get

13 changes: 13 additions & 0 deletions ports/ffmpeg/0012-Fix-ssl-110-detection.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff --git a/configure b/configure
index 2be953f7e7..e075949ffc 100755
--- a/configure
+++ b/configure
@@ -6497,6 +6497,7 @@ enabled omx_rpi && { test_code cc OMX_Core.h OMX_IndexConfigBrcmVideoR
die "ERROR: OpenMAX IL headers not found"; } && enable omx
enabled openssl && { check_pkg_config openssl openssl openssl/ssl.h OPENSSL_init_ssl ||
check_pkg_config openssl openssl openssl/ssl.h SSL_library_init ||
+ check_lib openssl openssl/ssl.h OPENSSL_init_ssl -lssl -lcrypto $pthreads_extralibs -ldl ||
check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto ||
check_lib openssl openssl/ssl.h SSL_library_init -lssl32 -leay32 ||
check_lib openssl openssl/ssl.h SSL_library_init -lssl -lcrypto -lws2_32 -lgdi32 ||

135 changes: 95 additions & 40 deletions ports/ffmpeg/CONTROL
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
Source: ffmpeg
Version: 4.2
Port-Version: 18
Build-Depends: zlib
Port-Version: 20
Homepage: https://ffmpeg.org
Description: a library to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created.
FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge. No matter if they were designed by some standards committee, the community or a corporation. It is also highly portable: FFmpeg compiles, runs, and passes our testing infrastructure FATE across Linux, Mac OS X, Microsoft Windows, the BSDs, Solaris, etc. under a wide variety of build environments, machine architectures, and configurations.
Default-Features: avresample, avcodec, avformat, avdevice, avfilter, swresample, swscale
Default-Features: avresample, avcodec, avformat, avdevice, avfilter, postproc, swresample, swscale

Feature: ffmpeg
Description: build the ffmpeg.exe application
Expand All @@ -14,34 +13,35 @@ Feature: ffserver
Description: ffserver appplication support in ffmpeg

Feature: ffplay
Build-Depends: ffmpeg[sdl2]
Description: ffplay appplication support in ffmpeg

Feature: ffprobe
Description: ffprobe appplication support in ffmpeg

Feature: openssl
Build-Depends: openssl, ffmpeg[nonfree]
Description: openssl support in ffmpeg
Feature: avcodec
Description: Codec support in ffmpeg

Feature: lzma
Build-Depends: liblzma
Description: lzma support in ffmpeg
Feature: avformat
Description: Format support in ffmpeg

Feature: bzip2
Build-Depends: bzip2
Description: bzip2 support in ffmpeg
Feature: avdevice
Description: Device support in ffmpeg

Feature: vpx
Build-Depends: libvpx
Description: WebM VP8/VP9 support in ffmpeg
Feature: avfilter
Description: Filter support in ffmpeg

Feature: x264
Build-Depends: x264, ffmpeg[gpl]
Description: x264 support in ffmpeg
Feature: postproc
Description: Postproc support in ffmpeg

Feature: opencl
Build-Depends: opencl
Description: opencl support in ffmpeg
Feature: swresample
Description: Swresample support in ffmpeg

Feature: swscale
Description: Swscale support in ffmpeg

Feature: avresample
Description: Libav audio resampling library support in ffmpeg

Feature: nonfree
Description: allow nonfree and unredistributable libraries
Expand All @@ -52,31 +52,86 @@ Description: allow GPL licensed libraries
Feature: version3
Description: upgrade (L)GPL to version 3

Feature: avresample
Description: Libav audio resampling library support in ffmpeg

Feature: avcodec
Description: Codec support in ffmpeg
Feature: avisynthplus
Build-Depends: avisynthplus, ffmpeg[gpl]
Description: avisynthplus support in ffmpeg

Feature: avformat
Description: Format support in ffmpeg
Feature: bzip2
Build-Depends: bzip2
Description: bzip2 support in ffmpeg

Feature: avdevice
Description: Device support in ffmpeg
Feature: iconv
Build-Depends: libiconv
Description: iconv support in ffmpeg

Feature: avfilter
Description: Filter support in ffmpeg
Feature: fdk-aac
Build-Depends: fdk-aac, ffmpeg[nonfree]
Description: AAC de/encoding via libfdk-aac support in ffmpeg

Feature: swresample
Description: Swresample support in ffmpeg
Feature: lzma
Build-Depends: liblzma
Description: lzma support in ffmpeg

Feature: swscale
Description: Swscale support in ffmpeg
Feature: mp3lame
Build-Depends: mp3lame
Description: MP3 encoding via libmp3lame support in ffmpeg

Feature: nvcodec
Build-Depends: ffnvcodec, cuda
Build-Depends: ffnvcodec
Description: Hardware accelerated codecs

Feature: avisynthplus
Build-Depends: avisynthplus, ffmpeg[gpl]
Description: avisynthplus support in ffmpeg
Feature: opencl
Build-Depends: opencl
Description: OpenCL processing support in ffmpeg

Feature: openssl
Build-Depends: openssl, ffmpeg[nonfree]
Description: openssl support in ffmpeg

Feature: opus
Build-Depends: opus
Description: Opus de/encoding via libopus support in ffmpeg

Feature: sdl2
Build-Depends: sdl2
Description: sdl2 support in ffmpeg

Feature: snappy
Build-Depends: snappy
Description: Snappy compression, needed for hap encoding support in ffmpeg

Feature: soxr
Build-Depends: soxr
Description: libsoxr resampling support in ffmpeg

Feature: speex
Build-Depends: speex
Description: Speex de/encoding via libspeex support in ffmpeg

Feature: theora
Build-Depends: libtheora
Description: Theora encoding via libtheora support in ffmpeg

Feature: vorbis
Build-Depends: libvorbis
Description: Vorbis en/decoding via libvorbis support in ffmpeg

Feature: vpx
Build-Depends: libvpx
Description: VP8 and VP9 de/encoding via libvpx support in ffmpeg

Feature: wavpack
Build-Depends: wavpack
Description: wavpack encoding via libwavpack support in ffmpeg

Feature: x264
Build-Depends: x264, ffmpeg[gpl]
Description: H.264 encoding via x264 support in ffmpeg

Feature: x265
Build-Depends: x265, ffmpeg[gpl]
Description: HEVC encoding via x265 support in ffmpeg

Feature: zlib
Build-Depends: zlib
Description: zlib support in ffmpeg
Loading

0 comments on commit 8906384

Please sign in to comment.