mirror of
https://github.com/libretro/Lakka-LibreELEC.git
synced 2025-04-02 10:41:46 -04:00
this brings images suited to work OOB for RPi3/4/5 with CRT TV sets. it comes with preconfigured shaders, core options, readable font, ... see https://www.lakka.tv/articles/2024/05/02/rpi-composite/ - add new RPiX-Composite devices under RPi project - RPi3/4-Composite use own kernel config - RPi5-Composite uses kernel config of RPi5 - remove linux.arm.conf broken symlinks from some devices - move VULKAN enable to device options - add splash screens for 480/576 height - glibc: match kernel version for RPi3/4 (using 5.10.y with "fake" 240p patch) - adjust DEVICE conditions to only match first 4 characters / first 4 characters + wildcard (various places) - add specific assets, configs, shaders in retroarch package - retroarch: adjust default configuration - linux: add 5.10.y kernel (used by RPi3/4-Composite, see above) - linux: add patches for 5.10.y kernel - mkimage: add additional information into cmdline.txt and retroarch-overrides.txt - firstboot.sh: add output (logged in fs-resize.log) - firstboot.sh: prepend processed overrides with hash - firstboot.sh: copy core configurations to storage partition - firstboot.sh: rework wifi autoconfig script - retroarch: add full default config file and apply changes in the package file directly to the config for individual systems (solves some issues with core/game overrides when there is no value in the config and user creates overrides in first run of retroarch, then these overrides are also stored in default config)
269 lines
11 KiB
Makefile
269 lines
11 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
|
|
# Copyright (C) 2017-present Team LibreELEC (https://libreelec.tv)
|
|
|
|
PKG_NAME="ffmpeg"
|
|
PKG_VERSION="7.1"
|
|
PKG_SHA256="40973d44970dbc83ef302b0609f2e74982be2d85916dd2ee7472d30678a7abe6"
|
|
PKG_LICENSE="GPL-3.0-only"
|
|
PKG_SITE="https://ffmpeg.org"
|
|
PKG_URL="http://ffmpeg.org/releases/ffmpeg-${PKG_VERSION}.tar.xz"
|
|
PKG_DEPENDS_TARGET="toolchain zlib bzip2 openssl speex libxml2"
|
|
if [ "${DISTRO}" = "Lakka" ]; then
|
|
PKG_DEPENDS_TARGET+=" libx264 lame rtmpdump"
|
|
fi
|
|
PKG_LONGDESC="FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video."
|
|
PKG_PATCH_DIRS="libreelec"
|
|
|
|
case "${PROJECT}" in
|
|
Amlogic)
|
|
PKG_VERSION="5f39f6c33638de22605b16ec8dc1898135b09bb0"
|
|
PKG_FFMPEG_BRANCH="test/7.1/main"
|
|
PKG_SHA256="f432ea06ef9414ba26cccb95287f00718e12b5ad27c9079fc0c0cefc4b4a2325"
|
|
PKG_URL="https://github.com/jc-kynesim/rpi-ffmpeg/archive/${PKG_VERSION}.tar.gz"
|
|
;;
|
|
RPi)
|
|
PKG_FFMPEG_RPI="--disable-mmal --enable-sand"
|
|
PKG_PATCH_DIRS+=" rpi"
|
|
;;
|
|
L4T)
|
|
PKG_DEPENDS_TARGET+=" tegra-bsp:host"
|
|
PKG_PATCH_DIRS+=" L4T"
|
|
PKG_FFMPEG_NVV4L2="--enable-nvv4l2"
|
|
EXTRA_CFLAGS="-I${SYSROOT_PREFIX}/usr/src/jetson_multimedia_api/include"
|
|
;;
|
|
*)
|
|
PKG_PATCH_DIRS+=" v4l2-request v4l2-drmprime"
|
|
case "${PROJECT}" in
|
|
Allwinner | Rockchip)
|
|
PKG_PATCH_DIRS+=" vf-deinterlace-v4l2m2m"
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
post_unpack() {
|
|
# Fix FFmpeg version
|
|
if [ "${PROJECT}" = "Amlogic" ]; then
|
|
echo "${PKG_FFMPEG_BRANCH}-${PKG_VERSION:0:7}" >${PKG_BUILD}/VERSION
|
|
else
|
|
echo "${PKG_VERSION}" >${PKG_BUILD}/RELEASE
|
|
fi
|
|
}
|
|
|
|
# Dependencies
|
|
get_graphicdrivers
|
|
|
|
PKG_FFMPEG_HWACCEL="--enable-hwaccels"
|
|
|
|
if [ "${V4L2_SUPPORT}" = "yes" -a ! "${DEVICE}" = "Switch" ]; then
|
|
PKG_DEPENDS_TARGET+=" libdrm"
|
|
PKG_NEED_UNPACK+=" $(get_pkg_directory libdrm)"
|
|
PKG_FFMPEG_V4L2="--enable-v4l2_m2m --enable-libdrm"
|
|
|
|
if [ "${PROJECT}" = "Allwinner" -o "${PROJECT}" = "Rockchip" -o "${DEVICE}" = "iMX8" -o "${DEVICE:0:4}" = "RPi4" -o "${DEVICE:0:4}" = "RPi5" ]; then
|
|
PKG_V4L2_REQUEST="yes"
|
|
else
|
|
PKG_V4L2_REQUEST="no"
|
|
fi
|
|
|
|
if [ "${PKG_V4L2_REQUEST}" = "yes" ]; then
|
|
PKG_DEPENDS_TARGET+=" systemd"
|
|
PKG_NEED_UNPACK+=" $(get_pkg_directory systemd)"
|
|
PKG_FFMPEG_V4L2+=" --enable-libudev --enable-v4l2-request"
|
|
else
|
|
PKG_FFMPEG_V4L2+=" --disable-libudev --disable-v4l2-request"
|
|
fi
|
|
else
|
|
: #PKG_FFMPEG_V4L2="--disable-v4l2_m2m --disable-libudev --disable-v4l2-request"
|
|
fi
|
|
|
|
if [ "${VAAPI_SUPPORT}" = "yes" ]; then
|
|
PKG_DEPENDS_TARGET+=" libva"
|
|
PKG_NEED_UNPACK+=" $(get_pkg_directory libva)"
|
|
PKG_FFMPEG_VAAPI="--enable-vaapi"
|
|
else
|
|
PKG_FFMPEG_VAAPI="--disable-vaapi"
|
|
fi
|
|
|
|
if [ "${DISPLAYSERVER}" != "x11" ]; then
|
|
PKG_DEPENDS_TARGET+=" libdrm"
|
|
PKG_NEED_UNPACK+=" $(get_pkg_directory libdrm)"
|
|
PKG_FFMPEG_VAAPI=" --enable-libdrm"
|
|
fi
|
|
|
|
if [ "${VDPAU_SUPPORT}" = "yes" -a "${DISPLAYSERVER}" = "x11" ]; then
|
|
PKG_DEPENDS_TARGET+=" libvdpau"
|
|
PKG_NEED_UNPACK+=" $(get_pkg_directory libvdpau)"
|
|
PKG_FFMPEG_VDPAU="--enable-vdpau"
|
|
else
|
|
PKG_FFMPEG_VDPAU="--disable-vdpau"
|
|
fi
|
|
|
|
if build_with_debug; then
|
|
PKG_FFMPEG_DEBUG="--enable-debug --disable-stripping"
|
|
else
|
|
PKG_FFMPEG_DEBUG="--disable-debug --enable-stripping"
|
|
fi
|
|
|
|
if target_has_feature neon; then
|
|
PKG_FFMPEG_FPU="--enable-neon"
|
|
else
|
|
PKG_FFMPEG_FPU="--disable-neon"
|
|
fi
|
|
|
|
if [ "${TARGET_ARCH}" = "x86_64" -o "${TARGET_ARCH}" = "i386" ]; then
|
|
PKG_DEPENDS_TARGET+=" nasm:host"
|
|
fi
|
|
|
|
if target_has_feature "(neon|sse)"; then
|
|
PKG_DEPENDS_TARGET+=" dav1d"
|
|
PKG_NEED_UNPACK+=" $(get_pkg_directory dav1d)"
|
|
PKG_FFMPEG_AV1="--enable-libdav1d"
|
|
else
|
|
PKG_FFMPEG_AV1="--disable-libdav1d"
|
|
fi
|
|
|
|
pre_configure_target() {
|
|
cd ${PKG_BUILD}
|
|
rm -rf .${TARGET_NAME}
|
|
}
|
|
|
|
if [ "${FFMPEG_TESTING}" = "yes" ]; then
|
|
PKG_FFMPEG_TESTING="--enable-encoder=wrapped_avframe --enable-muxer=null"
|
|
PKG_FFMPEG_TESTING+=" --enable-encoder=rawvideo --enable-muxer=rawvideo"
|
|
PKG_FFMPEG_TESTING+=" --enable-muxer=image2 --enable-muxer=md5 --enable-muxer=framemd5"
|
|
if [ "${PROJECT}" = "RPi" ]; then
|
|
PKG_FFMPEG_TESTING+=" --enable-vout-drm --enable-outdev=vout_drm"
|
|
fi
|
|
else
|
|
PKG_FFMPEG_TESTING="--disable-programs"
|
|
fi
|
|
|
|
configure_target() {
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=" --disable-static \
|
|
--enable-shared \
|
|
--enable-gpl \
|
|
--enable-version3 \
|
|
--enable-logging \
|
|
--disable-doc \
|
|
${PKG_FFMPEG_DEBUG} \
|
|
--enable-pic \
|
|
--enable-optimizations \
|
|
--disable-extra-warnings \
|
|
--enable-avdevice \
|
|
--enable-avcodec \
|
|
--enable-avformat \
|
|
--enable-swscale \
|
|
--enable-postproc \
|
|
--enable-avfilter \
|
|
--disable-devices \
|
|
--enable-pthreads \
|
|
--enable-network \
|
|
--disable-gnutls --enable-openssl \
|
|
--disable-gray \
|
|
--enable-swscale-alpha \
|
|
--disable-small \
|
|
${PKG_FFMPEG_V4L2} \
|
|
${PKG_FFMPEG_VAAPI} \
|
|
${PKG_FFMPEG_VDPAU} \
|
|
${PKG_FFMPEG_RPI} \
|
|
--enable-runtime-cpudetect \
|
|
--disable-hardcoded-tables \
|
|
--disable-encoders \
|
|
--enable-encoder=ac3 \
|
|
--enable-encoder=aac \
|
|
--enable-encoder=wmav2 \
|
|
--enable-encoder=mjpeg \
|
|
--enable-encoder=png \
|
|
${PKG_FFMPEG_HWACCEL} \
|
|
--disable-muxers \
|
|
--enable-muxer=spdif \
|
|
--enable-muxer=adts \
|
|
--enable-muxer=asf \
|
|
--enable-muxer=ipod \
|
|
--enable-muxer=mpegts \
|
|
--enable-demuxers \
|
|
--enable-parsers \
|
|
--enable-bsfs \
|
|
--enable-protocol=http \
|
|
--disable-indevs \
|
|
--disable-outdevs \
|
|
--enable-filters \
|
|
--disable-avisynth \
|
|
--enable-bzlib \
|
|
--disable-lzma \
|
|
--disable-alsa \
|
|
--disable-frei0r \
|
|
--disable-libopencore-amrnb \
|
|
--disable-libopencore-amrwb \
|
|
--disable-libopencv \
|
|
--disable-libdc1394 \
|
|
--disable-libfreetype \
|
|
--disable-libgsm \
|
|
--disable-libmp3lame \
|
|
--disable-libopenjpeg \
|
|
--disable-librtmp \
|
|
${PKG_FFMPEG_AV1} \
|
|
--enable-libspeex \
|
|
--disable-libtheora \
|
|
--disable-libvo-amrwbenc \
|
|
--disable-libvorbis \
|
|
--disable-libvpx \
|
|
--disable-libx264 \
|
|
--disable-libxavs \
|
|
--enable-libxml2 \
|
|
--disable-libxvid \
|
|
--enable-zlib \
|
|
--enable-asm \
|
|
--disable-altivec \
|
|
${PKG_FFMPEG_FPU} \
|
|
--disable-symver \
|
|
${PKG_FFMPEG_TESTING} \
|
|
${PKG_FFMPEG_NVV4L2} \
|
|
${PKG_FFMPEG_VULKAN}"
|
|
|
|
if [ "${DISTRO}" = "Lakka" ]; then
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--disable-encoders "/"--enable-encoders "}
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--enable-encoder=ac3 "/""}
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--enable-encoder=aac "/""}
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--enable-encoder=wmav2 "/""}
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--enable-encoder=mjpeg "/""}
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--enable-encoder=png "/""}
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--disable-muxers "/"--enable-muxers "}
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--enable-muxer=spdif "/""}
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--enable-muxer=adts "/""}
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--enable-muxer=asf "/""}
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--enable-muxer=ipod "/""}
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--enable-muxer=mpegts "/""}
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--disable-libmp3lame "/"--enable-libmp3lame "}
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--disable-librtmp "/"--enable-librtmp "}
|
|
CONFIG_OPTIONS_STANDARD_FFMPEG=${CONFIG_OPTIONS_STANDARD_FFMPEG/"--disable-libx264 "/"--enable-libx264 "}
|
|
fi
|
|
|
|
./configure --prefix="/usr" \
|
|
--cpu="${TARGET_CPU}" \
|
|
--arch="${TARGET_ARCH}" \
|
|
--enable-cross-compile \
|
|
--cross-prefix="${TARGET_PREFIX}" \
|
|
--sysroot="${SYSROOT_PREFIX}" \
|
|
--sysinclude="${SYSROOT_PREFIX}/usr/include" \
|
|
--target-os="linux" \
|
|
--nm="${NM}" \
|
|
--ar="${AR}" \
|
|
--as="${CC}" \
|
|
--cc="${CC}" \
|
|
--ld="${CC}" \
|
|
--host-cc="${HOST_CC}" \
|
|
--host-cflags="${HOST_CFLAGS}" \
|
|
--host-ldflags="${HOST_LDFLAGS}" \
|
|
--extra-cflags="${CFLAGS} ${EXTRA_CFLAGS}" \
|
|
--extra-ldflags="${LDFLAGS}" \
|
|
--extra-libs="${PKG_FFMPEG_LIBS}" \
|
|
--pkg-config="${TOOLCHAIN}/bin/pkg-config" \
|
|
${CONFIG_OPTIONS_STANDARD_FFMPEG}
|
|
}
|
|
|
|
post_makeinstall_target() {
|
|
rm -rf ${INSTALL}/usr/share/ffmpeg/examples
|
|
}
|