Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions srcpkgs/ffmpeg7-devel
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Gyan Doshi <ffmpeg@gyani.pro>
Date: Sat, 22 Feb 2025 10:38:53 +0530
Subject: [PATCH] avcodec/libsvtav1: unbreak build with latest svtav1

SVT-AV1 made a change in their public API in 988e930c but without a
version bump or any other accessible marker, thus breaking ffmpeg build
with current versions of SVT-AV1.

They have finally bumped versions a month later, so check added.
---
libavcodec/libsvtav1.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
index 79b28eb4df54..43fe531fde74 100644
--- a/libavcodec/libsvtav1.c
+++ b/libavcodec/libsvtav1.c
@@ -435,7 +435,11 @@ static av_cold int eb_enc_init(AVCodecContext *avctx)

svt_enc->eos_flag = EOS_NOT_REACHED;

+#if SVT_AV1_CHECK_VERSION(3, 0, 0)
+ svt_ret = svt_av1_enc_init_handle(&svt_enc->svt_handle, &svt_enc->enc_params);
+#else
svt_ret = svt_av1_enc_init_handle(&svt_enc->svt_handle, svt_enc, &svt_enc->enc_params);
+#endif
if (svt_ret != EB_ErrorNone) {
return svt_print_error(avctx, svt_ret, "Error initializing encoder handle");
}
35 changes: 35 additions & 0 deletions srcpkgs/ffmpeg7/patches/fix_build_with_v4l2_1.30.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
diff --git a/configure b/configure
index ffa407d53d..aa73b1c067 100755
--- a/configure
+++ b/configure
@@ -2522,7 +2522,7 @@ HAVE_LIST="
opencl_videotoolbox
perl
pod2man
- posix_ioctl
+ ffmpeg_posix_ioctl
texi2html
xmllint
zlib_gzip
@@ -7181,7 +7181,7 @@ xmllint --version > /dev/null 2>&1 && enable xmllint || disable xmllint
check_headers linux/fb.h
check_headers linux/videodev2.h
test_code cc linux/videodev2.h "struct v4l2_frmsizeenum vfse; vfse.discrete.width = 0;" && enable_sanitized struct_v4l2_frmivalenum_discrete
-test_code cc sys/ioctl.h "int ioctl(int, int, ...)" && enable posix_ioctl
+test_code cc sys/ioctl.h "int ioctl(int, int, ...)" && enable ffmpeg_posix_ioctl

# check V4L2 codecs available in the API
if enabled v4l2_m2m; then
diff --git a/libavdevice/v4l2.c b/libavdevice/v4l2.c
index 0ae6872338..be42aaaf88 100644
--- a/libavdevice/v4l2.c
+++ b/libavdevice/v4l2.c
@@ -111,7 +111,7 @@ struct video_data {
int (*open_f)(const char *file, int oflag, ...);
int (*close_f)(int fd);
int (*dup_f)(int fd);
-#if HAVE_POSIX_IOCTL
+#if HAVE_FFMPEG_POSIX_IOCTL
int (*ioctl_f)(int fd, int request, ...);
#else
int (*ioctl_f)(int fd, unsigned long int request, ...);
36 changes: 36 additions & 0 deletions srcpkgs/ffmpeg7/patches/qt6-webengine.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
https://aur.archlinux.org/cgit/aur.git/tree/040-ffmpeg-add-av_stream_get_first_dts-for-chromium.patch?h=ffmpeg-intel-full-git
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index cd7b0d941c..b4a6dce885 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1025,6 +1025,10 @@

#define AV_PROGRAM_RUNNING 1

+// Chromium: We use the internal field first_dts vvv
+int64_t av_stream_get_first_dts(const AVStream *st);
+// Chromium: We use the internal field first_dts ^^^
+
/**
* New fields can be added to the end with minor version bumps.
* Removal, reordering and changes to existing fields require a major

diff --git a/libavformat/utils.c b/libavformat/utils.c
index de7580c32d..0ef0fe530e 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -152,6 +152,13 @@
return AV_CODEC_ID_NONE;
}

+// Chromium: We use the internal field first_dts vvv
+int64_t av_stream_get_first_dts(const AVStream *st)
+{
+ return cffstream(st)->first_dts;
+}
+// Chromium: We use the internal field first_dts ^^^
+
enum AVCodecID ff_get_pcm_codec_id(int bps, int flt, int be, int sflags)
{
if (bps <= 0 || bps > 64)

199 changes: 199 additions & 0 deletions srcpkgs/ffmpeg7/template
Original file line number Diff line number Diff line change
@@ -0,0 +1,199 @@
# Template file for 'ffmpeg7'
pkgname=ffmpeg7
version=7.1
revision=1
hostmakedepends="git automake autoconf pkg-config"
makedepends="zlib-devel bzip2-devel freetype-devel alsa-lib-devel libXfixes-devel
libXext-devel libXvMC-devel libxcb-devel lame-devel libtheora-devel
libvorbis-devel x264-devel xvidcore-devel jack-devel SDL2-devel
libcdio-paranoia-devel librtmp-devel libmodplug-devel gnutls-devel
speex-devel celt-devel harfbuzz-devel libass-devel opus-devel ocl-icd-devel
libbs2b-devel libvidstab-devel vmaf-devel libbluray-devel pulseaudio-devel
x265-devel v4l-utils-devel libvpx-devel libaom-devel libdav1d-devel
libwebp-devel libdrm-devel srt-devel librist-devel vulkan-loader-devel
zimg-devel libmysofa-devel libsvt-av1-devel $(vopt_if vaapi libva-devel)
$(vopt_if vdpau libvdpau-devel) $(vopt_if fdk_aac fdk-aac-devel)
$(vopt_if onevpl oneVPL-devel) $(vopt_if nvcodec nv-codec-headers)"

maintainer="Komeil Parseh <komeilparseh@disroot.org>"
short_desc="Decoding, encoding and streaming software"
license="GPL-3.0-or-later"
homepage="https://www.ffmpeg.org"
changelog="https://raw.githubusercontent.com/FFmpeg/FFmpeg/master/Changelog"
distfiles="https://ffmpeg.org/releases/ffmpeg-${version}.tar.xz"
checksum="40973d44970dbc83ef302b0609f2e74982be2d85916dd2ee7472d30678a7abe6"

build_options="vaapi vdpau fdk_aac nvcodec onevpl"

case "$XBPS_TARGET_MACHINE" in
i686*)
build_options_default+=" vaapi vdpau nvcodec"
hostmakedepends+=" nasm"
;;
x86_64*)
hostmakedepends+=" nasm"
build_options_default+=" vaapi vdpau nvcodec onevpl"
;;
ppc64*) build_options_default+=" vaapi vdpau";;
mips*) CFLAGS="-mnan=legacy";;
esac

do_configure() {
# Fix gcc on x86_64-musl only
if [ "$XBPS_TARGET_MACHINE" = "x86_64-musl" ]; then
vsed -i configure -e "s;_cflags_speed='-O3';_cflags_speed='-O2';"
fi

if [ "$CROSS_BUILD" ]; then
case "$XBPS_TARGET_MACHINE" in
arm*) _arch="arm";;
aarch64*) _arch="aarch64";;
mips*) _arch="mips";;
ppc64*) _arch="ppc64";;
ppc*) _arch="ppc";;
*) _arch="${XBPS_TARGET_MACHINE%%-musl}";;
esac

_args+=" --enable-cross-compile
--sysroot=$XBPS_CROSS_BASE
--cross-prefix=${XBPS_CROSS_TRIPLET}-
--target-os=linux --arch=${_arch}"
fi

case "$XBPS_TARGET_MACHINE" in
ppc|ppc-musl) _args+=" --disable-altivec";;
esac

./configure --prefix=/usr --disable-debug --enable-gpl --enable-gnutls \
--disable-stripping \
--enable-libcdio --enable-version3 --enable-runtime-cpudetect \
--enable-libmp3lame --enable-libvorbis --enable-libxvid \
--enable-libx264 --enable-libvpx --enable-libtheora \
--enable-shared --enable-static --enable-libxcb \
--enable-libpulse --enable-libfreetype --enable-libmodplug \
--enable-libspeex --enable-libcelt --enable-libass \
--enable-libopus --enable-librtmp --enable-libjack \
--disable-libopencore_amrnb --disable-libopencore_amrwb \
--disable-libopenjpeg --enable-libbluray \
--enable-postproc --enable-opencl --enable-libvmaf ${_args} \
--enable-libx265 --enable-libv4l2 --enable-libaom \
--enable-libbs2b --enable-libvidstab --enable-libdav1d \
--enable-libsrt --enable-librist --enable-libwebp \
--enable-vulkan --enable-libdrm --enable-libsvtav1 \
--enable-libfreetype --enable-libharfbuzz --enable-libfontconfig \
$(vopt_if fdk_aac '--enable-nonfree --enable-libfdk-aac') \
$(vopt_enable vaapi) $(vopt_enable vdpau) \
$(vopt_enable zimg libzimg) \
$(vopt_enable sofa libmysofa) \
$(vopt_enable onevpl libvpl) \
$(vopt_enable nvcodec nvenc) \
$(vopt_enable nvcodec nvdec)

}

do_build() {
make ${makejobs}
make doc/ff{mpeg,play}.1
}

do_install() {
make DESTDIR=${DESTDIR} install install-man
}

libavcodec7_package() {
short_desc="FFmpeg codec library"
pkg_install() {
vmove "usr/lib/libavcodec.so.*"
}
}

libavdevice7_package() {
short_desc="FFmpeg device handling library"
pkg_install() {
vmove "usr/lib/libavdevice.so.*"
}
}

libavresample7_package() {
short_desc="Package deprecated, removal needed"
build_style=meta
}

libavformat7_package() {
short_desc="FFmpeg file format library"
pkg_install() {
vmove "usr/lib/libavformat.so.*"
}
}

libavutil7_package() {
short_desc="FFmpeg utility library"
pkg_install() {
vmove "usr/lib/libavutil.so.*"
}
}

libavfilter7_package() {
short_desc="FFmpeg audio/video filter library"
pkg_install() {
vmove "usr/lib/libavfilter.so.*"
}
}

libpostproc7_package() {
short_desc="FFmpeg video postprocessing library"
pkg_install() {
vmove "usr/lib/libpostproc.so.*"
}
}

libswscale7_package() {
short_desc="FFmpeg video scaling library"
pkg_install() {
vmove "usr/lib/libswscale.so.*"
}
}

libswresample7_package() {
short_desc="FFmpeg video resampling library"
pkg_install() {
vmove "usr/lib/libswresample.so.*"
}
}

ffmpeg7-devel_package() {
depends="
libavcodec7>=${version}_${revision}
libavdevice7>=${version}_${revision}
libavformat7>=${version}_${revision}
libavutil7>=${version}_${revision}
libavfilter7>=${version}_${revision}
libpostproc7>=${version}_${revision}
libswscale7>=${version}_${revision}
libswresample7>=${version}_${revision}"
short_desc+=" - development files"
conflicts="ffmpeg*-devel"
replaces="ffmpeg*-devel>=0"
case "$XBPS_TARGET_MACHINE" in
i686*)
nostrip_files="/usr/lib/libavfilter.a";;
esac
pkg_install() {
vmove usr/include
vmove usr/lib/pkgconfig
vmove "usr/lib/*.a"
vmove "usr/lib/*.so"
vmove usr/share/ffmpeg/examples
vmove usr/share/man/man3
}
}

ffplay7_package() {
short_desc="Simple video player using FFmpeg and SDL2"
conflicts="ffplay*"
replaces="ffplay*>0"
pkg_install() {
vmove usr/bin/ffplay
vmove "usr/share/man/man1/ffplay*"
}
}
1 change: 1 addition & 0 deletions srcpkgs/ffplay7
1 change: 1 addition & 0 deletions srcpkgs/libavcodec7
1 change: 1 addition & 0 deletions srcpkgs/libavdevice7
1 change: 1 addition & 0 deletions srcpkgs/libavfilter7
1 change: 1 addition & 0 deletions srcpkgs/libavformat7
1 change: 1 addition & 0 deletions srcpkgs/libavresample7
1 change: 1 addition & 0 deletions srcpkgs/libavutil7
1 change: 1 addition & 0 deletions srcpkgs/libpostproc7
1 change: 1 addition & 0 deletions srcpkgs/libswresample7
1 change: 1 addition & 0 deletions srcpkgs/libswscale7