2013-06-06 01:53:30 +02:00
|
|
|
################################################################################
|
2010-06-14 21:41:42 +02:00
|
|
|
#
|
|
|
|
# ffmpeg
|
|
|
|
#
|
2013-06-06 01:53:30 +02:00
|
|
|
################################################################################
|
2011-03-01 17:20:00 +01:00
|
|
|
|
2014-01-17 21:08:35 +01:00
|
|
|
FFMPEG_VERSION = 1.2.5
|
2011-03-01 17:20:00 +01:00
|
|
|
FFMPEG_SOURCE = ffmpeg-$(FFMPEG_VERSION).tar.bz2
|
|
|
|
FFMPEG_SITE = http://ffmpeg.org/releases
|
2010-06-14 21:41:42 +02:00
|
|
|
FFMPEG_INSTALL_STAGING = YES
|
|
|
|
|
2013-02-07 12:02:33 +01:00
|
|
|
FFMPEG_LICENSE = LGPLv2.1+, libjpeg license
|
|
|
|
FFMPEG_LICENSE_FILES = LICENSE COPYING.LGPLv2.1
|
|
|
|
ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y)
|
|
|
|
FFMPEG_LICENSE += and GPLv2+
|
|
|
|
FFMPEG_LICENSE_FILES += COPYING.GPLv2
|
|
|
|
endif
|
|
|
|
|
2010-06-14 21:41:42 +02:00
|
|
|
FFMPEG_CONF_OPT = \
|
|
|
|
--prefix=/usr \
|
2014-01-02 18:59:44 +01:00
|
|
|
--enable-avfilter \
|
|
|
|
--disable-debug \
|
|
|
|
--disable-version3 \
|
|
|
|
--enable-logging \
|
|
|
|
--disable-pic \
|
|
|
|
--enable-optimizations \
|
|
|
|
--disable-extra-warnings \
|
|
|
|
--disable-ffprobe \
|
|
|
|
--enable-avdevice \
|
|
|
|
--enable-avcodec \
|
|
|
|
--enable-avformat \
|
|
|
|
--enable-swscale \
|
|
|
|
--enable-postproc \
|
|
|
|
--disable-x11grab \
|
|
|
|
--enable-network \
|
|
|
|
--disable-gray \
|
|
|
|
--enable-swscale-alpha \
|
|
|
|
--disable-small \
|
|
|
|
--enable-dct \
|
|
|
|
--enable-fft \
|
|
|
|
--enable-mdct \
|
|
|
|
--enable-rdft \
|
|
|
|
--disable-crystalhd \
|
|
|
|
--disable-vaapi \
|
|
|
|
--disable-vdpau \
|
|
|
|
--disable-dxva2 \
|
|
|
|
--enable-runtime-cpudetect \
|
|
|
|
--disable-hardcoded-tables \
|
|
|
|
--disable-memalign-hack \
|
|
|
|
--enable-hwaccels \
|
|
|
|
--disable-avisynth \
|
|
|
|
--disable-frei0r \
|
|
|
|
--disable-libopencore-amrnb \
|
|
|
|
--disable-libopencore-amrwb \
|
|
|
|
--disable-libopencv \
|
|
|
|
--disable-libdc1394 \
|
|
|
|
--disable-libfaac \
|
|
|
|
--disable-libfreetype \
|
|
|
|
--disable-libgsm \
|
|
|
|
--disable-libmp3lame \
|
|
|
|
--disable-libnut \
|
|
|
|
--disable-libopenjpeg \
|
|
|
|
--disable-librtmp \
|
|
|
|
--disable-libschroedinger \
|
|
|
|
--disable-libspeex \
|
|
|
|
--disable-libtheora \
|
|
|
|
--disable-libvo-aacenc \
|
|
|
|
--disable-libvo-amrwbenc \
|
|
|
|
--disable-vis \
|
|
|
|
--disable-sram \
|
|
|
|
--disable-symver \
|
2011-05-13 15:12:25 +02:00
|
|
|
$(if $(BR2_HAVE_DOCUMENTATION),,--disable-doc)
|
2010-06-14 21:41:42 +02:00
|
|
|
|
2014-01-02 18:59:44 +01:00
|
|
|
FFMPEG_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBICONV),libiconv)
|
|
|
|
|
2013-12-25 10:24:18 +01:00
|
|
|
FFMPEG_CFLAGS = $(TARGET_CFLAGS)
|
|
|
|
|
|
|
|
ifeq ($(BR2_xtensa),y)
|
|
|
|
FFMPEG_CFLAGS += -mtext-section-literals
|
|
|
|
endif
|
|
|
|
|
|
|
|
FFMPEG_CONF_ENV = CFLAGS="$(FFMPEG_CFLAGS)"
|
|
|
|
|
2010-06-14 21:41:42 +02:00
|
|
|
ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-gpl
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-gpl
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_PACKAGE_FFMPEG_NONFREE),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-nonfree
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-nonfree
|
|
|
|
endif
|
|
|
|
|
2010-06-14 21:41:43 +02:00
|
|
|
ifeq ($(BR2_PACKAGE_FFMPEG_FFMPEG),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-ffmpeg
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-ffmpeg
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_PACKAGE_FFMPEG_FFPLAY),y)
|
|
|
|
FFMPEG_DEPENDENCIES += sdl
|
|
|
|
FFMPEG_CONF_OPT += --enable-ffplay
|
|
|
|
FFMPEG_CONF_ENV += SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl-config
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-ffplay
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_PACKAGE_FFMPEG_FFSERVER),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-ffserver
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-ffserver
|
|
|
|
endif
|
|
|
|
|
2010-10-07 09:54:00 +02:00
|
|
|
ifeq ($(BR2_PACKAGE_FFMPEG_POSTPROC),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-postproc
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-postproc
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-swscale
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-swscale
|
|
|
|
endif
|
|
|
|
|
2010-06-14 21:41:44 +02:00
|
|
|
ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),all)
|
|
|
|
FFMPEG_CONF_OPT += --disable-encoders \
|
|
|
|
$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),--enable-encoder=$(x))
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),all)
|
|
|
|
FFMPEG_CONF_OPT += --disable-decoders \
|
|
|
|
$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),--enable-decoder=$(x))
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),all)
|
|
|
|
FFMPEG_CONF_OPT += --disable-muxers \
|
|
|
|
$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),--enable-muxer=$(x))
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),all)
|
|
|
|
FFMPEG_CONF_OPT += --disable-demuxers \
|
|
|
|
$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),--enable-demuxer=$(x))
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),all)
|
|
|
|
FFMPEG_CONF_OPT += --disable-parsers \
|
|
|
|
$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),--enable-parser=$(x))
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),all)
|
|
|
|
FFMPEG_CONF_OPT += --disable-bsfs \
|
2014-01-02 18:59:44 +01:00
|
|
|
$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),--enable-bsfs=$(x))
|
2010-06-14 21:41:44 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),all)
|
|
|
|
FFMPEG_CONF_OPT += --disable-protocols \
|
|
|
|
$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),--enable-protocol=$(x))
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),all)
|
|
|
|
FFMPEG_CONF_OPT += --disable-filters \
|
|
|
|
$(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),--enable-filter=$(x))
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_PACKAGE_FFMPEG_INDEVS),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-indevs
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-indevs
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_PACKAGE_FFMPEG_OUTDEVS),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-outdevs
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-outdevs
|
|
|
|
endif
|
|
|
|
|
2010-12-13 17:27:44 +01:00
|
|
|
ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y)
|
2010-06-14 21:41:42 +02:00
|
|
|
FFMPEG_CONF_OPT += --enable-pthreads
|
2010-12-13 17:27:44 +01:00
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-pthreads
|
2010-06-14 21:41:42 +02:00
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_PACKAGE_ZLIB),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-zlib
|
|
|
|
FFMPEG_DEPENDENCIES += zlib
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-zlib
|
|
|
|
endif
|
|
|
|
|
2014-01-02 18:59:44 +01:00
|
|
|
ifeq ($(BR2_PACKAGE_BZIP2),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-bzlib
|
|
|
|
FFMPEG_DEPENDENCIES += bzip2
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-bzlib
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENSSL),y)
|
2014-01-13 13:11:39 +01:00
|
|
|
# openssl isn't license compatible with GPL
|
|
|
|
ifeq ($(BR2_PACKAGE_FFMPEG_GPL)x$(BR2_PACKAGE_FFMPEG_NONFREE),yx)
|
|
|
|
FFMPEG_CONF_OPT += --disable-openssl
|
|
|
|
else
|
2014-01-02 18:59:44 +01:00
|
|
|
FFMPEG_CONF_OPT += --enable-openssl
|
|
|
|
FFMPEG_DEPENDENCIES += openssl
|
2014-01-13 13:11:39 +01:00
|
|
|
endif
|
2014-01-02 18:59:44 +01:00
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-openssl
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBVORBIS),y)
|
|
|
|
FFMPEG_DEPENDENCIES += libvorbis
|
|
|
|
FFMPEG_CONF_OPT += \
|
|
|
|
--enable-libvorbis \
|
|
|
|
--enable-muxer=ogg \
|
|
|
|
--enable-encoder=libvorbis
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_X86_CPU_HAS_MMX),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-yasm
|
2014-01-13 06:48:11 +01:00
|
|
|
FFMPEG_DEPENDENCIES += host-yasm
|
2014-01-02 18:59:44 +01:00
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-yasm
|
2011-02-28 15:18:21 +01:00
|
|
|
FFMPEG_CONF_OPT += --disable-mmx
|
2014-01-02 18:59:44 +01:00
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_X86_CPU_HAS_SSE),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-sse
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-sse
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_X86_CPU_HAS_SSE2),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-sse2
|
2012-01-22 13:04:16 +01:00
|
|
|
else
|
2014-01-02 18:59:44 +01:00
|
|
|
FFMPEG_CONF_OPT += --disable-sse2
|
2012-01-22 13:04:16 +01:00
|
|
|
endif
|
2014-01-02 18:59:44 +01:00
|
|
|
|
|
|
|
ifeq ($(BR2_X86_CPU_HAS_SSE3),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-sse3
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-sse3
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_X86_CPU_HAS_SSSE3),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-ssse3
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-ssse3
|
2011-02-28 15:18:21 +01:00
|
|
|
endif
|
|
|
|
|
2014-01-02 18:59:45 +01:00
|
|
|
ifeq ($(BR2_X86_CPU_HAS_SSE4),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-sse4
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-sse4
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_X86_CPU_HAS_SSE42),y)
|
|
|
|
FFMPEG_CONF_OPT += --enable-sse42
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-sse42
|
|
|
|
endif
|
|
|
|
|
2012-12-21 03:40:31 +01:00
|
|
|
# Explicitly disable everything that doesn't match for ARM
|
|
|
|
# FFMPEG "autodetects" by compiling an extended instruction via AS
|
|
|
|
# This works on compilers that aren't built for generic by default
|
2013-04-04 09:29:48 +02:00
|
|
|
ifeq ($(BR2_arm7tdmi)$(BR2_arm720t)$(BR2_arm920t)$(BR2_arm922t)$(BR2_strongarm)$(BR2_fa526),y)
|
2011-03-01 17:20:00 +01:00
|
|
|
FFMPEG_CONF_OPT += --disable-armv5te
|
|
|
|
endif
|
2013-08-13 11:54:11 +02:00
|
|
|
ifeq ($(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s),y)
|
2011-03-01 17:20:00 +01:00
|
|
|
FFMPEG_CONF_OPT += --enable-armv6
|
2012-12-21 03:40:31 +01:00
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-armv6 --disable-armv6t2
|
2011-03-01 17:20:00 +01:00
|
|
|
endif
|
2013-08-13 11:54:11 +02:00
|
|
|
ifeq ($(BR2_arm10)$(BR2_arm1136jf_s)$(BR2_arm1176jz_s)$(BR2_arm1176jzf_s)$(BR2_cortex_a5)$(BR2_cortex_a8)$(BR2_cortex_a9)$(BR2_cortex_a15),y)
|
2014-01-02 18:59:44 +01:00
|
|
|
FFMPEG_CONF_OPT += --enable-vfp
|
2012-12-21 03:40:31 +01:00
|
|
|
else
|
2014-01-02 18:59:44 +01:00
|
|
|
FFMPEG_CONF_OPT += --disable-vfp
|
2011-03-01 17:20:00 +01:00
|
|
|
endif
|
2012-12-13 23:25:30 +01:00
|
|
|
ifeq ($(BR2_ARM_CPU_HAS_NEON),y)
|
2011-03-01 17:20:00 +01:00
|
|
|
FFMPEG_CONF_OPT += --enable-neon
|
|
|
|
endif
|
2012-12-21 03:40:31 +01:00
|
|
|
|
2014-01-13 22:23:06 +01:00
|
|
|
ifeq ($(BR2_MIPS_SOFT_FLOAT),y)
|
|
|
|
FFMPEG_CONF_OPT += \
|
|
|
|
--disable-mipsfpu
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += \
|
|
|
|
--enable-mipsfpu
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_mips_32r2),y)
|
|
|
|
FFMPEG_CONF_OPT += \
|
|
|
|
--enable-mips32r2
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += \
|
|
|
|
--disable-mips32r2
|
|
|
|
endif
|
|
|
|
|
|
|
|
ifeq ($(BR2_mips_64r2),y)
|
|
|
|
FFMPEG_CONF_OPT += \
|
|
|
|
--enable-mipsdspr1 \
|
|
|
|
--enable-mipsdspr2
|
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += \
|
|
|
|
--disable-mipsdspr1 \
|
|
|
|
--disable-mipsdspr2
|
|
|
|
endif
|
|
|
|
|
2011-05-12 22:12:40 +02:00
|
|
|
# Set powerpc altivec appropriately
|
|
|
|
ifeq ($(BR2_powerpc),y)
|
|
|
|
ifeq ($(BR2_powerpc_7400)$(BR2_powerpc_7450)$(BR2_powerpc_970),y)
|
2012-02-13 22:26:26 +01:00
|
|
|
FFMPEG_CONF_OPT += --enable-altivec
|
2011-05-12 22:12:40 +02:00
|
|
|
else
|
|
|
|
FFMPEG_CONF_OPT += --disable-altivec
|
|
|
|
endif
|
|
|
|
endif
|
2011-03-01 17:20:00 +01:00
|
|
|
|
2014-01-02 18:59:44 +01:00
|
|
|
ifeq ($(BR2_PREFER_STATIC_LIB),)
|
|
|
|
FFMPEG_CONF_OPT += --enable-pic
|
|
|
|
endif
|
|
|
|
|
2010-06-14 21:41:45 +02:00
|
|
|
FFMPEG_CONF_OPT += $(call qstrip,$(BR2_PACKAGE_FFMPEG_EXTRACONF))
|
|
|
|
|
2010-06-14 21:41:42 +02:00
|
|
|
# Override FFMPEG_CONFIGURE_CMDS: FFmpeg does not support --target and others
|
|
|
|
define FFMPEG_CONFIGURE_CMDS
|
|
|
|
(cd $(FFMPEG_SRCDIR) && rm -rf config.cache && \
|
|
|
|
$(TARGET_CONFIGURE_OPTS) \
|
|
|
|
$(TARGET_CONFIGURE_ARGS) \
|
|
|
|
$(FFMPEG_CONF_ENV) \
|
|
|
|
./configure \
|
|
|
|
--enable-cross-compile \
|
|
|
|
--cross-prefix=$(TARGET_CROSS) \
|
|
|
|
--sysroot=$(STAGING_DIR) \
|
2011-01-01 11:49:01 +01:00
|
|
|
--host-cc="$(HOSTCC)" \
|
2010-06-14 21:41:42 +02:00
|
|
|
--arch=$(BR2_ARCH) \
|
2014-01-02 18:59:44 +01:00
|
|
|
--target-os="linux" \
|
|
|
|
$(if $(BR2_GCC_TARGET_TUNE),--cpu=$(BR2_GCC_TARGET_TUNE)) \
|
2011-06-20 17:59:54 +02:00
|
|
|
$(SHARED_STATIC_LIBS_OPTS) \
|
2010-06-14 21:41:42 +02:00
|
|
|
$(FFMPEG_CONF_OPT) \
|
|
|
|
)
|
|
|
|
endef
|
|
|
|
|
2012-07-03 00:07:32 +02:00
|
|
|
$(eval $(autotools-package))
|