| SUMMARY = "Open source audio and video processing tools and librairies" |
| DESCRIPTION = "Libav is a friendly and community-driven effort to provide its users \ |
| with a set of portable, functional and high-performance libraries for \ |
| dealing with multimedia formats of all sorts. It originates from the \ |
| FFmpeg codebase, but goes its own way these days, providing its users \ |
| with reliable releases and a clear vision how to go forward." |
| HOMEPAGE = "http://libav.org/" |
| SECTION = "libs" |
| |
| LICENSE = "GPLv2+" |
| LICENSE_FLAGS = "commercial" |
| |
| LIC_FILES_CHKSUM = "file://COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ |
| file://COPYING.GPLv3;md5=d32239bcb673463ab874e80d47fae504 \ |
| file://COPYING.LGPLv2.1;md5=bd7a443320af8c812e4c18d1b79df004 \ |
| file://COPYING.LGPLv3;md5=e6a600fd5e1d9cbde2d983680233ad02" |
| |
| SRC_URI = "http://libav.org/releases/${BP}.tar.xz" |
| |
| # Provides ffmpeg compat, see http://libav.org/about.html |
| PROVIDES = "ffmpeg" |
| |
| ARM_INSTRUCTION_SET = "arm" |
| |
| DEPENDS = "alsa-lib zlib libogg yasm-native" |
| |
| inherit autotools pkgconfig |
| |
| B = "${S}/build.${HOST_SYS}.${TARGET_SYS}" |
| |
| FULL_OPTIMIZATION_armv7a = "-fexpensive-optimizations -fomit-frame-pointer -O4 -ffast-math" |
| BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}" |
| |
| EXTRA_FFCONF_armv7a = "--cpu=cortex-a8" |
| EXTRA_FFCONF ?= "" |
| |
| PACKAGECONFIG ??= "bzip2 x264 theora ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'x11', '', d)}" |
| PACKAGECONFIG[bzip2] = "--enable-bzlib,--disable-bzlib,bzip2" |
| PACKAGECONFIG[faac] = "--enable-libfaac,--disable-libfaac,faac" |
| PACKAGECONFIG[gsm] = "--enable-libgsm,--disable-libgsm,libgsm" |
| PACKAGECONFIG[jack] = "--enable-indev=jack,--disable-indev=jack,jack" |
| PACKAGECONFIG[libvorbis] = "--enable-libvorbis,--disable-libvorbis,libvorbis" |
| PACKAGECONFIG[mp3lame] = "--enable-libmp3lame,--disable-libmp3lame,lame" |
| PACKAGECONFIG[openssl] = "--enable-openssl,--disable-openssl,openssl" |
| PACKAGECONFIG[schroedinger] = "--enable-libschroedinger,--disable-libschroedinger,schroedinger" |
| PACKAGECONFIG[speex] = "--enable-libspeex,--disable-libspeex,speex" |
| PACKAGECONFIG[theora] = "--enable-libtheora,--disable-libtheora,libtheora" |
| PACKAGECONFIG[vaapi] = "--enable-vaapi,--disable-vaapi,libva" |
| PACKAGECONFIG[vpx] = "--enable-libvpx,--disable-libvpx,libvpx" |
| PACKAGECONFIG[x11] = "--enable-x11grab,--disable-x11grab,virtual/libx11 libxfixes libxext xproto virtual/libsdl" |
| PACKAGECONFIG[x264] = "--enable-libx264,--disable-libx264,x264" |
| |
| # Check codecs that require --enable-nonfree |
| USE_NONFREE = "${@bb.utils.contains_any('PACKAGECONFIG', [ 'faac', 'openssl' ], 'yes', '', d)}" |
| |
| EXTRA_OECONF = " \ |
| --enable-shared \ |
| --enable-pthreads \ |
| --enable-gpl \ |
| ${@bb.utils.contains('USE_NONFREE', 'yes', '--enable-nonfree', '', d)} \ |
| --enable-avfilter \ |
| \ |
| --cross-prefix=${TARGET_PREFIX} \ |
| --prefix=${prefix} \ |
| \ |
| --enable-avserver \ |
| --enable-avplay \ |
| --ld="${CCLD}" \ |
| --arch=${TARGET_ARCH} \ |
| --target-os="linux" \ |
| --enable-cross-compile \ |
| --extra-cflags="${TARGET_CFLAGS} ${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS}" \ |
| --extra-ldflags="${TARGET_LDFLAGS}" \ |
| --sysroot="${STAGING_DIR_TARGET}" \ |
| --enable-hardcoded-tables \ |
| ${EXTRA_FFCONF} \ |
| --libdir=${libdir} \ |
| --shlibdir=${libdir} \ |
| " |
| |
| do_configure() { |
| # We don't have TARGET_PREFIX-pkgconfig |
| sed -i '/pkg_config_default="${cross_prefix}${pkg_config_default}"/d' ${S}/configure |
| mkdir -p ${B} |
| cd ${B} |
| ${S}/configure ${EXTRA_OECONF} |
| sed -i -e s:Os:O4:g ${B}/config.h |
| } |
| |
| do_install_append() { |
| install -m 0644 ${S}/libavfilter/*.h ${D}${includedir}/libavfilter/ |
| } |
| |
| PACKAGES += "${PN}-vhook-dbg ${PN}-vhook ffmpeg-x264-presets" |
| PACKAGES_DYNAMIC += "^lib(av(codec|device|filter|format|util)|swscale).*" |
| |
| RSUGGESTS_${PN} = "mplayer" |
| FILES_${PN} = "${bindir}" |
| FILES_${PN}-dev = "${includedir}/${PN}" |
| |
| FILES_${PN}-vhook = "${libdir}/vhook" |
| FILES_${PN}-vhook-dbg += "${libdir}/vhook/.debug" |
| |
| FILES_ffmpeg-x264-presets = "${datadir}/*.avpreset" |
| |
| LEAD_SONAME = "libavcodec.so" |
| |
| FILES_${PN}-dev = "${includedir}" |
| |
| python populate_packages_prepend() { |
| av_libdir = d.expand('${libdir}') |
| av_pkgconfig = d.expand('${libdir}/pkgconfig') |
| |
| # Runtime package |
| do_split_packages(d, av_libdir, '^lib(.*)\.so\..*', |
| output_pattern='lib%s', |
| description='libav %s library', |
| extra_depends='', |
| prepend=True, |
| allow_links=True) |
| |
| # Development packages (-dev, -staticdev) |
| do_split_packages(d, av_libdir, '^lib(.*)\.so$', |
| output_pattern='lib%s-dev', |
| description='libav %s development package', |
| extra_depends='${PN}-dev', |
| prepend=True, |
| allow_links=True) |
| do_split_packages(d, av_pkgconfig, '^lib(.*)\.pc$', |
| output_pattern='lib%s-dev', |
| description='libav %s development package', |
| extra_depends='${PN}-dev', |
| prepend=True) |
| do_split_packages(d, av_libdir, '^lib(.*)\.a$', |
| output_pattern='lib%s-staticdev', |
| description='libav %s development package - static library', |
| extra_depends='${PN}-dev', |
| prepend=True, |
| allow_links=True) |
| |
| if d.getVar('TARGET_ARCH', True) in [ 'i586', 'i686' ]: |
| # libav can't be build with -fPIC for 32-bit x86 |
| pkgs = d.getVar('PACKAGES', True).split() |
| for pkg in pkgs: |
| d.appendVar('INSANE_SKIP_%s' % pkg, ' textrel') |
| } |