__deps__ := YASM BZIP2 ZLIB FDKAAC LIBVPX LAME LIBOPUS ifeq (1-mingw,$(BUILD.cross)-$(BUILD.system)) __deps__ += PTHREADW32 endif ifeq (1,$(FEATURE.qsv)) __deps__ += LIBMFX endif $(eval $(call import.MODULE.defs,FFMPEG,ffmpeg,$(__deps__))) $(eval $(call import.CONTRIB.defs,FFMPEG)) FFMPEG.FETCH.url = http://www.ffmpeg.org/releases/ffmpeg-3.4.tar.gz FFMPEG.FETCH.url += https://download.handbrake.fr/handbrake/contrib/ffmpeg-3.4.tar.gz FFMPEG.FETCH.sha256 = 6ed03b00404a3923e3c2f560248a9c9ad79fbaaee26d723f74aae6b31fe2bae6 ## FFMPEG.FETCH.url = https://download.handbrake.fr/handbrake/contrib/libav-12.2.tar.gz ## FFMPEG.FETCH.url += https://libav.org/releases/libav-12.2.tar.gz ## FFMPEG.FETCH.sha256 = 49c3ccda32458192c00ab25b30f4d1a6a4772b83458cbbf3a25b210d0688f55c FFMPEG.CONFIGURE.deps = FFMPEG.CONFIGURE.host = FFMPEG.CONFIGURE.build = FFMPEG.CONFIGURE.env.LOCAL_PATH = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)" FFMPEG.BUILD.env = PATH="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin):$(PATH)" # To build with nvenc: # See # 1) Copy NVENC SDK's Video_Codec_SDK_8.0.14/Samples/common/inc/*.h to /usr/local/include/ # 2) Build cudautils # wget http://developer.download.nvidia.com/compute/redist/ffmpeg/1511-patch/cudautils.zip # Copy cudautils.h and libcudautils.a are in their respective /usr/local/[include|lib]/ FFMPEG.CONFIGURE.extra = \ --enable-gpl \ --disable-doc \ --disable-bsfs \ --enable-bsf=aac_adtstoasc \ --disable-vaapi \ --disable-vdpau \ --disable-network \ --disable-programs \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-ffserver \ --disable-avdevice \ --disable-muxers \ --disable-decoder=crystalhd \ --disable-decoder=h264_crystalhd \ --disable-decoder=mpeg2_crystalhd \ --disable-decoder=mpeg4_crystalhd \ --disable-decoder=msmpeg4_crystalhd \ --disable-decoder=vc1_crystalhd \ --disable-decoder=wmv3_crystalhd \ --disable-encoders \ --enable-avresample \ --enable-nvenc \ --enable-libx264 \ --enable-libmp3lame \ --enable-encoder=aac \ --enable-encoder=ac3 \ --enable-encoder=eac3 \ --enable-encoder=flac \ --enable-encoder=mpeg2video \ --enable-encoder=mpeg4 \ --enable-encoder=libmp3lame \ --enable-encoder=h264_nvenc \ --enable-encoder=hevc_nvenc \ --enable-libopus \ --enable-encoder=libopus \ --enable-libvpx \ --enable-encoder=libvpx_vp8 \ --disable-decoder=libvpx_vp8 \ --enable-encoder=libvpx_vp9 \ --disable-decoder=libvpx_vp9 \ --enable-zlib \ --enable-bzlib \ --enable-pthreads \ --cc="$(FFMPEG.GCC.gcc)" \ --extra-ldflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -L$(call fn.ABSOLUTE,$(CONTRIB.build/)lib)" ifeq (1,$(FEATURE.fdk_aac)) FFMPEG.CONFIGURE.extra += \ --enable-nonfree \ --enable-libfdk-aac \ --enable-encoder=libfdk_aac endif FFMPEG.CONFIGURE.extra += \ --enable-muxer=matroska \ --enable-muxer=webm \ --enable-muxer=mov \ --enable-muxer=mp4 \ --enable-muxer=psp \ --enable-muxer=ipod ## check against tuple: B-SYSTEM where B is { 0 | 1 } for cross-compiling flag ifeq (0-cygwin,$(BUILD.cross)-$(BUILD.system)) FFMPEG.GCC.args.extra += -fno-common else ifeq (darwin,$(BUILD.system)) ## section for darwin-archs FFMPEG.CONFIGURE.extra += --enable-cross-compile --arch=$(BUILD.machine) --target-os=darwin else ifeq (1-mingw,$(BUILD.cross)-$(BUILD.system)) FFMPEG.CONFIGURE.extra += \ --target-os=mingw32 \ --arch=$(BUILD.machine) \ --enable-cross-compile --cross-prefix=$(BUILD.cross.prefix) FFMPEG.GCC.args.extra += -fno-common ifeq (1,$(FEATURE.local_pkgconfig)) FFMPEG.CONFIGURE.extra += --pkg-config="$(call fn.ABSOLUTE,$(CONTRIB.build/)bin/$(PKGCONFIG.exe))" else FFMPEG.CONFIGURE.extra += --pkg-config=$(PKGCONFIG.exe) endif endif ifneq (none,$(FFMPEG.GCC.g)) FFMPEG.CONFIGURE.extra += --enable-debug ifeq (max,$(FFMPEG.GCC.g)) FFMPEG.CONFIGURE.extra += --extra-cflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -I$(call fn.ABSOLUTE,$(CONTRIB.build/)include) -DDEBUG" else FFMPEG.CONFIGURE.extra += --extra-cflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -I$(call fn.ABSOLUTE,$(CONTRIB.build/)include) -DNDEBUG" endif else FFMPEG.CONFIGURE.extra += --disable-debug FFMPEG.CONFIGURE.extra += --extra-cflags="$(call fn.ARGS,FFMPEG.GCC,*archs *sysroot *minver ?extra) -I$(call fn.ABSOLUTE,$(CONTRIB.build/)include) -DNDEBUG" endif ifeq (none,$(FFMPEG.GCC.O)) FFMPEG.CONFIGURE.extra += --disable-optimizations endif ifeq (1,$(FEATURE.qsv)) FFMPEG.CONFIGURE.extra += --enable-libmfx endif ## enable compile verbosity FFMPEG.BUILD.extra = V=1 ## ## llvm inline assembler (used in llvm-gcc and clang) runs out of registers ## on darwin i386 - unclear if it is a source code or llvm bug. ## ifeq (darwin-i386,$(BUILD.system)-$(BUILD.machine)) ## optimize mode hack: use clang ifneq (none,$(FFMPEG.GCC.O)) FFMPEG.GCC.gcc = clang endif ## debug mode hack: omit frame pointer ifneq (none,$(FFMPEG.GCC.g)) FFMPEG.GCC.args.extra += -fomit-frame-pointer endif endif ## For POSIX.1-2001 ifeq (solaris,$(BUILD.system)) FFMPEG.CONFIGURE.extra += --extra-libs=/usr/lib/values-xpg6.o endif ## MPC8 Doesn't compile on SPARC ifeq (solaris-sparc,$(BUILD.system)-$(BUILD.machine)) FFMPEG.CONFIGURE.extra += --disable-demuxer=mpc8 endif