1 # Created by: Martin Matuska <mm@FreeBSD.org>
8 CATEGORIES= multimedia audio ipv6 net
9 MASTER_SITES= http://ffmpeg.org/releases/
11 MAINTAINER= multimedia@FreeBSD.org
12 COMMENT= Realtime audio/video encoder/converter and streaming server
14 LICENSE= GPLv2+ LGPL21+
17 BUILD_DEPENDS= yasm:devel/yasm \
18 ${LOCALBASE}/bin/as:devel/binutils
21 USES= compiler:c11 cpe gmake localbase:ldflags perl5 \
22 pkgconfig shebangfix tar:bzip2
25 SHEBANG_FILES= doc/texi2pod.pl
26 NOPRECIOUSMAKEVARS= yes # ARCH
30 OPTIONS_DEFINE= ALSA AMR_NB AMR_WB ASS BS2B CACA CDIO CELT CHROMAPRINT DC1394 \
31 DEBUG DOCS EBUR128 FDK_AAC FFSERVER FLITE FONTCONFIG \
32 FREETYPE FREI0R FRIBIDI GME GSM ICONV ILBC JACK KVAZAAR LADSPA \
33 LAME LIBBLURAY MODPLUG NETCDF OPENAL OPENCL OPENCV OPENGL \
34 OPENH264 OPENJPEG OPTIMIZED_CFLAGS OPUS PULSEAUDIO \
35 RUBBERBAND RTCPU SCHROEDINGER SDL SMB SNAPPY SNDIO SOXR SPEEX SSH \
36 TESSERACT THEORA TWOLAME V4L VAAPI VDPAU VIDSTAB VORBIS \
37 VO_AMRWBENC VPX WAVPACK WEBP X11GRAB X264 X265 XCB XVID \
40 OPTIONS_DEFAULT= FFSERVER FONTCONFIG FREETYPE FREI0R GMP GNUTLS ICONV \
41 OPENCV OPTIMIZED_CFLAGS RTCPU SCHROEDINGER THEORA V4L VAAPI VDPAU \
44 OPTIONS_RADIO= RTMP SSL
45 OPTIONS_RADIO_RTMP= GCRYPT GMP LIBRTMP
46 OPTIONS_RADIO_SSL= GNUTLS OPENSSL
47 OPTIONS_GROUP= LICENSE
48 OPTIONS_GROUP_LICENSE= GPL3 NONFREE
50 OPTIONS_DEFINE_x86_64= MMX SSE
51 OPTIONS_DEFINE_armv6= VFP NEON
52 OPTIONS_DEFINE_armv6hf= VFP NEON
53 OPTIONS_DEFINE_i386= MMX SSE
54 OPTIONS_DEFAULT_x86_64= MMX SSE
55 OPTIONS_DEFAULT_i386= MMX SSE
57 ASS_DESC= Subtitles rendering via libass
58 BS2B_DESC= Bauer Stereophonic-to-Binaural filter
59 CDIO_DESC= Audio CD grabbing with libcdio
60 CHROMAPRINT_DESC= Audio fingerprinting with chromaprint
61 DC1394_DESC= IIDC-1394 grabbing using libdc1394
62 EBUR128_DESC= EBU R128 measurement for loudnorm filter
63 FDK_AAC_DESC= AAC audio encoding via Fraunhofer FDK
64 FFSERVER_DESC= Build and install ffserver
65 FLITE_DESC= Voice synthesis support via libflite
66 GME_DESC= Game Music Emu demuxer
67 GPL3_DESC= Allow (L)GPL version 3 code(cs)
68 ILBC_DESC= Internet Low Bit Rate codec
69 KVAZAAR_DESC= H.265 video codec support via Kvazaar
70 LICENSE_DESC= Licensing options
71 NEON_DESC= Enable Media Processing Engine instructions
72 NETCDF_DESC= SOFAlizer binaural filter
73 NONFREE_DESC= Allow use of nonfree code
74 OPENH264_DESC= H.264 video codec support via OpenH264
75 RUBBERBAND_DESC=Time-stretching and pitch-shifting with librubberband
76 RTCPU_DESC= Detect CPU capabilities at runtime
77 RTMP_DESC= RTMP(T)E protocol support
78 LIBRTMP_DESC= ${RTMP_DESC} via librtmp
79 TESSERACT_DESC= Optical Character Recognition via Tesseract
80 VFP_DESC= Enable Vector Floating Point instructions
81 VIDSTAB_DESC= Video stabilization filter
82 X11GRAB_DESC= X11 grabbing (legacy)
83 XCB_DESC= X11 grabbing using XCB
84 ZIMG_DESC= "z" library video scaling filter
85 ZMQ_DESC= Message passing via libzmq${ZMQ_VERSION}
86 ZVBI_DESC= Teletext support via libzvbi
91 ALSA_CONFIGURE_OFF= --disable-indev=alsa \
93 ALSA_LIB_DEPENDS= libasound.so:audio/alsa-lib
96 AMR_NB_LIB_DEPENDS= libopencore-amrnb.so:audio/opencore-amr
97 AMR_NB_CONFIGURE_ENABLE= libopencore-amrnb
101 AMR_WB_LIB_DEPENDS= libopencore-amrwb.so:audio/opencore-amr
102 AMR_WB_CONFIGURE_ENABLE= libopencore-amrwb
106 ASS_LIB_DEPENDS= libass.so:multimedia/libass
107 ASS_CONFIGURE_ENABLE= libass
110 BS2B_LIB_DEPENDS= libbs2b.so:audio/libbs2b
111 BS2B_CONFIGURE_ENABLE= libbs2b
114 CACA_LIB_DEPENDS= libcaca.so:graphics/libcaca
115 CACA_CONFIGURE_ENABLE= libcaca
118 CDIO_LIB_DEPENDS= libcdio_paranoia.so:sysutils/libcdio-paranoia
119 CDIO_CONFIGURE_ENABLE= libcdio
122 CELT_LIB_DEPENDS= libcelt0.so:audio/celt
123 CELT_CONFIGURE_ENABLE= libcelt
126 CHROMAPRINT_BROKEN= Dependency loop
127 CHROMAPRINT_LIB_DEPENDS= libchromaprint.so:audio/chromaprint
128 CHROMAPRINT_CONFIGURE_ENABLE= chromaprint
131 DC1394_LIB_DEPENDS= libdc1394.so:multimedia/libdc1394
132 DC1394_CONFIGURE_ENABLE= libdc1394
135 DEBUG_CONFIGURE_ON= --disable-stripping
136 DEBUG_CONFIGURE_OFF= --disable-debug
139 DOCS_BUILD_DEPENDS= texi2html:textproc/texi2html
140 DOCS_CONFIGURE_ENABLE= htmlpages
143 EBUR128_LIB_DEPENDS= libebur128.so:audio/libebur128
144 EBUR128_CONFIGURE_ENABLE= libebur128
147 FDK_AAC_LIB_DEPENDS= libfdk-aac.so:audio/fdk-aac
148 FDK_AAC_CONFIGURE_ENABLE= libfdk-aac
149 FDK_AAC_IMPLIES= NONFREE
152 FFSERVER_CONFIGURE_ENABLE= ffserver
153 FFSERVER_VARS= USE_RC_SUBR+=ffserver
156 FLITE_LIB_DEPENDS= libflite.so:audio/flite
157 FLITE_CONFIGURE_ENABLE= libflite
160 FONTCONFIG_LIB_DEPENDS= libfontconfig.so:x11-fonts/fontconfig
161 FONTCONFIG_CONFIGURE_ENABLE= fontconfig
164 FREETYPE_LIB_DEPENDS= libfreetype.so:print/freetype2
165 FREETYPE_CONFIGURE_ENABLE= libfreetype
168 FREI0R_BUILD_DEPENDS= ${LOCALBASE}/include/frei0r.h:graphics/frei0r
169 FREI0R_CONFIGURE_ENABLE= frei0r
172 FRIBIDI_LIB_DEPENDS= libfribidi.so:converters/fribidi
173 FRIBIDI_CONFIGURE_ENABLE= libfribidi
176 GCRYPT_LIB_DEPENDS= libgcrypt.so:security/libgcrypt
177 GCRYPT_CONFIGURE_ENABLE= gcrypt
180 GNUTLS_LIB_DEPENDS= libgnutls.so:security/gnutls
181 GNUTLS_CONFIGURE_ENABLE= gnutls
184 GME_LIB_DEPENDS= libgme.so:audio/libgme
185 GME_CONFIGURE_ENABLE= libgme
188 GMP_LIB_DEPENDS= libgmp.so:math/gmp
189 GMP_CONFIGURE_ENABLE= gmp
193 GSM_LIB_DEPENDS= libgsm.so:audio/gsm
194 GSM_CONFIGURE_ENABLE= libgsm
198 ICONV_CONFIGURE_ENABLE= iconv
201 ILBC_LIB_DEPENDS= libilbc.so:net/libilbc
202 ILBC_CONFIGURE_ENABLE= libilbc
205 JACK_LIB_DEPENDS= libjack.so:audio/jack
206 JACK_CONFIGURE_OFF= --disable-indev=jack
209 KVAZAAR_LIB_DEPENDS= libkvazaar.so:multimedia/kvazaar
210 KVAZAAR_CONFIGURE_ENABLE= libkvazaar
213 LADSPA_BUILD_DEPENDS= ${LOCALBASE}/include/ladspa.h:audio/ladspa
214 LADSPA_RUN_DEPENDS= ${LOCALBASE}/lib/ladspa/amp.so:audio/ladspa
215 LADSPA_CONFIGURE_ENABLE= ladspa
218 LAME_LIB_DEPENDS= libmp3lame.so:audio/lame
219 LAME_CONFIGURE_ENABLE= libmp3lame
222 LIBBLURAY_LIB_DEPENDS= libbluray.so:multimedia/libbluray
223 LIBBLURAY_CONFIGURE_ENABLE= libbluray
226 V4L_BUILD_DEPENDS= v4l_compat>0:multimedia/v4l_compat
227 V4L_LIB_DEPENDS= libv4l2.so:multimedia/libv4l
228 V4L_CONFIGURE_ENABLE= libv4l2
229 V4L_CONFIGURE_OFF= --disable-indev=v4l2 \
230 --disable-outdev=v4l2
233 MMX_CONFIGURE_ENABLE= mmx
236 MODPLUG_LIB_DEPENDS= libmodplug.so:audio/libmodplug
237 MODPLUG_CONFIGURE_ENABLE= libmodplug
240 NETCDF_LIB_DEPENDS= libnetcdf.so:science/netcdf
241 NETCDF_CONFIGURE_ENABLE= netcdf
244 OPENAL_LIB_DEPENDS= libopenal.so:audio/openal-soft
245 OPENAL_CONFIGURE_ENABLE= openal
246 OPENAL_CONFIGURE_OFF= --disable-indev=openal
249 OPENCL_BUILD_DEPENDS= ${LOCALBASE}/include/CL/opencl.h:devel/opencl
250 OPENCL_LIB_DEPENDS= libOpenCL.so:devel/ocl-icd
251 OPENCL_CONFIGURE_ENABLE= opencl
254 OPENCV_LIB_DEPENDS= libopencv_imgproc.so:graphics/opencv2-core
255 OPENCV_CONFIGURE_ENABLE= libopencv
259 OPENGL_CONFIGURE_ENABLE= opengl
262 OPENH264_LIB_DEPENDS= libopenh264.so:multimedia/openh264
263 OPENH264_CONFIGURE_ENABLE= libopenh264
266 OPENJPEG_LIB_DEPENDS= libopenjp2.so:graphics/openjpeg
267 OPENJPEG_CONFIGURE_ENABLE= libopenjpeg
270 OPENSSL_USE= OPENSSL=yes
271 OPENSSL_CONFIGURE_ENABLE= openssl
272 OPENSSL_IMPLIES= NONFREE
275 OPTIMIZED_CFLAGS_CONFIGURE_ENABLE= optimizations
278 OPUS_LIB_DEPENDS= libopus.so:audio/opus
279 OPUS_CONFIGURE_ENABLE= libopus
282 PULSEAUDIO_LIB_DEPENDS= libpulse.so:audio/pulseaudio
283 PULSEAUDIO_CONFIGURE_ENABLE= libpulse
284 PULSEAUDIO_CONFIGURE_OFF= --disable-indev=pulse \
285 --disable-outdev=pulse
288 RUBBERBAND_LIB_DEPENDS= librubberband.so:audio/rubberband
289 RUBBERBAND_CONFIGURE_ENABLE= librubberband
292 RTCPU_CONFIGURE_ENABLE= runtime-cpudetect
295 LIBRTMP_LIB_DEPENDS= librtmp.so:multimedia/librtmp
296 LIBRTMP_CONFIGURE_ENABLE= librtmp
299 SCHROEDINGER_LIB_DEPENDS= libschroedinger-1.0.so:multimedia/schroedinger
300 SCHROEDINGER_CONFIGURE_ENABLE= libschroedinger
304 SDL_CONFIGURE_ENABLE= ffplay
305 SDL_CONFIGURE_OFF= --disable-outdev=sdl --disable-sdl2
308 SMB_LIB_DEPENDS= libsmbclient.so:net/samba-libsmbclient
309 SMB_CONFIGURE_ENABLE= libsmbclient
313 SNAPPY_LIB_DEPENDS= libsnappy.so:archivers/snappy
314 SNAPPY_CONFIGURE_ENABLE= libsnappy
317 SNDIO_CONFIGURE_OFF= --disable-indev=sndio \
318 --disable-outdev=sndio
319 SNDIO_LIB_DEPENDS= libsndio.so:audio/sndio
322 SOXR_LIB_DEPENDS= libsoxr.so:audio/libsoxr
323 SOXR_CONFIGURE_ENABLE= libsoxr
326 SPEEX_LIB_DEPENDS= libspeex.so:audio/speex
327 SPEEX_CONFIGURE_ENABLE= libspeex
330 SSE_CONFIGURE_ENABLE= sse
334 SSH_LIB_DEPENDS= libssh.so:security/libssh
335 SSH_CONFIGURE_ENABLE= libssh
338 TESSERACT_LIB_DEPENDS= libtesseract.so:graphics/tesseract
339 TESSERACT_CONFIGURE_ENABLE= libtesseract
342 THEORA_LIB_DEPENDS= libtheora.so:multimedia/libtheora
343 THEORA_CONFIGURE_ENABLE= libtheora
346 TWOLAME_LIB_DEPENDS= libtwolame.so:audio/twolame
347 TWOLAME_CONFIGURE_ENABLE= libtwolame
350 VAAPI_LIB_DEPENDS= libva.so:multimedia/libva
351 VAAPI_CONFIGURE_ENABLE= vaapi
354 VDPAU_LIB_DEPENDS= libvdpau.so:multimedia/libvdpau
355 VDPAU_CONFIGURE_ENABLE= vdpau
358 VFP_CONFIGURE_ENABLE= vfp
359 NEON_CONFIGURE_ENABLE= neon
360 .if ! ${CFLAGS:M-march*}
361 NEON_CONFIGURE_ON= --cpu=armv7-a
365 VO_AMRWBENC_LIB_DEPENDS= libvo-amrwbenc.so:audio/vo-amrwbenc
366 VO_AMRWBENC_CONFIGURE_ENABLE= libvo-amrwbenc
367 VO_AMRWBENC_IMPLIES= GPL3
370 VIDSTAB_LIB_DEPENDS= libvidstab.so:multimedia/vid.stab
371 VIDSTAB_CONFIGURE_ENABLE= libvidstab
374 VORBIS_LIB_DEPENDS= libvorbisenc.so:audio/libvorbis
375 VORBIS_CONFIGURE_ENABLE= libvorbis
378 VPX_LIB_DEPENDS= libvpx.so:multimedia/libvpx
379 VPX_CONFIGURE_ENABLE= libvpx
382 WAVPACK_LIB_DEPENDS= libwavpack.so:audio/wavpack
383 WAVPACK_CONFIGURE_ENABLE= libwavpack
386 WEBP_LIB_DEPENDS= libwebp.so:graphics/webp
387 WEBP_CONFIGURE_ENABLE= libwebp
390 X11GRAB_USE= XORG=x11,xext,xfixes
391 X11GRAB_CONFIGURE_ENABLE= x11grab
394 X264_LIB_DEPENDS= libx264.so:multimedia/libx264
395 X264_CONFIGURE_ENABLE= libx264
398 X265_LIB_DEPENDS= libx265.so:multimedia/x265
399 X265_CONFIGURE_ENABLE= libx265
403 XCB_CONFIGURE_ENABLE= libxcb
406 XVID_LIB_DEPENDS= libxvidcore.so:multimedia/xvid
407 XVID_CONFIGURE_ENABLE= libxvid
411 XVIDEO_CONFIGURE_OFF= --disable-outdev=xv
414 ZIMG_LIB_DEPENDS= libzimg.so:graphics/sekrit-twc-zimg
415 ZIMG_CONFIGURE_ENABLE= libzimg
418 ZMQ_LIB_DEPENDS= libzmq.so:net/libzmq${ZMQ_VERSION}
419 ZMQ_CONFIGURE_ENABLE= libzmq
423 ZVBI_LIB_DEPENDS= libzvbi.so:devel/libzvbi
424 ZVBI_CONFIGURE_ENABLE= libzvbi
427 GPL3_CONFIGURE_ENABLE= version3
428 GPL3_VARS= LICENSE="GPLv3+ LGPL3+"
429 LICENSE_FILE_GPLv3= ${WRKSRC}/COPYING.GPLv3
430 LICENSE_FILE_LGPL3= ${WRKSRC}/COPYING.LGPLv3
432 NONFREE_CONFIGURE_ENABLE=nonfree
433 NONFREE_VARS= RESTRICTED="enabling OPENSSL or FDK_AAC restricts redistribution"
435 INSTALL_TARGET= install-progs install-doc install-data \
436 install-libs install-headers
438 DATADIR= ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX}
440 DATADIR= ${PREFIX}/share/${PORTNAME}${PKGNAMESUFFIX}
441 DOCSDIR= ${PREFIX}/share/doc/${PORTNAME}${PKGNAMESUFFIX}
442 CONFIGURE_ENV+= COMPILER_PATH=${LOCALBASE}/bin
443 MAKE_ENV+= COMPILER_PATH=${LOCALBASE}/bin
445 CONFIGURE_ARGS+=--prefix="${PREFIX}" \
446 --mandir="${PREFIX}/man" \
447 --datadir="${DATADIR}" \
448 --pkgconfigdir="${PREFIX}/libdata/pkgconfig" \
453 --enable-avresample \
457 CONFIGURE_ENV_armv6_clang= ASFLAGS=-no-integrated-as
458 CONFIGURE_ARGS_armv6= --disable-fast-unaligned
459 CONFIGURE_ARGS_FreeBSD_9= --enable-memalign-hack
461 DOC_FILES= Changelog CREDITS INSTALL.md LICENSE.md MAINTAINERS \
462 README.md RELEASE_NOTES
463 # under doc subdirectory
464 DOC_DOCFILES= APIchanges *.txt
467 # Custom helpers. FOO_${ARCH} style from bsd.port.mk
468 CONFIGURE_ENV+= ${CONFIGURE_ENV_${ARCH}_${CHOSEN_COMPILER_TYPE}}
469 CONFIGURE_ARGS+=${CONFIGURE_ARGS_${OPSYS}_${OSREL:R}}
470 CONFIGURE_ARGS+=${CONFIGURE_ARGS_${ARCH}}
473 # {C,LD}FLAGS safeness
474 @${REINPLACE_CMD} -e 's|/etc/ffserver.conf|${PREFIX}/etc/ffserver.conf|' \
476 @${REINPLACE_CMD} -E \
477 -e 's|require_pkg_config opencv|require_pkg_config opencv-core|g' \
478 ${CONFIGURE_WRKSRC}/${CONFIGURE_SCRIPT}
481 (cd ${WRKSRC} && ${COPYTREE_SHARE} \
482 "${DOC_FILES}" ${STAGEDIR}${DOCSDIR})
483 (cd ${WRKSRC}/doc && ${COPYTREE_SHARE} \
484 "${DOC_DOCFILES}" ${STAGEDIR}${DOCSDIR})
486 post-install-FFSERVER-on:
487 ${INSTALL_DATA} ${WRKSRC}/doc/ffserver.conf \
488 ${STAGEDIR}${PREFIX}/etc/ffserver.conf.sample
490 .include <bsd.port.mk>