- #
- # Copyright (C) 2017-2018 Ian Leonard <antonlacon@gmail.com>
- # Copyright (C) 2018 Ted Hess <thess@kitschensync.net>
- #
- # This is free software, licensed under the GNU General Public License v2.
- # See /LICENSE for more information.
- #
-
- include $(TOPDIR)/rules.mk
-
- PKG_NAME:=ffmpeg
- PKG_VERSION:=3.2.12
- PKG_RELEASE:=5
-
- PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
- PKG_SOURCE_URL:=https://ffmpeg.org/releases/
- PKG_HASH:=8985cea7b1b3b2e0e2b2a8ac6187a7fb022fe8aa9d35101760a000205c59c412
- PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>, \
- Ian Leonard <antonlacon@gmail.com>
-
- PKG_LICENSE:=LGPL-2.1+ GPL-2+ LGPL-3
- PKG_LICENSE_FILES:=COPYING.GPLv2 COPYING.GPLv3 COPYING.LGPLv2.1 COPYING.LGPLv3
- PKG_CPE_ID:=cpe:/a:ffmpeg:ffmpeg
-
- FFMPEG_CUSTOM_ENCODERS:= \
- ac3 \
- jpegls \
- mpeg1video \
- mpeg2video \
- mpeg4 \
- pcm_s16be \
- pcm_s16le \
- png \
- vorbis \
- zlib \
-
- FFMPEG_CUSTOM_DECODERS:= \
- aac \
- ac3 \
- alac \
- amrnb \
- amrwb \
- ape \
- atrac3 \
- flac \
- gif \
- h264 \
- hevc \
- jpegls \
- mp2 \
- mp3 \
- mpeg1video \
- mpeg2video \
- mpeg4 \
- mpegvideo \
- mpc7 \
- mpc8 \
- pcm_s16be \
- pcm_s16le \
- png \
- vc1 \
- vorbis \
- wavpack \
- wmav1 \
- wmav2 \
- zlib \
-
- FFMPEG_CUSTOM_MUXERS:= \
- ac3 \
- ffm \
- h264 \
- hevc \
- mp3 \
- mp4 \
- mpeg1video \
- mpeg2video \
- mpegts \
- ogg \
- rtp \
-
- FFMPEG_CUSTOM_DEMUXERS:= \
- aac \
- ac3 \
- amr \
- ape \
- avi \
- flac \
- ffm \
- h264 \
- hevc \
- matroska \
- mov \
- mp3 \
- mpegps \
- mpegts \
- mpegvideo \
- mpc \
- mpc8 \
- ogg \
- rm \
- rtsp \
- rtp \
- sdp \
- v4l2 \
- vc1 \
- wav \
- wv \
-
- FFMPEG_CUSTOM_PARSERS:= \
- aac \
- flac \
- ac3 \
- h264 \
- hevc \
- mpegaudio \
- mpeg4video \
- mpegvideo \
- vc1 \
-
- FFMPEG_CUSTOM_PROTOCOLS:= \
- file http icecast pipe rtp tcp udp
-
- FFMPEG_MINI_DECODERS:= \
- ac3 \
- flac \
- jpegls \
- mp2 \
- mp3 \
- mpeg1video \
- mpeg2video \
- mpeg4 \
- mpegvideo \
- opus \
- png \
- vorbis \
-
- FFMPEG_PATENTED_MINI_DECODERS:= \
- h264 \
- hevc \
- vc1 \
-
- FFMPEG_MINI_DEMUXERS:= \
- avi \
- flac \
- matroska \
- mov \
- mp3 \
- mpegps \
- mpegts \
- mpegvideo \
- ogg \
-
- FFMPEG_MINI_PROTOCOLS:= \
- file
-
- FFMPEG_AUDIO_DECODERS:= \
- ac3 \
- adpcm_* \
- alac \
- amrnb \
- amrwb \
- ape \
- atrac3 \
- flac \
- mp2 \
- mp3* \
- mpc7 \
- mpc8 \
- opus \
- pcm_* \
- vorbis \
- wavpack \
- zlib \
-
- FFMPEG_AUDIO_DEMUXERS:= \
- ac3 \
- aiff \
- amr \
- ape \
- avi \
- flac \
- ffm \
- matroska \
- mp3 \
- mov \
- mpc \
- mpc8 \
- mpegts \
- ogg \
- rm \
- rtsp \
- rtp \
- sdp \
- wav \
- wv \
-
- FFMPEG_AUDIO_PROTOCOLS:= \
- file http icecast rtp tcp udp
-
- FFMPEG_PATENTED_DECODERS:= \
- atrac3 \
- h264 \
- hevc \
- vc1 \
-
- FFMPEG_PATENTED_ENCODERS:=$(FFMPEG_PATENDED_DECODERS)
-
- FFMPEG_PATENTED_MUXERS:= \
- h264 \
- hevc \
- vc1 \
-
- FFMPEG_PATENTED_DEMUXERS:=$(FFMPEG_PATENTED_MUXERS)
-
- FFMPEG_PATENTED_PARSERS:= \
- h264 \
- hevc \
- vc1 \
-
- PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
-
- PKG_CONFIG_DEPENDS:= \
- $(patsubst %,CONFIG_FFMPEG_CUSTOM_ENCODER_%,$(FFMPEG_CUSTOM_ENCODERS)) \
- $(patsubst %,CONFIG_FFMPEG_CUSTOM_DECODER_%,$(FFMPEG_CUSTOM_DECODERS)) \
- $(patsubst %,CONFIG_FFMPEG_CUSTOM_MUXER_%,$(FFMPEG_CUSTOM_MUXERS)) \
- $(patsubst %,CONFIG_FFMPEG_CUSTOM_DEMUXER_%,$(FFMPEG_CUSTOM_DEMUXERS)) \
- $(patsubst %,CONFIG_FFMPEG_CUSTOM_PARSER_%,$(FFMPEG_CUSTOM_PARSERS)) \
- $(patsubst %,CONFIG_FFMPEG_CUSTOM_PROTOCOL_%,$(FFMPEG_CUSTOM_PROTOCOLS))
-
- include $(INCLUDE_DIR)/package.mk
-
- define Package/ffmpeg/Default
- TITLE:=FFmpeg
- URL:=https://ffmpeg.org/
- DEPENDS+= +libpthread
- endef
-
- define Package/ffmpeg/Default/description
- FFmpeg is a a software package that can record, convert and stream digital
- audio and video in numerous formats.
-
- FFmpeg licensing / patent issues are complex. It is the reponsibility of the
- user to understand any requirements in this regard with its usage. See:
- https://ffmpeg.org/legal.html for further information.
- endef
-
-
- define Package/ffmpeg
- $(call Package/ffmpeg/Default)
- SECTION:=multimedia
- CATEGORY:=Multimedia
- TITLE+= program
- DEPENDS+= +libffmpeg-full
- VARIANT:=full
- endef
-
- define Package/ffmpeg-custom
- $(call Package/ffmpeg/Default)
- SECTION:=multimedia
- CATEGORY:=Multimedia
- TITLE+= program (custom)
- DEPENDS+= @!ALL libffmpeg-custom
- VARIANT:=custom
- endef
-
- define Package/ffmpeg/description
- $(call Package/ffmpeg/Default/description)
- .
- This package contains the FFmpeg command line tool.
- endef
-
- Package/ffmpeg-custom/description = $(Package/ffmpeg/description)
-
- define Package/ffprobe
- $(call Package/ffmpeg/Default)
- SECTION:=multimedia
- CATEGORY:=Multimedia
- TITLE+= CLI media identifier
- DEPENDS+= +libffmpeg-full
- VARIANT:=full
- endef
-
- define Package/ffprobe-custom
- $(call Package/ffmpeg/Default)
- SECTION:=multimedia
- CATEGORY:=Multimedia
- TITLE+= CLI media identifier (custom)
- DEPENDS+= @!ALL libffmpeg-custom
- VARIANT:=custom
- endef
-
- define Package/ffprobe/description
- $(call Package/ffmpeg/Default/description)
- .
- This package contains the FFprobe command line tool.
- endef
-
- Package/ffprobe-custom/description = $(Package/ffprobe/description)
-
- define Package/ffserver
- $(call Package/ffmpeg/Default)
- SECTION:=multimedia
- CATEGORY:=Multimedia
- TITLE+= streaming server
- DEPENDS+= +libffmpeg-full
- VARIANT:=full
- endef
-
- define Package/ffserver-custom
- $(call Package/ffmpeg/Default)
- SECTION:=multimedia
- CATEGORY:=Multimedia
- TITLE+= streaming server (custom)
- DEPENDS+= @!ALL libffmpeg-custom
- VARIANT:=custom
- endef
-
- define Package/ffserver/description
- $(call Package/ffmpeg/Default/description)
- .
- This package contains the FFmpeg streaming server.
- endef
-
- Package/ffserver-custom/description = $(Package/ffserver/description)
-
- define Package/libffmpeg/Default
- $(call Package/ffmpeg/Default)
- SECTION:=libs
- CATEGORY:=Libraries
- TITLE+= libraries
- DEPENDS+= +libpthread +zlib +libbz2
- PROVIDES:= libffmpeg
- endef
-
-
- # Package build suppressed when CONFIG_ALL=y
- define Package/libffmpeg-custom
- $(call Package/libffmpeg/Default)
- TITLE+= (custom)
- DEPENDS+= @!ALL \
- +FFMPEG_CUSTOM_SELECT_libopus:libopus \
- +PACKAGE_libx264:libx264 +PACKAGE_lame-lib:lame-lib \
- +FFMPEG_CUSTOM_SELECT_libshine:shine \
- +PACKAGE_fdk-aac:fdk-aac
- VARIANT:=custom
- MENU:=1
- endef
-
- define Package/libffmpeg-custom/config
- source "$(SOURCE)/Config.in"
- endef
-
- define Package/libffmpeg-custom/description
- $(call Package/ffmpeg/Default/description)
- .
- This package contains customized FFmpeg shared libraries.
- endef
-
-
- define Package/libffmpeg-audio-dec
- $(call Package/libffmpeg/Default)
- TITLE+= (audio)
- VARIANT:=audio-dec
- endef
-
- define Package/libffmpeg-audio-dec/description
- $(call Package/ffmpeg/Default/description)
- .
- This package contains FFmpeg shared libraries for audio decoding
- endef
-
-
- define Package/libffmpeg-full
- $(call Package/libffmpeg/Default)
- TITLE+= (full)
- DEPENDS+= +alsa-lib +PACKAGE_libopus:libopus \
- +SOFT_FLOAT:shine \
- +!SOFT_FLOAT:lame-lib \
- +PACKAGE_libx264:libx264
- VARIANT:=full
- endef
-
-
- define Package/libffmpeg-full/description
- $(call Package/ffmpeg/Default/description)
- .
- This package contains full-featured FFmpeg shared libraries.
- endef
-
-
- define Package/libffmpeg-mini
- $(call Package/libffmpeg/Default)
- TITLE+= (mini)
- VARIANT:=mini
- endef
-
- define Package/libffmpeg-mini/description
- $(call Package/ffmpeg/Default/description)
- .
- This package contains minimal-featured FFmpeg shared libraries.
- endef
-
-
- # Strip off FPU notation
- REAL_CPU_TYPE:=$(firstword $(subst +, ,$(CONFIG_CPU_TYPE)))
- # Fixup cpu types recogized by ffmpeg configure
- REAL_CPU_TYPE:=$(subst octeonplus,octeon+,$(REAL_CPU_TYPE))
-
- FFMPEG_CONFIGURE:= \
- CFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS) $(FPIC)" \
- LDFLAGS="$(TARGET_LDFLAGS)" \
- ./configure \
- --enable-cross-compile \
- --cross-prefix="$(TARGET_CROSS)" \
- --arch="$(ARCH)" \
- $(if $(REAL_CPU_TYPE),--cpu=$(call qstrip,$(REAL_CPU_TYPE)),) \
- --target-os=linux \
- --prefix="/usr" \
- --pkg-config="pkg-config" \
- --enable-shared \
- --enable-static \
- --enable-pthreads \
- --enable-zlib \
- --disable-doc \
- --disable-debug \
- \
- --disable-lzma \
- --disable-vaapi \
- --disable-vdpau \
- --disable-outdevs
-
- ifeq ($(CONFIG_SOFT_FLOAT),y)
- FFMPEG_CONFIGURE+= \
- --disable-altivec \
- --disable-vsx \
- --disable-power8 \
- --disable-armv5te \
- --disable-armv6 \
- --disable-armv6t2 \
- --disable-inline-asm \
- --disable-mipsdsp \
- --disable-mipsdspr2 \
- --disable-mipsfpu \
- --disable-msa \
- --disable-mmi \
- --disable-fast-unaligned \
- --disable-runtime-cpudetect
-
- else ifneq ($(findstring arm,$(CONFIG_ARCH)),)
- FFMPEG_CONFIGURE+= \
- --disable-runtime-cpudetect
- # XXX: GitHub issue 3320 ppc cpu with fpu but no altivec (WNDR4700)
- else ifneq ($(findstring powerpc,$(CONFIG_ARCH)),)
- FFMPEG_CONFIGURE+= \
- --disable-altivec
- # libavcode/mips/aacdec_mips.c build problem
- else ifneq ($(findstring 24kf,$(CONFIG_CPU_TYPE)),)
- FFMPEG_CONFIGURE+= \
- --disable-inline-asm
- endif
-
- # selectively disable optimizations according to arch/cpu type
- ifneq ($(findstring arm,$(CONFIG_ARCH)),)
- FFMPEG_CONFIGURE+= --enable-lto
-
- ifneq ($(findstring vfp,$(CONFIG_TARGET_OPTIMIZATION)),)
- FFMPEG_CONFIGURE+= --enable-vfp
- else
- FFMPEG_CONFIGURE+= --disable-vfp
- endif
- ifneq ($(findstring neon,$(CONFIG_TARGET_OPTIMIZATION)),)
- FFMPEG_CONFIGURE+= \
- --enable-neon \
- --enable-vfp
- else
- FFMPEG_CONFIGURE+= --disable-neon
- endif
- endif
-
- ifeq ($(ARCH),x86_64)
- FFMPEG_CONFIGURE+= --enable-lto
- endif
-
- ifneq ($(CONFIG_TARGET_x86),)
- ifeq ($(CONFIG_NASM),y)
- # Set yasmexe to anything but YASM/NASM (ffmpeg configure will then find NASM correctly)
- # Newer ffmpeg packages will use --enable-x86asm (with NASM default)
- FFMPEG_CONFIGURE += --yasmexe=xyzzy
- else
- FFMPEG_CONFIGURE += --disable-yasm
- endif
- endif
-
- ifeq ($(BUILD_VARIANT),full)
-
- FFMPEG_DISABLE= \
- $(foreach c, $(2), \
- --disable-$(1)="$(c)" \
- )
-
- FFMPEG_CONFIGURE+= \
- --enable-avresample \
- $(if $(CONFIG_BUILD_PATENTED),, \
- $(call FFMPEG_DISABLE,decoder,$(FFMPEG_PATENTED_DECODERS)) \
- $(call FFMPEG_DISABLE,encoder,$(FFMPEG_PATENTED_ENCODERS)) \
- $(call FFMPEG_DISABLE,muxer,$(FFMPEG_PATENTED_MUXERS)) \
- $(call FFMPEG_DISABLE,demuxer,$(FFMPEG_PATENTED_DEMUXERS)) \
- $(call FFMPEG_DISABLE,parser,$(FFMPEG_PATENTED_PARSERS))) \
- $(if $(CONFIG_PACKAGE_libopus),--enable-libopus)
- ifeq ($(CONFIG_SOFT_FLOAT),y)
- FFMPEG_CONFIGURE+= \
- --enable-small \
- \
- $(if $(CONFIG_PACKAGE_shine),--enable-libshine)
- else
- ifeq ($(ARCH),x86_64)
- FFMPEG_CONFIGURE+= --enable-hardcoded-tables
- else
- FFMPEG_CONFIGURE+= --enable-small
- endif
- FFMPEG_CONFIGURE+= $(if $(CONFIG_PACKAGE_lame-lib),--enable-libmp3lame)
- endif
- # x264 support and fdk-aac support can't coexist and be distributed.
- # Prioritize x264 over fdk-aac in default builds (maintain status-quo).
- ifneq ($(CONFIG_PACKAGE_libx264),)
- FFMPEG_CONFIGURE+= \
- --enable-gpl \
- --enable-libx264
- else
- FFMPEG_CONFIGURE+= $(if $(CONFIG_PACKAGE_fdk-aac),--enable-libfdk-aac)
- endif
- endif
-
- ifeq ($(BUILD_VARIANT),custom)
-
- FFMPEG_ENABLE= \
- $(foreach c, $(2), \
- $(if $($(3)_$(c)),--enable-$(1)="$(c)") \
- )
-
- ifeq ($(CONFIG_FFMPEG_CUSTOM_LARGE),y)
- FFMPEG_CONFIGURE+= \
- --enable-hardcoded-tables
- else
- FFMPEG_CONFIGURE+= \
- --enable-small
- endif
-
- ifeq ($(CONFIG_FFMPEG_CUSTOM_GPL),y)
- FFMPEG_CONFIGURE+= --enable-gpl
- endif
-
- ifeq ($(CONFIG_FFMPEG_CUSTOM_GPLV3),y)
- FFMPEG_CONFIGURE+= --enable-version3
- endif
-
- ifeq ($(CONFIG_FFMPEG_CUSTOM_NONFREE),y)
- FFMPEG_CONFIGURE+= --enable-nonfree
- endif
-
- ifneq ($(CONFIG_FFMPEG_CUSTOM_PROGRAMS),y)
- FFMPEG_CONFIGURE+= \
- --disable-programs \
- --disable-avfilter \
- --disable-swresample
- endif
-
- FFMPEG_CONFIGURE+= \
- --disable-swscale \
- --disable-everything \
- $(call FFMPEG_ENABLE,encoder,$(FFMPEG_CUSTOM_ENCODERS),CONFIG_FFMPEG_CUSTOM_ENCODER) \
- $(call FFMPEG_ENABLE,decoder,$(FFMPEG_CUSTOM_DECODERS),CONFIG_FFMPEG_CUSTOM_DECODER) \
- $(call FFMPEG_ENABLE,muxer,$(FFMPEG_CUSTOM_MUXERS),CONFIG_FFMPEG_CUSTOM_MUXER) \
- $(call FFMPEG_ENABLE,demuxer,$(FFMPEG_CUSTOM_DEMUXERS),CONFIG_FFMPEG_CUSTOM_DEMUXER) \
- $(call FFMPEG_ENABLE,parser,$(FFMPEG_CUSTOM_PARSERS),CONFIG_FFMPEG_CUSTOM_PARSER) \
- $(call FFMPEG_ENABLE,protocol,$(FFMPEG_CUSTOM_PROTOCOLS),CONFIG_FFMPEG_CUSTOM_PROTOCOL) \
-
- ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_adpcm),y)
- FFMPEG_CONFIGURE+= \
- --enable-decoder=adpcm_ima_wav \
- --enable-decoder=adpcm_ima_qt \
- --enable-decoder=adpcm_ms
- endif
-
- ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libfdk-aac),y)
- FFMPEG_CONFIGURE+= \
- --enable-libfdk-aac --enable-encoder=libfdk_aac
- endif
-
- ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libmp3lame),y)
- FFMPEG_CONFIGURE+= \
- --enable-libmp3lame --enable-encoder=libmp3lame
- endif
-
- ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libopus),y)
- FFMPEG_CONFIGURE+= \
- --enable-libopus --enable-decoder=libopus --enable-encoder=libopus
- endif
-
- ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libshine),y)
- FFMPEG_CONFIGURE+= \
- --enable-libshine --enable-encoder=libshine
- endif
-
- ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libx264),y)
- FFMPEG_CONFIGURE+= \
- --enable-libx264 --enable-encoder=libx264
- else
- FFMPEG_CONFIGURE+= --disable-postproc
- endif
-
- endif
-
- ifeq ($(BUILD_VARIANT),audio-dec)
-
- FFMPEG_ENABLE= \
- $(foreach c, $(2), \
- --enable-$(1)="$(c)" \
- )
-
- FFMPEG_CONFIGURE+= \
- --enable-small \
- --enable-gpl \
- \
- --disable-programs \
- --disable-avfilter \
- --disable-postproc \
- --disable-swresample \
- --disable-swscale \
- --disable-everything \
- $(call FFMPEG_ENABLE,decoder,$(FFMPEG_AUDIO_DECODERS)) \
- $(call FFMPEG_ENABLE,demuxer,$(FFMPEG_AUDIO_DEMUXERS)) \
- $(call FFMPEG_ENABLE,protocol,$(FFMPEG_AUDIO_PROTOCOLS)) \
- --disable-decoder=pcm_bluray,pcm_dvd
- endif
-
- ifeq ($(BUILD_VARIANT),mini)
-
- FFMPEG_ENABLE= \
- $(foreach c, $(2), \
- --enable-$(1)="$(c)" \
- )
-
- FFMPEG_CONFIGURE+= \
- --enable-small \
- \
- --disable-programs \
- --disable-avdevice \
- --disable-avfilter \
- --disable-postproc \
- --disable-swresample \
- --disable-swscale \
- --disable-everything \
- $(call FFMPEG_ENABLE,decoder,$(FFMPEG_MINI_DECODERS)) \
- $(call FFMPEG_ENABLE,demuxer,$(FFMPEG_MINI_DEMUXERS)) \
- $(call FFMPEG_ENABLE,protocol,$(FFMPEG_MINI_PROTOCOLS)) \
- $(if $(CONFIG_BUILD_PATENTED), \
- $(call FFMPEG_ENABLE,decoder,$(FFMPEG_PATENTED_MINI_DECODERS)))
- endif
-
- ifneq ($(CONFIG_TARGET_x86),)
- TARGET_CFLAGS+= -fomit-frame-pointer
- endif
-
- define Build/Configure
- ( cd $(PKG_BUILD_DIR); $(FFMPEG_CONFIGURE) )
- endef
-
- define Build/Compile
- $(MAKE) -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- all install
- endef
-
- define Build/InstallDev/custom
- $(INSTALL_DIR) $(1)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avdevice,avformat,avutil} $(1)/usr/include/
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avformat,avutil}.{a,so*} $(1)/usr/lib/
- ifeq ($(CONFIG_FFMPEG_CUSTOM_PROGRAMS),y)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avfilter,swresample}.{a,so*} $(1)/usr/lib/
- endif
- $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avdevice,avformat,avutil}.pc $(1)/usr/lib/pkgconfig/
- ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libx264),y)
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libpostproc $(1)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpostproc.{a,so*} $(1)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libpostproc.pc $(1)/usr/lib/pkgconfig/
- endif
- endef
-
- # Only ffmpeg with libx264 is GPL (yes libpostproc); all other builds are lgpl (no libpostproc)
- define Build/InstallDev/full
- $(INSTALL_DIR) $(1)/usr/include
- $(INSTALL_DIR) $(1)/usr/lib
- $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avdevice,avfilter,avformat,avresample,avutil,swresample,swscale} $(1)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avfilter,avformat,avresample,avutil,swresample,swscale}.{a,so*} $(1)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avdevice,avfilter,avformat,avresample,avutil,swresample,swscale}.pc $(1)/usr/lib/pkgconfig/
- ifneq ($(CONFIG_PACKAGE_libx264),)
- $(CP) $(PKG_INSTALL_DIR)/usr/include/libpostproc $(1)/usr/include/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpostproc.{a,so*} $(1)/usr/lib/
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libpostproc.pc $(1)/usr/lib/pkgconfig/
- endif
- endef
-
- define Build/InstallDev/mini
- $(INSTALL_DIR) $(1)/usr/include
- $(CP) $(PKG_INSTALL_DIR)/usr/include/lib{avcodec,avformat,avutil} $(1)/usr/include/
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avformat,avutil}.{a,so*} $(1)/usr/lib/
- $(INSTALL_DIR) $(1)/usr/lib/pkgconfig
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/lib{avcodec,avformat,avutil}.pc $(1)/usr/lib/pkgconfig/
- endef
-
- Build/InstallDev/audio-dec = $(Build/InstallDev/custom)
-
- # XXX: attempt at installing "best" dev files available
- ifeq ($(BUILD_VARIANT),custom)
- # XXX: only install "custom" dev files if -full & -mini are not selected
- ifeq ($(CONFIG_PACKAGE_libffmpeg-full)$(CONFIG_PACKAGE_libffmpeg-mini),)
- Build/InstallDev = $(Build/InstallDev/custom)
- endif
- endif
- ifeq ($(BUILD_VARIANT),audio-dec)
- # XXX: only install "audio-dec" dev files if -full & -mini are not selected
- ifeq ($(CONFIG_PACKAGE_libffmpeg-full)$(CONFIG_PACKAGE_libffmpeg-mini),)
- Build/InstallDev = $(Build/InstallDev/audio-dec)
- endif
- endif
- ifeq ($(BUILD_VARIANT),full)
- # XXX: always install "full" dev files if -full is selected
- Build/InstallDev = $(Build/InstallDev/full)
- endif
- ifeq ($(BUILD_VARIANT),mini)
- # XXX: only install "mini" dev files if -full is not selected
- ifeq ($(CONFIG_PACKAGE_libffmpeg-full),)
- Build/InstallDev = $(Build/InstallDev/mini)
- endif
- endif
-
- define Package/ffmpeg/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/ffmpeg $(1)/usr/bin/
- endef
-
- Package/ffmpeg-custom/install = $(Package/ffmpeg/install)
-
- define Package/ffprobe/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/ffprobe $(1)/usr/bin/
- endef
-
- define Package/ffserver/install
- $(INSTALL_DIR) $(1)/usr/bin
- $(CP) $(PKG_INSTALL_DIR)/usr/bin/ffserver $(1)/usr/bin/
- endef
-
- define Package/libffmpeg-custom/install
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avformat,avutil}.so.* $(1)/usr/lib/
- ifeq ($(CONFIG_FFMPEG_CUSTOM_SELECT_libx264),y)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpostproc.so.* $(1)/usr/lib/
- endif
- ifeq ($(CONFIG_FFMPEG_CUSTOM_PROGRAMS),y)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avfilter,swresample}.so.* $(1)/usr/lib/
- endif
- endef
-
- # Only ffmpeg with libx264 is GPL (yes libpostproc); all other builds are lgpl (no libpostproc)
- define Package/libffmpeg-full/install
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avdevice,avfilter,avformat,avresample,avutil,swresample,swscale}.so.* $(1)/usr/lib/
- ifneq ($(CONFIG_PACKAGE_libx264),)
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/libpostproc.so.* $(1)/usr/lib/
- endif
- endef
-
- define Package/libffmpeg-mini/install
- $(INSTALL_DIR) $(1)/usr/lib
- $(CP) $(PKG_INSTALL_DIR)/usr/lib/lib{avcodec,avformat,avutil}.so.* $(1)/usr/lib/
- endef
-
- Package/libffmpeg-audio-dec/install = $(Package/libffmpeg-custom/install)
-
- $(eval $(call BuildPackage,ffmpeg))
- $(eval $(call BuildPackage,ffprobe))
- $(eval $(call BuildPackage,ffserver))
- $(eval $(call BuildPackage,ffmpeg-custom))
- $(eval $(call BuildPackage,ffprobe-custom))
- $(eval $(call BuildPackage,ffserver-custom))
- $(eval $(call BuildPackage,libffmpeg-audio-dec))
- $(eval $(call BuildPackage,libffmpeg-full))
- $(eval $(call BuildPackage,libffmpeg-mini))
- $(eval $(call BuildPackage,libffmpeg-custom))
|