From 81a5e1f86a4b3bf347ff695ee0c77bac3c88cc8d Mon Sep 17 00:00:00 2001 From: zlice Date: Sat, 20 Jul 2024 17:40:38 -0400 Subject: [PATCH] New package: ffmpeg6-6.0.1 closes #51132 [via git-merge-pr] --- common/shlibs | 8 + srcpkgs/ffmpeg6-devel | 1 + srcpkgs/ffmpeg6/patches/qsv.patch | 15 ++ srcpkgs/ffmpeg6/patches/qt6-webengine.patch | 36 ++++ srcpkgs/ffmpeg6/template | 219 ++++++++++++++++++++ srcpkgs/ffplay6 | 1 + srcpkgs/libavcodec6 | 1 + srcpkgs/libavdevice6 | 1 + srcpkgs/libavfilter6 | 1 + srcpkgs/libavformat6 | 1 + srcpkgs/libavresample6 | 1 + srcpkgs/libavutil6 | 1 + srcpkgs/libpostproc6 | 1 + srcpkgs/libswresample6 | 1 + srcpkgs/libswscale6 | 1 + 15 files changed, 289 insertions(+) create mode 120000 srcpkgs/ffmpeg6-devel create mode 100644 srcpkgs/ffmpeg6/patches/qsv.patch create mode 100644 srcpkgs/ffmpeg6/patches/qt6-webengine.patch create mode 100644 srcpkgs/ffmpeg6/template create mode 120000 srcpkgs/ffplay6 create mode 120000 srcpkgs/libavcodec6 create mode 120000 srcpkgs/libavdevice6 create mode 120000 srcpkgs/libavfilter6 create mode 120000 srcpkgs/libavformat6 create mode 120000 srcpkgs/libavresample6 create mode 120000 srcpkgs/libavutil6 create mode 120000 srcpkgs/libpostproc6 create mode 120000 srcpkgs/libswresample6 create mode 120000 srcpkgs/libswscale6 diff --git a/common/shlibs b/common/shlibs index 3e00d163604..3a49ea5d6df 100644 --- a/common/shlibs +++ b/common/shlibs @@ -392,6 +392,14 @@ libid3tag.so.0 libid3tag-0.15.1b_1 libgif.so.7 giflib-5.1.0_1 libImlib2.so.1 imlib2-1.4.2_1 libmp3lame.so.0 lame-3.98.2_1 +libavdevice.so.60 libavdevice6-6.0_1 +libavformat.so.60 libavformat6-6.0_1 +libswscale.so.7 libswscale6-6.0_1 +libswresample.so.4 libswresample6-6.0_1 +libpostproc.so.57 libpostproc6-6.0_1 +libavcodec.so.60 libavcodec6-6.0_1 +libavutil.so.58 libavutil6-6.0_1 +libavfilter.so.9 libavfilter6-6.0_1 libavdevice.so.58 libavdevice-4.0_1 libavformat.so.58 libavformat-4.0_1 libswscale.so.5 libswscale-4.0_1 diff --git a/srcpkgs/ffmpeg6-devel b/srcpkgs/ffmpeg6-devel new file mode 120000 index 00000000000..ccdfc6aa0e8 --- /dev/null +++ b/srcpkgs/ffmpeg6-devel @@ -0,0 +1 @@ +ffmpeg6 \ No newline at end of file diff --git a/srcpkgs/ffmpeg6/patches/qsv.patch b/srcpkgs/ffmpeg6/patches/qsv.patch new file mode 100644 index 00000000000..94ef68f5683 --- /dev/null +++ b/srcpkgs/ffmpeg6/patches/qsv.patch @@ -0,0 +1,15 @@ +diff --git a/libavcodec/qsvdec.c b/libavcodec/qsvdec.c +index da700f25e9..b501964089 100644 +--- a/libavcodec/qsvdec.c ++++ b/libavcodec/qsvdec.c +@@ -1076,6 +1076,9 @@ static int qsv_decode_frame(AVCodecContext *avctx, AVFrame *frame, + + ret = qsv_process_data(avctx, &s->qsv, frame, got_frame, &s->buffer_pkt); + if (ret < 0){ ++ if (ret == AVERROR(EAGAIN)) ++ ret = 0; ++ + /* Drop buffer_pkt when failed to decode the packet. Otherwise, + the decoder will keep decoding the failure packet. */ + av_packet_unref(&s->buffer_pkt); + diff --git a/srcpkgs/ffmpeg6/patches/qt6-webengine.patch b/srcpkgs/ffmpeg6/patches/qt6-webengine.patch new file mode 100644 index 00000000000..c0b397ba849 --- /dev/null +++ b/srcpkgs/ffmpeg6/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/ffmpeg6/template b/srcpkgs/ffmpeg6/template new file mode 100644 index 00000000000..819f7715bca --- /dev/null +++ b/srcpkgs/ffmpeg6/template @@ -0,0 +1,219 @@ +# Template file for 'ffmpeg6' +# audacity also needs to be bumped when a new ffmpeg version bumps libavformat's soname! +pkgname=ffmpeg6 +version=6.0.1 +revision=1 +hostmakedepends="pkg-config perl" +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 + $(vopt_if svtav1 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)" +depends="ffplay6>=${version}_${revision}" +short_desc="Decoding, encoding and streaming software" +maintainer="Orphaned " +license="GPL-3.0-or-later" +homepage="https://www.ffmpeg.org" +changelog="https://raw.githubusercontent.com/FFmpeg/FFmpeg/master/Changelog" +distfiles="https://www.ffmpeg.org/releases/ffmpeg-${version}.tar.xz" +checksum=9b16b8731d78e596b4be0d720428ca42df642bb2d78342881ff7f5bc29fc9623 + +build_options="vaapi vdpau fdk_aac nvcodec svtav1 onevpl" +desc_option_sofa="Enable support for AES SOFA" + +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 + +if [ "$XBPS_TARGET_WORDSIZE" != "32" ]; then + build_options_default+=" svtav1" +fi + +_apply_patch() { + local args="$1" pname="$(basename $2)" + + if [ ! -f ".${pname}_done" ]; then + patch -N $args -i $2 + touch .${pname}_done + fi +} + +post_patch() { + case "$XBPS_TARGET_MACHINE" in + ppc64le*) ;; + ppc*) _apply_patch -p1 ${FILESDIR}/altivec.patch ;; + 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 \ + $(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 svtav1 libsvtav1) \ + $(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 +} + +libavcodec6_package() { + short_desc="FFmpeg codec library" + pkg_install() { + vmove "usr/lib/libavcodec.so.*" + } +} + +libavdevice6_package() { + short_desc="FFmpeg device handling library" + pkg_install() { + vmove "usr/lib/libavdevice.so.*" + } +} + +libavresample6_package() { + short_desc="Package deprecated, removal needed" + build_style=meta +} + +libavformat6_package() { + short_desc="FFmpeg file format library" + pkg_install() { + vmove "usr/lib/libavformat.so.*" + } +} + +libavutil6_package() { + short_desc="FFmpeg utility library" + pkg_install() { + vmove "usr/lib/libavutil.so.*" + } +} + +libavfilter6_package() { + short_desc="FFmpeg audio/video filter library" + pkg_install() { + vmove "usr/lib/libavfilter.so.*" + } +} + +libpostproc6_package() { + short_desc="FFmpeg video postprocessing library" + pkg_install() { + vmove "usr/lib/libpostproc.so.*" + } +} + +libswscale6_package() { + short_desc="FFmpeg video scaling library" + pkg_install() { + vmove "usr/lib/libswscale.so.*" + } +} + +libswresample6_package() { + short_desc="FFmpeg video resampling library" + pkg_install() { + vmove "usr/lib/libswresample.so.*" + } +} + +ffmpeg6-devel_package() { + depends=" + libavcodec6>=${version}_${revision} + libavdevice6>=${version}_${revision} + libavformat6>=${version}_${revision} + libavutil6>=${version}_${revision} + libavfilter6>=${version}_${revision} + libpostproc6>=${version}_${revision} + libswscale6>=${version}_${revision} + libswresample6>=${version}_${revision}" + short_desc+=" - development files" + conflicts="ffmpeg-devel" + replaces="ffmpeg-devel>=0" + if [ "$XBPS_TARGET_MACHINE" = "i686" ]; then + # /usr/bin/strip: error: the input file '/destdir//ffmpeg-devel-4.4.4/usr/lib/libavfilter.a(vf_atadenoise.o)' has no sections + nostrip_files="/usr/lib/libavfilter.a" + fi + 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 + } +} + +ffplay6_package() { + short_desc="Simple video player using FFmpeg and SDL2" + pkg_install() { + vmove usr/bin/ffplay + vmove "usr/share/man/man1/ffplay*" + } +} diff --git a/srcpkgs/ffplay6 b/srcpkgs/ffplay6 new file mode 120000 index 00000000000..ccdfc6aa0e8 --- /dev/null +++ b/srcpkgs/ffplay6 @@ -0,0 +1 @@ +ffmpeg6 \ No newline at end of file diff --git a/srcpkgs/libavcodec6 b/srcpkgs/libavcodec6 new file mode 120000 index 00000000000..ccdfc6aa0e8 --- /dev/null +++ b/srcpkgs/libavcodec6 @@ -0,0 +1 @@ +ffmpeg6 \ No newline at end of file diff --git a/srcpkgs/libavdevice6 b/srcpkgs/libavdevice6 new file mode 120000 index 00000000000..ccdfc6aa0e8 --- /dev/null +++ b/srcpkgs/libavdevice6 @@ -0,0 +1 @@ +ffmpeg6 \ No newline at end of file diff --git a/srcpkgs/libavfilter6 b/srcpkgs/libavfilter6 new file mode 120000 index 00000000000..ccdfc6aa0e8 --- /dev/null +++ b/srcpkgs/libavfilter6 @@ -0,0 +1 @@ +ffmpeg6 \ No newline at end of file diff --git a/srcpkgs/libavformat6 b/srcpkgs/libavformat6 new file mode 120000 index 00000000000..ccdfc6aa0e8 --- /dev/null +++ b/srcpkgs/libavformat6 @@ -0,0 +1 @@ +ffmpeg6 \ No newline at end of file diff --git a/srcpkgs/libavresample6 b/srcpkgs/libavresample6 new file mode 120000 index 00000000000..ccdfc6aa0e8 --- /dev/null +++ b/srcpkgs/libavresample6 @@ -0,0 +1 @@ +ffmpeg6 \ No newline at end of file diff --git a/srcpkgs/libavutil6 b/srcpkgs/libavutil6 new file mode 120000 index 00000000000..ccdfc6aa0e8 --- /dev/null +++ b/srcpkgs/libavutil6 @@ -0,0 +1 @@ +ffmpeg6 \ No newline at end of file diff --git a/srcpkgs/libpostproc6 b/srcpkgs/libpostproc6 new file mode 120000 index 00000000000..ccdfc6aa0e8 --- /dev/null +++ b/srcpkgs/libpostproc6 @@ -0,0 +1 @@ +ffmpeg6 \ No newline at end of file diff --git a/srcpkgs/libswresample6 b/srcpkgs/libswresample6 new file mode 120000 index 00000000000..ccdfc6aa0e8 --- /dev/null +++ b/srcpkgs/libswresample6 @@ -0,0 +1 @@ +ffmpeg6 \ No newline at end of file diff --git a/srcpkgs/libswscale6 b/srcpkgs/libswscale6 new file mode 120000 index 00000000000..ccdfc6aa0e8 --- /dev/null +++ b/srcpkgs/libswscale6 @@ -0,0 +1 @@ +ffmpeg6 \ No newline at end of file