mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2025-02-16 23:57:11 +00:00
added alarm/ffmpeg-rpi
New package is required for HW decoding with vlc-rpi. Use -mcpu in C/XXFLAGS which will limit use of this package to RPi3 and above which isn't a big loss since HW decoding on RPi2 is pretty limited. Commit also makes this a split package with the new ffmpeg-rpi-bin providing the man pages and executables stripped out in the main package to allow a full package of ffmpeg with HW decoding should someone what that.
This commit is contained in:
parent
0f2d22f21e
commit
112622666f
5 changed files with 69469 additions and 0 deletions
13
alarm/ffmpeg-rpi/0001-vmaf-model-path.patch
Normal file
13
alarm/ffmpeg-rpi/0001-vmaf-model-path.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
diff --git a/libavfilter/vf_libvmaf.c b/libavfilter/vf_libvmaf.c
|
||||
index 249e50c720..9b791e19b1 100644
|
||||
--- a/libavfilter/vf_libvmaf.c
|
||||
+++ b/libavfilter/vf_libvmaf.c
|
||||
@@ -72,7 +72,7 @@ typedef struct LIBVMAFContext {
|
||||
#define FLAGS AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM
|
||||
|
||||
static const AVOption libvmaf_options[] = {
|
||||
- {"model_path", "Set the model to be used for computing vmaf.", OFFSET(model_path), AV_OPT_TYPE_STRING, {.str="/usr/local/share/model/vmaf_v0.6.1.pkl"}, 0, 1, FLAGS},
|
||||
+ {"model_path", "Set the model to be used for computing vmaf.", OFFSET(model_path), AV_OPT_TYPE_STRING, {.str="/usr/share/model/vmaf_v0.6.1.pkl"}, 0, 1, FLAGS},
|
||||
{"log_path", "Set the file path to be used to store logs.", OFFSET(log_path), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
|
||||
{"log_fmt", "Set the format of the log (xml or json).", OFFSET(log_fmt), AV_OPT_TYPE_STRING, {.str=NULL}, 0, 1, FLAGS},
|
||||
{"enable_transform", "Enables transform for computing vmaf.", OFFSET(enable_transform), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, FLAGS},
|
|
@ -0,0 +1,287 @@
|
|||
From: James Cowgill <jcowgill@debian.org>
|
||||
Date: Sun, 11 Aug 2019 16:50:56 +0100
|
||||
Subject: avcodec/arm/sbcenc: avoid callee preserved vfp registers
|
||||
|
||||
When compiling FFmpeg with GCC-9, some very random segfaults were
|
||||
observed in code which had previously called down into the SBC encoder
|
||||
NEON assembly routines. This was caused by these functions clobbering
|
||||
some of the vfp callee saved registers (d8 - d15 aka q4 - q7). GCC was
|
||||
using these registers to save local variables, but after these
|
||||
functions returned, they would contain garbage.
|
||||
|
||||
Fix by reallocating the registers in the two affected functions in
|
||||
the following way:
|
||||
ff_sbc_analyze_4_neon: q2-q5 => q8-q11, then q1-q4 => q8-q11
|
||||
ff_sbc_analyze_8_neon: q2-q9 => q8-q15
|
||||
|
||||
The reason for using these replacements is to keep closely related
|
||||
sets of registers consecutively numbered which hopefully makes the
|
||||
code more easy to follow. Since this commit only reallocates
|
||||
registers, it should have no performance impact.
|
||||
|
||||
Signed-off-by: James Cowgill <jcowgill@debian.org>
|
||||
---
|
||||
libavcodec/arm/sbcdsp_neon.S | 220 +++++++++++++++++++++----------------------
|
||||
1 file changed, 110 insertions(+), 110 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/arm/sbcdsp_neon.S b/libavcodec/arm/sbcdsp_neon.S
|
||||
index d83d21d..914abfb 100644
|
||||
--- a/libavcodec/arm/sbcdsp_neon.S
|
||||
+++ b/libavcodec/arm/sbcdsp_neon.S
|
||||
@@ -38,49 +38,49 @@ function ff_sbc_analyze_4_neon, export=1
|
||||
/* TODO: merge even and odd cases (or even merge all four calls to this
|
||||
* function) in order to have only aligned reads from 'in' array
|
||||
* and reduce number of load instructions */
|
||||
- vld1.16 {d4, d5}, [r0, :64]!
|
||||
- vld1.16 {d8, d9}, [r2, :128]!
|
||||
+ vld1.16 {d16, d17}, [r0, :64]!
|
||||
+ vld1.16 {d20, d21}, [r2, :128]!
|
||||
|
||||
- vmull.s16 q0, d4, d8
|
||||
- vld1.16 {d6, d7}, [r0, :64]!
|
||||
- vmull.s16 q1, d5, d9
|
||||
- vld1.16 {d10, d11}, [r2, :128]!
|
||||
+ vmull.s16 q0, d16, d20
|
||||
+ vld1.16 {d18, d19}, [r0, :64]!
|
||||
+ vmull.s16 q1, d17, d21
|
||||
+ vld1.16 {d22, d23}, [r2, :128]!
|
||||
|
||||
- vmlal.s16 q0, d6, d10
|
||||
- vld1.16 {d4, d5}, [r0, :64]!
|
||||
- vmlal.s16 q1, d7, d11
|
||||
- vld1.16 {d8, d9}, [r2, :128]!
|
||||
+ vmlal.s16 q0, d18, d22
|
||||
+ vld1.16 {d16, d17}, [r0, :64]!
|
||||
+ vmlal.s16 q1, d19, d23
|
||||
+ vld1.16 {d20, d21}, [r2, :128]!
|
||||
|
||||
- vmlal.s16 q0, d4, d8
|
||||
- vld1.16 {d6, d7}, [r0, :64]!
|
||||
- vmlal.s16 q1, d5, d9
|
||||
- vld1.16 {d10, d11}, [r2, :128]!
|
||||
+ vmlal.s16 q0, d16, d20
|
||||
+ vld1.16 {d18, d19}, [r0, :64]!
|
||||
+ vmlal.s16 q1, d17, d21
|
||||
+ vld1.16 {d22, d23}, [r2, :128]!
|
||||
|
||||
- vmlal.s16 q0, d6, d10
|
||||
- vld1.16 {d4, d5}, [r0, :64]!
|
||||
- vmlal.s16 q1, d7, d11
|
||||
- vld1.16 {d8, d9}, [r2, :128]!
|
||||
+ vmlal.s16 q0, d18, d22
|
||||
+ vld1.16 {d16, d17}, [r0, :64]!
|
||||
+ vmlal.s16 q1, d19, d23
|
||||
+ vld1.16 {d20, d21}, [r2, :128]!
|
||||
|
||||
- vmlal.s16 q0, d4, d8
|
||||
- vmlal.s16 q1, d5, d9
|
||||
+ vmlal.s16 q0, d16, d20
|
||||
+ vmlal.s16 q1, d17, d21
|
||||
|
||||
vpadd.s32 d0, d0, d1
|
||||
vpadd.s32 d1, d2, d3
|
||||
|
||||
vrshrn.s32 d0, q0, SBC_PROTO_FIXED_SCALE
|
||||
|
||||
- vld1.16 {d2, d3, d4, d5}, [r2, :128]!
|
||||
+ vld1.16 {d16, d17, d18, d19}, [r2, :128]!
|
||||
|
||||
vdup.i32 d1, d0[1] /* TODO: can be eliminated */
|
||||
vdup.i32 d0, d0[0] /* TODO: can be eliminated */
|
||||
|
||||
- vmull.s16 q3, d2, d0
|
||||
- vmull.s16 q4, d3, d0
|
||||
- vmlal.s16 q3, d4, d1
|
||||
- vmlal.s16 q4, d5, d1
|
||||
+ vmull.s16 q10, d16, d0
|
||||
+ vmull.s16 q11, d17, d0
|
||||
+ vmlal.s16 q10, d18, d1
|
||||
+ vmlal.s16 q11, d19, d1
|
||||
|
||||
- vpadd.s32 d0, d6, d7 /* TODO: can be eliminated */
|
||||
- vpadd.s32 d1, d8, d9 /* TODO: can be eliminated */
|
||||
+ vpadd.s32 d0, d20, d21 /* TODO: can be eliminated */
|
||||
+ vpadd.s32 d1, d22, d23 /* TODO: can be eliminated */
|
||||
|
||||
vst1.32 {d0, d1}, [r1, :128]
|
||||
|
||||
@@ -91,57 +91,57 @@ function ff_sbc_analyze_8_neon, export=1
|
||||
/* TODO: merge even and odd cases (or even merge all four calls to this
|
||||
* function) in order to have only aligned reads from 'in' array
|
||||
* and reduce number of load instructions */
|
||||
- vld1.16 {d4, d5}, [r0, :64]!
|
||||
- vld1.16 {d8, d9}, [r2, :128]!
|
||||
-
|
||||
- vmull.s16 q6, d4, d8
|
||||
- vld1.16 {d6, d7}, [r0, :64]!
|
||||
- vmull.s16 q7, d5, d9
|
||||
- vld1.16 {d10, d11}, [r2, :128]!
|
||||
- vmull.s16 q8, d6, d10
|
||||
- vld1.16 {d4, d5}, [r0, :64]!
|
||||
- vmull.s16 q9, d7, d11
|
||||
- vld1.16 {d8, d9}, [r2, :128]!
|
||||
-
|
||||
- vmlal.s16 q6, d4, d8
|
||||
- vld1.16 {d6, d7}, [r0, :64]!
|
||||
- vmlal.s16 q7, d5, d9
|
||||
- vld1.16 {d10, d11}, [r2, :128]!
|
||||
- vmlal.s16 q8, d6, d10
|
||||
- vld1.16 {d4, d5}, [r0, :64]!
|
||||
- vmlal.s16 q9, d7, d11
|
||||
- vld1.16 {d8, d9}, [r2, :128]!
|
||||
-
|
||||
- vmlal.s16 q6, d4, d8
|
||||
- vld1.16 {d6, d7}, [r0, :64]!
|
||||
- vmlal.s16 q7, d5, d9
|
||||
- vld1.16 {d10, d11}, [r2, :128]!
|
||||
- vmlal.s16 q8, d6, d10
|
||||
- vld1.16 {d4, d5}, [r0, :64]!
|
||||
- vmlal.s16 q9, d7, d11
|
||||
- vld1.16 {d8, d9}, [r2, :128]!
|
||||
-
|
||||
- vmlal.s16 q6, d4, d8
|
||||
- vld1.16 {d6, d7}, [r0, :64]!
|
||||
- vmlal.s16 q7, d5, d9
|
||||
- vld1.16 {d10, d11}, [r2, :128]!
|
||||
- vmlal.s16 q8, d6, d10
|
||||
- vld1.16 {d4, d5}, [r0, :64]!
|
||||
- vmlal.s16 q9, d7, d11
|
||||
- vld1.16 {d8, d9}, [r2, :128]!
|
||||
-
|
||||
- vmlal.s16 q6, d4, d8
|
||||
- vld1.16 {d6, d7}, [r0, :64]!
|
||||
- vmlal.s16 q7, d5, d9
|
||||
- vld1.16 {d10, d11}, [r2, :128]!
|
||||
-
|
||||
- vmlal.s16 q8, d6, d10
|
||||
- vmlal.s16 q9, d7, d11
|
||||
-
|
||||
- vpadd.s32 d0, d12, d13
|
||||
- vpadd.s32 d1, d14, d15
|
||||
- vpadd.s32 d2, d16, d17
|
||||
- vpadd.s32 d3, d18, d19
|
||||
+ vld1.16 {d16, d17}, [r0, :64]!
|
||||
+ vld1.16 {d20, d21}, [r2, :128]!
|
||||
+
|
||||
+ vmull.s16 q12, d16, d20
|
||||
+ vld1.16 {d18, d19}, [r0, :64]!
|
||||
+ vmull.s16 q13, d17, d21
|
||||
+ vld1.16 {d22, d23}, [r2, :128]!
|
||||
+ vmull.s16 q14, d18, d22
|
||||
+ vld1.16 {d16, d17}, [r0, :64]!
|
||||
+ vmull.s16 q15, d19, d23
|
||||
+ vld1.16 {d20, d21}, [r2, :128]!
|
||||
+
|
||||
+ vmlal.s16 q12, d16, d20
|
||||
+ vld1.16 {d18, d19}, [r0, :64]!
|
||||
+ vmlal.s16 q13, d17, d21
|
||||
+ vld1.16 {d22, d23}, [r2, :128]!
|
||||
+ vmlal.s16 q14, d18, d22
|
||||
+ vld1.16 {d16, d17}, [r0, :64]!
|
||||
+ vmlal.s16 q15, d19, d23
|
||||
+ vld1.16 {d20, d21}, [r2, :128]!
|
||||
+
|
||||
+ vmlal.s16 q12, d16, d20
|
||||
+ vld1.16 {d18, d19}, [r0, :64]!
|
||||
+ vmlal.s16 q13, d17, d21
|
||||
+ vld1.16 {d22, d23}, [r2, :128]!
|
||||
+ vmlal.s16 q14, d18, d22
|
||||
+ vld1.16 {d16, d17}, [r0, :64]!
|
||||
+ vmlal.s16 q15, d19, d23
|
||||
+ vld1.16 {d20, d21}, [r2, :128]!
|
||||
+
|
||||
+ vmlal.s16 q12, d16, d20
|
||||
+ vld1.16 {d18, d19}, [r0, :64]!
|
||||
+ vmlal.s16 q13, d17, d21
|
||||
+ vld1.16 {d22, d23}, [r2, :128]!
|
||||
+ vmlal.s16 q14, d18, d22
|
||||
+ vld1.16 {d16, d17}, [r0, :64]!
|
||||
+ vmlal.s16 q15, d19, d23
|
||||
+ vld1.16 {d20, d21}, [r2, :128]!
|
||||
+
|
||||
+ vmlal.s16 q12, d16, d20
|
||||
+ vld1.16 {d18, d19}, [r0, :64]!
|
||||
+ vmlal.s16 q13, d17, d21
|
||||
+ vld1.16 {d22, d23}, [r2, :128]!
|
||||
+
|
||||
+ vmlal.s16 q14, d18, d22
|
||||
+ vmlal.s16 q15, d19, d23
|
||||
+
|
||||
+ vpadd.s32 d0, d24, d25
|
||||
+ vpadd.s32 d1, d26, d27
|
||||
+ vpadd.s32 d2, d28, d29
|
||||
+ vpadd.s32 d3, d30, d31
|
||||
|
||||
vrshr.s32 q0, q0, SBC_PROTO_FIXED_SCALE
|
||||
vrshr.s32 q1, q1, SBC_PROTO_FIXED_SCALE
|
||||
@@ -153,38 +153,38 @@ function ff_sbc_analyze_8_neon, export=1
|
||||
vdup.i32 d1, d0[1] /* TODO: can be eliminated */
|
||||
vdup.i32 d0, d0[0] /* TODO: can be eliminated */
|
||||
|
||||
- vld1.16 {d4, d5}, [r2, :128]!
|
||||
- vmull.s16 q6, d4, d0
|
||||
- vld1.16 {d6, d7}, [r2, :128]!
|
||||
- vmull.s16 q7, d5, d0
|
||||
- vmull.s16 q8, d6, d0
|
||||
- vmull.s16 q9, d7, d0
|
||||
-
|
||||
- vld1.16 {d4, d5}, [r2, :128]!
|
||||
- vmlal.s16 q6, d4, d1
|
||||
- vld1.16 {d6, d7}, [r2, :128]!
|
||||
- vmlal.s16 q7, d5, d1
|
||||
- vmlal.s16 q8, d6, d1
|
||||
- vmlal.s16 q9, d7, d1
|
||||
-
|
||||
- vld1.16 {d4, d5}, [r2, :128]!
|
||||
- vmlal.s16 q6, d4, d2
|
||||
- vld1.16 {d6, d7}, [r2, :128]!
|
||||
- vmlal.s16 q7, d5, d2
|
||||
- vmlal.s16 q8, d6, d2
|
||||
- vmlal.s16 q9, d7, d2
|
||||
-
|
||||
- vld1.16 {d4, d5}, [r2, :128]!
|
||||
- vmlal.s16 q6, d4, d3
|
||||
- vld1.16 {d6, d7}, [r2, :128]!
|
||||
- vmlal.s16 q7, d5, d3
|
||||
- vmlal.s16 q8, d6, d3
|
||||
- vmlal.s16 q9, d7, d3
|
||||
-
|
||||
- vpadd.s32 d0, d12, d13 /* TODO: can be eliminated */
|
||||
- vpadd.s32 d1, d14, d15 /* TODO: can be eliminated */
|
||||
- vpadd.s32 d2, d16, d17 /* TODO: can be eliminated */
|
||||
- vpadd.s32 d3, d18, d19 /* TODO: can be eliminated */
|
||||
+ vld1.16 {d16, d17}, [r2, :128]!
|
||||
+ vmull.s16 q12, d16, d0
|
||||
+ vld1.16 {d18, d19}, [r2, :128]!
|
||||
+ vmull.s16 q13, d17, d0
|
||||
+ vmull.s16 q14, d18, d0
|
||||
+ vmull.s16 q15, d19, d0
|
||||
+
|
||||
+ vld1.16 {d16, d17}, [r2, :128]!
|
||||
+ vmlal.s16 q12, d16, d1
|
||||
+ vld1.16 {d18, d19}, [r2, :128]!
|
||||
+ vmlal.s16 q13, d17, d1
|
||||
+ vmlal.s16 q14, d18, d1
|
||||
+ vmlal.s16 q15, d19, d1
|
||||
+
|
||||
+ vld1.16 {d16, d17}, [r2, :128]!
|
||||
+ vmlal.s16 q12, d16, d2
|
||||
+ vld1.16 {d18, d19}, [r2, :128]!
|
||||
+ vmlal.s16 q13, d17, d2
|
||||
+ vmlal.s16 q14, d18, d2
|
||||
+ vmlal.s16 q15, d19, d2
|
||||
+
|
||||
+ vld1.16 {d16, d17}, [r2, :128]!
|
||||
+ vmlal.s16 q12, d16, d3
|
||||
+ vld1.16 {d18, d19}, [r2, :128]!
|
||||
+ vmlal.s16 q13, d17, d3
|
||||
+ vmlal.s16 q14, d18, d3
|
||||
+ vmlal.s16 q15, d19, d3
|
||||
+
|
||||
+ vpadd.s32 d0, d24, d25 /* TODO: can be eliminated */
|
||||
+ vpadd.s32 d1, d26, d27 /* TODO: can be eliminated */
|
||||
+ vpadd.s32 d2, d28, d29 /* TODO: can be eliminated */
|
||||
+ vpadd.s32 d3, d30, d31 /* TODO: can be eliminated */
|
||||
|
||||
vst1.32 {d0, d1, d2, d3}, [r1, :128]
|
||||
|
17
alarm/ffmpeg-rpi/0003-fix_flags.patch
Normal file
17
alarm/ffmpeg-rpi/0003-fix_flags.patch
Normal file
|
@ -0,0 +1,17 @@
|
|||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -6471,11 +6471,9 @@ enabled mbedtls && { check_pkg
|
||||
die "ERROR: mbedTLS not found"; }
|
||||
enabled mediacodec && { enabled jni || die "ERROR: mediacodec requires --enable-jni"; }
|
||||
( enabled rpi ||
|
||||
- enabled mmal ) && { check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host ||
|
||||
- { ! enabled cross_compile &&
|
||||
- add_cflags -isystem/opt/vc/include/ -isystem/opt/vc/include/interface/vmcs_host/linux -isystem/opt/vc/include/interface/vcos/pthreads -fgnu89-inline &&
|
||||
- add_ldflags -L/opt/vc/lib/ &&
|
||||
- check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host -lvcos -lvcsm -lvchostif -lvchiq_arm; } ||
|
||||
+ enabled mmal ) && { { add_cflags -isystem/opt/vc/include/ -isystem/opt/vc/include/interface/vmcs_host/linux -isystem/opt/vc/include/interface/vcos/pthreads -fgnu89-inline &&
|
||||
+ add_ldflags -L/opt/vc/lib/ &&
|
||||
+ check_lib mmal interface/mmal/mmal.h mmal_port_connect -lmmal_core -lmmal_util -lmmal_vc_client -lbcm_host -lvcsm -lvchostif -lvchiq_arm -lvcos; } ||
|
||||
die "ERROR: mmal not found" &&
|
||||
check_func_headers interface/mmal/mmal.h "MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS"; }
|
||||
enabled openal && { { for al_extralibs in "${OPENAL_LIBS}" "-lopenal" "-lOpenAL32"; do
|
68893
alarm/ffmpeg-rpi/0004-ffmpeg-4.4n-rpi.patch
Normal file
68893
alarm/ffmpeg-rpi/0004-ffmpeg-4.4n-rpi.patch
Normal file
File diff suppressed because it is too large
Load diff
259
alarm/ffmpeg-rpi/PKGBUILD
Normal file
259
alarm/ffmpeg-rpi/PKGBUILD
Normal file
|
@ -0,0 +1,259 @@
|
|||
# Maintainer: graysky <therealgraysky AT proton DOT me>
|
||||
# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
|
||||
# Contributor: Ionut Biru <ibiru@archlinux.org>
|
||||
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
|
||||
# Contributor: Paul Mattal <paul@archlinux.org>
|
||||
|
||||
pkgbase=ffmpeg-rpi
|
||||
pkgname=($pkgbase $pkgbase-bin)
|
||||
_tag=d61977cbe453869cec28d32b71fe25c2cd965dcf
|
||||
pkgver=4.4.2
|
||||
pkgrel=2
|
||||
arch=(aarch64)
|
||||
url=https://ffmpeg.org/
|
||||
license=(GPL3)
|
||||
makedepends=(
|
||||
amf-headers
|
||||
avisynthplus
|
||||
clang
|
||||
ffnvcodec-headers
|
||||
git
|
||||
ladspa
|
||||
nasm
|
||||
)
|
||||
depends=(
|
||||
alsa-lib
|
||||
bzip2
|
||||
fontconfig
|
||||
fribidi
|
||||
gmp
|
||||
gnutls
|
||||
gsm
|
||||
jack
|
||||
lame
|
||||
libass.so
|
||||
libavc1394
|
||||
libbluray.so
|
||||
libepoxy
|
||||
libdav1d.so
|
||||
libdrm
|
||||
libfreetype.so
|
||||
libiec61883
|
||||
libmodplug
|
||||
libpulse
|
||||
libraw1394
|
||||
librsvg-2.so
|
||||
libsoxr
|
||||
libssh
|
||||
libtheora
|
||||
libva.so
|
||||
libva-drm.so
|
||||
libva-x11.so
|
||||
libvdpau
|
||||
libvidstab.so
|
||||
libvorbisenc.so
|
||||
libvorbis.so
|
||||
libvpx.so
|
||||
libwebp
|
||||
libx11
|
||||
libx264.so
|
||||
libx265.so
|
||||
libxcb
|
||||
libxext
|
||||
libxml2
|
||||
libxv
|
||||
libxvidcore.so
|
||||
libzimg.so
|
||||
opencore-amr
|
||||
openjpeg2
|
||||
opus
|
||||
sdl2
|
||||
speex
|
||||
srt
|
||||
v4l-utils
|
||||
xz
|
||||
zlib
|
||||
)
|
||||
options=(debug)
|
||||
source=(git+https://git.ffmpeg.org/ffmpeg.git#tag=${_tag}
|
||||
0001-vmaf-model-path.patch
|
||||
0002-avcodec-arm-sbcenc-avoid-callee-preserved-vfp-regist.patch
|
||||
0003-fix_flags.patch
|
||||
0004-ffmpeg-4.4n-rpi.patch
|
||||
)
|
||||
sha256sums=('SKIP'
|
||||
'e6fe61e96630a95822cefdc3dc5e087b4fbed1cbdacaba4e14571fced2874dab'
|
||||
'8dff51f84a5f7460f8893f0514812f5d2bd668c3276ef7ab7713c99b71d7bd8d'
|
||||
'06bd27ca2316cec738ff53ec827b2795bd9fbcba9f78d88af49c329f8569db5c'
|
||||
'590d2e90ddbc4130f9a01f11f8c2688a8b138dce1503dc7f5bc2a5b42c6ad42e'
|
||||
'656d1d57e6163801d8345c8937e88842661135197c1ab71dd1b97d013f0065ba')
|
||||
|
||||
pkgver() {
|
||||
cd ffmpeg
|
||||
git describe --tags | sed 's/^n//'
|
||||
}
|
||||
|
||||
prepare() {
|
||||
cd ffmpeg
|
||||
git cherry-pick -n 988f2e9eb063db7c1a678729f58aab6eba59a55b # fix nvenc on older gpus
|
||||
local src
|
||||
for src in "${source[@]}"; do
|
||||
src="${src%%::*}"
|
||||
src="${src##*/}"
|
||||
[[ $src = *.patch ]] || continue
|
||||
echo "Applying patch $src..."
|
||||
patch -Np1 < "../$src"
|
||||
done
|
||||
}
|
||||
|
||||
build() {
|
||||
cd ffmpeg
|
||||
|
||||
# -march= defined in /etc/makepkg.conf will override the value for -mcpu we
|
||||
# uses here so unset them and redefine below
|
||||
unset CFLAGS CXXFLAGS
|
||||
|
||||
if [[ $CARCH = "armv7h" ]]; then
|
||||
# we use -mcpu=cortex-a53 rather than cortex-a72 to maximize RPi 3B and RPi 4B/400 compatibility
|
||||
CFLAGS="-mcpu=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard"
|
||||
elif [[ $CARCH = "aarch64" ]]; then
|
||||
# note that we use a value of cortex-a53 here to allow RPi3 and RPi4 to use the same package
|
||||
# consistent with rationale of previous comment
|
||||
CFLAGS="-mcpu=cortex-a53"
|
||||
fi
|
||||
|
||||
export CFLAGS+=" -O2 -pipe -fstack-protector-strong -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection"
|
||||
export CXXFLAGS+="${CFLAGS} -Wp,-D_GLIBCXX_ASSERTIONS"
|
||||
|
||||
_args=(
|
||||
--prefix=/usr
|
||||
--incdir=/usr/include/ffmpeg-rpi
|
||||
--libdir=/usr/lib/ffmpeg-rpi
|
||||
--disable-debug
|
||||
--disable-static
|
||||
--disable-stripping
|
||||
--enable-amf
|
||||
--enable-avisynth
|
||||
--enable-cuda-llvm
|
||||
--enable-fontconfig
|
||||
--enable-gmp
|
||||
--enable-gnutls
|
||||
--enable-gpl
|
||||
--enable-ladspa
|
||||
--enable-libass
|
||||
--enable-libbluray
|
||||
--enable-libdav1d
|
||||
--enable-libdrm
|
||||
--enable-libfreetype
|
||||
--enable-libfribidi
|
||||
--enable-libgsm
|
||||
--enable-libiec61883
|
||||
--enable-libjack
|
||||
--enable-libmodplug
|
||||
--enable-libmp3lame
|
||||
--enable-libopencore_amrnb
|
||||
--enable-libopencore_amrwb
|
||||
--enable-libopenjpeg
|
||||
--enable-libopus
|
||||
--enable-libpulse
|
||||
--enable-librsvg
|
||||
--enable-libsoxr
|
||||
--enable-libspeex
|
||||
--enable-libsrt
|
||||
--enable-libssh
|
||||
--enable-libtheora
|
||||
--enable-libv4l2
|
||||
--enable-libvidstab
|
||||
--enable-libvorbis
|
||||
--enable-libvpx
|
||||
--enable-libwebp
|
||||
--enable-libx264
|
||||
--enable-libx265
|
||||
--enable-libxcb
|
||||
--enable-libxml2
|
||||
--enable-libxvid
|
||||
--enable-libzimg
|
||||
--enable-libxvid
|
||||
--enable-libzimg
|
||||
--enable-shared
|
||||
--enable-version3
|
||||
--host-cflags="-fPIC"
|
||||
)
|
||||
|
||||
# for hw decoding
|
||||
_args+=(
|
||||
--disable-mmal
|
||||
--enable-neon
|
||||
--enable-v4l2-request
|
||||
--enable-libudev
|
||||
--enable-epoxy
|
||||
--enable-sand
|
||||
)
|
||||
|
||||
./configure "${_args[@]}"
|
||||
make
|
||||
make tools/qt-faststart
|
||||
make doc/ffmpeg.1
|
||||
}
|
||||
|
||||
package_ffmpeg-rpi() {
|
||||
pkgdesc='FFmpeg from the release/4.4 branch with hw accel for RPi 3/4/400'
|
||||
optdepends=(
|
||||
'avisynthplus: AviSynthPlus support'
|
||||
'ffmpeg-rpi-bin: binaries and man pages'
|
||||
'ladspa: LADSPA filters'
|
||||
)
|
||||
provides=(
|
||||
libavcodec.so
|
||||
libavdevice.so
|
||||
libavfilter.so
|
||||
libavformat.so
|
||||
libavutil.so
|
||||
libpostproc.so
|
||||
libswresample.so
|
||||
libswscale.so
|
||||
)
|
||||
conflicts=(ffmpeg4.4 ffmpeg-shinobi)
|
||||
|
||||
make DESTDIR="${pkgdir}" -C ffmpeg install
|
||||
|
||||
cd "${pkgdir}"
|
||||
|
||||
# Move libs to /usr/lib, except the .so symlinks
|
||||
local f
|
||||
for f in usr/lib/ffmpeg-rpi/*; do
|
||||
if [[ $f == *.so ]]; then
|
||||
ln -srf -- usr/lib/"$(readlink "$f")" "$f"
|
||||
elif [[ ! -d $f ]]; then
|
||||
mv "$f" usr/lib
|
||||
fi
|
||||
done
|
||||
|
||||
# these go in ffmpeg-rpi-bin
|
||||
rm -r usr/share usr/bin
|
||||
}
|
||||
|
||||
package_ffmpeg-rpi-bin() {
|
||||
pkgdesc='binaries and man pages'
|
||||
depends=(ffmpeg-rpi)
|
||||
conflicts=(ffmpeg4.4 ffmpeg-shinobi ffmpeg)
|
||||
provides=(ffmpeg)
|
||||
|
||||
make DESTDIR="${pkgdir}" -C ffmpeg install install-man
|
||||
|
||||
cd "${pkgdir}"
|
||||
|
||||
# Move libs to /usr/lib, except the .so symlinks
|
||||
local f
|
||||
for f in usr/lib/ffmpeg-rpi/*; do
|
||||
if [[ $f == *.so ]]; then
|
||||
ln -srf -- usr/lib/"$(readlink "$f")" "$f"
|
||||
elif [[ ! -d $f ]]; then
|
||||
mv "$f" usr/lib
|
||||
fi
|
||||
done
|
||||
|
||||
# these are provided by ffmpeg-rpi
|
||||
rm -r usr/include usr/lib
|
||||
}
|
||||
# vim:set sw=2 et:
|
Loading…
Reference in a new issue