diff --git a/srcpkgs/ffmpeg7-devel b/srcpkgs/ffmpeg7-devel new file mode 120000 index 00000000000000..706d9901278548 --- /dev/null +++ b/srcpkgs/ffmpeg7-devel @@ -0,0 +1 @@ +ffmpeg7/ \ No newline at end of file diff --git a/srcpkgs/ffmpeg7/patches/avcodec-libsvtav1-unbreak-build-with-latest-svtav1.patch b/srcpkgs/ffmpeg7/patches/avcodec-libsvtav1-unbreak-build-with-latest-svtav1.patch new file mode 100644 index 00000000000000..5eadccfa9aeea7 --- /dev/null +++ b/srcpkgs/ffmpeg7/patches/avcodec-libsvtav1-unbreak-build-with-latest-svtav1.patch @@ -0,0 +1,30 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Gyan Doshi +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"); + } diff --git a/srcpkgs/ffmpeg7/patches/fix_build_with_v4l2_1.30.patch b/srcpkgs/ffmpeg7/patches/fix_build_with_v4l2_1.30.patch new file mode 100644 index 00000000000000..9e81afdcaffd75 --- /dev/null +++ b/srcpkgs/ffmpeg7/patches/fix_build_with_v4l2_1.30.patch @@ -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, ...); diff --git a/srcpkgs/ffmpeg7/patches/qt6-webengine.patch b/srcpkgs/ffmpeg7/patches/qt6-webengine.patch new file mode 100644 index 00000000000000..c0b397ba849438 --- /dev/null +++ b/srcpkgs/ffmpeg7/patches/qt6-webengine.patch @@ -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) + diff --git a/srcpkgs/ffmpeg7/template b/srcpkgs/ffmpeg7/template new file mode 100644 index 00000000000000..8e0fa216606e3a --- /dev/null +++ b/srcpkgs/ffmpeg7/template @@ -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 " +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*" + } +} diff --git a/srcpkgs/ffplay7 b/srcpkgs/ffplay7 new file mode 120000 index 00000000000000..706d9901278548 --- /dev/null +++ b/srcpkgs/ffplay7 @@ -0,0 +1 @@ +ffmpeg7/ \ No newline at end of file diff --git a/srcpkgs/libavcodec7 b/srcpkgs/libavcodec7 new file mode 120000 index 00000000000000..706d9901278548 --- /dev/null +++ b/srcpkgs/libavcodec7 @@ -0,0 +1 @@ +ffmpeg7/ \ No newline at end of file diff --git a/srcpkgs/libavdevice7 b/srcpkgs/libavdevice7 new file mode 120000 index 00000000000000..706d9901278548 --- /dev/null +++ b/srcpkgs/libavdevice7 @@ -0,0 +1 @@ +ffmpeg7/ \ No newline at end of file diff --git a/srcpkgs/libavfilter7 b/srcpkgs/libavfilter7 new file mode 120000 index 00000000000000..706d9901278548 --- /dev/null +++ b/srcpkgs/libavfilter7 @@ -0,0 +1 @@ +ffmpeg7/ \ No newline at end of file diff --git a/srcpkgs/libavformat7 b/srcpkgs/libavformat7 new file mode 120000 index 00000000000000..706d9901278548 --- /dev/null +++ b/srcpkgs/libavformat7 @@ -0,0 +1 @@ +ffmpeg7/ \ No newline at end of file diff --git a/srcpkgs/libavresample7 b/srcpkgs/libavresample7 new file mode 120000 index 00000000000000..706d9901278548 --- /dev/null +++ b/srcpkgs/libavresample7 @@ -0,0 +1 @@ +ffmpeg7/ \ No newline at end of file diff --git a/srcpkgs/libavutil7 b/srcpkgs/libavutil7 new file mode 120000 index 00000000000000..706d9901278548 --- /dev/null +++ b/srcpkgs/libavutil7 @@ -0,0 +1 @@ +ffmpeg7/ \ No newline at end of file diff --git a/srcpkgs/libpostproc7 b/srcpkgs/libpostproc7 new file mode 120000 index 00000000000000..706d9901278548 --- /dev/null +++ b/srcpkgs/libpostproc7 @@ -0,0 +1 @@ +ffmpeg7/ \ No newline at end of file diff --git a/srcpkgs/libswresample7 b/srcpkgs/libswresample7 new file mode 120000 index 00000000000000..706d9901278548 --- /dev/null +++ b/srcpkgs/libswresample7 @@ -0,0 +1 @@ +ffmpeg7/ \ No newline at end of file diff --git a/srcpkgs/libswscale7 b/srcpkgs/libswscale7 new file mode 120000 index 00000000000000..706d9901278548 --- /dev/null +++ b/srcpkgs/libswscale7 @@ -0,0 +1 @@ +ffmpeg7/ \ No newline at end of file