* [PR PATCH] Ffmpeg6pkg
@ 2024-07-06 20:05 zlice
2024-07-20 21:44 ` [PR PATCH] [Updated] New package: ffmpeg6-6.0.1 classabbyamp
` (7 more replies)
0 siblings, 8 replies; 9+ messages in thread
From: zlice @ 2024-07-06 20:05 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 1424 bytes --]
There is a new pull request by zlice against master on the void-packages repository
https://github.com/zlice/void-packages ffmpeg6pkg
https://github.com/void-linux/void-packages/pull/51132
Ffmpeg6pkg
#### Testing the changes
- I tested the changes in this PR: **YES**
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**
#### Local build testing
- I built this PR locally for my native architecture, **x86_64**, **i686**
- I built this PR locally for these architectures (if supported. mark crossbuilds):
- **aarch64**
- **x86_64-musl**
#### Comments
Makes `ffmpeg` a transitional meta package that is still version 4 but depends on `ffmpeg6` which has binaries and libraries. Should allow for a slow transition to move things over to 6 and avoid breaking current installs.
#### pre-reqs
- opencv https://github.com/void-linux/void-packages/pull/51124
- qtav remove https://github.com/void-linux/void-packages/pull/51123
- flowblade https://github.com/void-linux/void-packages/pull/50385
- idjc https://github.com/void-linux/void-packages/pull/48944

A patch file from https://github.com/void-linux/void-packages/pull/51132.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-ffmpeg6pkg-51132.patch --]
[-- Type: text/x-diff, Size: 19535 bytes --]
From 528cd0253dc3c29b5c8b46807468aefc57c849a5 Mon Sep 17 00:00:00 2001
From: zlice <zlice555@gmail.com>
Date: Sat, 6 Jul 2024 15:52:45 -0400
Subject: [PATCH 1/3] nv-codec-headers: update to 12.0.16.1
---
| 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--git a/srcpkgs/nv-codec-headers/template b/srcpkgs/nv-codec-headers/template
index 8f04477e378e55..6798f9cbd6bb2f 100644
--- a/srcpkgs/nv-codec-headers/template
+++ b/srcpkgs/nv-codec-headers/template
@@ -1,15 +1,15 @@
# Template file for 'nv-codec-headers'
pkgname=nv-codec-headers
reverts="12.2.72.0_1"
-version=11.1.5.1
-revision=2
+version=12.0.16.1
+revision=1
build_style=gnu-makefile
short_desc="FFmpeg version of headers required to interface with Nvidias codec APIs"
maintainer="Orphaned <orphan@voidlinux.org>"
license="MIT"
homepage="http://git.videolan.org/?p=ffmpeg/nv-codec-headers.git"
distfiles="https://github.com/FFmpeg/nv-codec-headers/archive/n${version}.tar.gz"
-checksum=d095fbd56aa93772471a323be0ebe65504a0f43f06c76a30b6d25da77b06ae9c
+checksum=37e31c7ed0c9bf2da74646a3ec426c38a6d29e60b1fb7bff3e03a99b9412e050
post_install() {
sed -n '4,25p' include/ffnvcodec/nvEncodeAPI.h > LICENSE
From 2c3f2b59a7f95548a2e936ee6d293fee024f0d8e Mon Sep 17 00:00:00 2001
From: zlice <zlice555@gmail.com>
Date: Fri, 5 Jul 2024 19:26:21 -0400
Subject: [PATCH 2/3] New package: ffmpeg6-6.0.1
---
common/shlibs | 8 +
srcpkgs/ffmpeg/template | 17 +-
srcpkgs/ffmpeg6-devel | 1 +
srcpkgs/ffmpeg6/patches/qsv.patch | 15 ++
srcpkgs/ffmpeg6/patches/qt6-webengine.patch | 36 +++
srcpkgs/ffmpeg6/template | 235 ++++++++++++++++++++
srcpkgs/ffplay | 2 +-
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 +
16 files changed, 311 insertions(+), 12 deletions(-)
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/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 d5d256bededd64..ad18f9f6e2bc4c 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/ffmpeg/template b/srcpkgs/ffmpeg/template
index 93618cd977537e..5b1e9e9c13cd8e 100644
--- a/srcpkgs/ffmpeg/template
+++ b/srcpkgs/ffmpeg/template
@@ -2,8 +2,8 @@
# audacity also needs to be bumped when a new ffmpeg version bumps libavformat's soname!
pkgname=ffmpeg
version=4.4.4
-revision=7
-short_desc="Decoding, encoding and streaming software"
+revision=8
+short_desc="Decoding, encoding and streaming software - ffmpeg4 libraries only"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-3.0-or-later"
homepage="https://www.ffmpeg.org"
@@ -29,7 +29,8 @@ makedepends="zlib-devel bzip2-devel freetype-devel alsa-lib-devel libXfixes-deve
$(vopt_if srt srt-devel) $(vopt_if rist librist-devel)
$(vopt_if vulkan 'vulkan-loader-devel')
$(vopt_if nvenc nv-codec-headers) $(vopt_if nvdec nv-codec-headers)"
-depends="ffplay>=${version}_${revision}"
+# ffmpeg6 provides ffmpeg, ffprobe, ffplay, etc
+depends="ffmpeg6"
build_options="x265 v4l2 vaapi vdpau vpx fdk_aac aom nvenc sndio pulseaudio
dav1d zimg webp sofa vulkan drm svtav1 srt rist nvdec"
@@ -137,6 +138,7 @@ do_build() {
do_install() {
make DESTDIR=${DESTDIR} install install-man
+ rm -rf ${DESTDIR}/usr/bin
}
libavcodec_package() {
@@ -214,6 +216,7 @@ ffmpeg-devel_package() {
libswresample>=${version}_${revision}
libavresample>=${version}_${revision}"
short_desc+=" - development files"
+ conflicts="ffmpeg6-devel"
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
@@ -229,11 +232,3 @@ ffmpeg-devel_package() {
vmove usr/share/man/man3
}
}
-
-ffplay_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/ffmpeg6-devel b/srcpkgs/ffmpeg6-devel
new file mode 120000
index 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..94ef68f5683f3a
--- /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 00000000000000..c0b397ba849438
--- /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 00000000000000..6af2ac03526b51
--- /dev/null
+++ b/srcpkgs/ffmpeg6/template
@@ -0,0 +1,235 @@
+# 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
+short_desc="Decoding, encoding and streaming software"
+maintainer="Orphaned <orphan@voidlinux.org>"
+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
+
+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
+ $(vopt_if pulseaudio pulseaudio-devel)
+ $(vopt_if vaapi libva-devel) $(vopt_if vdpau libvdpau-devel)
+ $(vopt_if x265 x265-devel) $(vopt_if v4l2 v4l-utils-devel)
+ $(vopt_if fdk_aac fdk-aac-devel) $(vopt_if vpx libvpx-devel)
+ $(vopt_if aom libaom-devel) $(vopt_if sndio sndio-devel)
+ $(vopt_if dav1d libdav1d-devel) $(vopt_if zimg zimg-devel)
+ $(vopt_if webp libwebp-devel) $(vopt_if sofa libmysofa-devel)
+ $(vopt_if drm libdrm-devel) $(vopt_if svtav1 libsvt-av1-devel)
+ $(vopt_if srt srt-devel) $(vopt_if rist librist-devel)
+ $(vopt_if vulkan 'vulkan-loader-devel')
+ $(vopt_if onevpl 'oneVPL oneVPL-devel')
+ $(vopt_if nvenc nv-codec-headers) $(vopt_if nvdec nv-codec-headers)"
+depends="ffplay>=${version}_${revision}"
+
+build_options="x265 v4l2 vaapi vdpau vpx fdk_aac aom nvenc sndio pulseaudio
+ dav1d zimg webp sofa vulkan drm svtav1 srt rist nvdec onevpl"
+build_options_default="x265 v4l2 vpx aom sndio pulseaudio dav1d webp vulkan drm srt rist"
+desc_option_srt="Enable support for SRT (Secure, Reliable, Transport)"
+desc_option_rist="Enable support for RIST (Reliable Internet Stream Transport)"
+desc_option_sofa="Enable support for AES SOFA"
+desc_option_webp="Enable support for WebP"
+
+case "$XBPS_TARGET_MACHINE" in
+ i686*)
+ build_options_default+=" vaapi vdpau nvenc nvdec"
+ hostmakedepends+=" nasm"
+ ;;
+ x86_64*)
+ hostmakedepends+=" nasm"
+ build_options_default+=" vaapi vdpau nvenc nvdec 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 $(vopt_enable vpx libvpx) --enable-libtheora \
+ --enable-shared --enable-static --enable-libxcb \
+ $(vopt_enable pulseaudio libpulse) --enable-libfreetype --enable-libmodplug \
+ --enable-libspeex --enable-libcelt --enable-libass \
+ --enable-libopus --enable-librtmp --enable-libjack \
+ $(vopt_if fdk_aac '--enable-nonfree --enable-libfdk-aac') \
+ --disable-libopencore_amrnb --disable-libopencore_amrwb \
+ --disable-libopenjpeg --enable-libbluray \
+ --enable-postproc --enable-opencl --enable-libvmaf ${_args} \
+ $(vopt_enable x265 libx265) \
+ $(vopt_enable v4l2 libv4l2) \
+ $(vopt_enable aom libaom) $(vopt_enable vaapi) $(vopt_enable vdpau) \
+ --enable-libbs2b --enable-libvidstab \
+ $(vopt_enable dav1d libdav1d) \
+ $(vopt_enable zimg libzimg) \
+ $(vopt_enable webp libwebp) \
+ $(vopt_enable sofa libmysofa) \
+ $(vopt_enable vulkan) \
+ $(vopt_enable onevpl libvpl) \
+ $(vopt_enable drm libdrm) \
+ $(vopt_enable svtav1 libsvtav1) \
+ $(vopt_enable srt libsrt) \
+ $(vopt_enable rist librist) \
+ $(vopt_enable nvenc nvenc) \
+ $(vopt_enable nvdec 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"
+ 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
+ }
+}
+
+ffplay_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/ffplay b/srcpkgs/ffplay
index a9f1eea092d5e9..ccdfc6aa0e84ea 120000
--- a/srcpkgs/ffplay
+++ b/srcpkgs/ffplay
@@ -1 +1 @@
-ffmpeg
\ No newline at end of file
+ffmpeg6
\ No newline at end of file
diff --git a/srcpkgs/libavcodec6 b/srcpkgs/libavcodec6
new file mode 120000
index 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /dev/null
+++ b/srcpkgs/libswscale6
@@ -0,0 +1 @@
+ffmpeg6
\ No newline at end of file
From 36fa0915c8f51c86d05d04e37d3ef40d77c20dc5 Mon Sep 17 00:00:00 2001
From: zlice <zlice555@gmail.com>
Date: Sat, 6 Jul 2024 15:38:10 -0400
Subject: [PATCH 3/3] ffmpeg4: convert to meta build for ffmpeg6
---
srcpkgs/ffmpeg/template | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/srcpkgs/ffmpeg/template b/srcpkgs/ffmpeg/template
index 5b1e9e9c13cd8e..222e954960a3a5 100644
--- a/srcpkgs/ffmpeg/template
+++ b/srcpkgs/ffmpeg/template
@@ -3,6 +3,7 @@
pkgname=ffmpeg
version=4.4.4
revision=8
+build_style=meta
short_desc="Decoding, encoding and streaming software - ffmpeg4 libraries only"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-3.0-or-later"
@@ -35,6 +36,7 @@ depends="ffmpeg6"
build_options="x265 v4l2 vaapi vdpau vpx fdk_aac aom nvenc sndio pulseaudio
dav1d zimg webp sofa vulkan drm svtav1 srt rist nvdec"
build_options_default="x265 v4l2 vpx aom sndio pulseaudio dav1d webp vulkan drm srt rist"
+
desc_option_srt="Enable support for SRT (Secure, Reliable, Transport)"
desc_option_rist="Enable support for RIST (Reliable Internet Stream Transport)"
desc_option_sofa="Enable support for AES SOFA"
@@ -133,12 +135,16 @@ do_configure() {
do_build() {
make ${makejobs}
- make doc/ff{mpeg,play}.1
}
+# transitional dummy package for ffmpeg6
+# binaries conflict with 6
do_install() {
- make DESTDIR=${DESTDIR} install install-man
+ make DESTDIR=${DESTDIR} install
rm -rf ${DESTDIR}/usr/bin
+ rm -rf ${DESTDIR}/usr/share/man/man1
+ rm -rf ${DESTDIR}/usr/share/ffmpeg/ffprobe.xsd
+ rm -rf ${DESTDIR}/usr/share/ffmpeg/libvpx*ffpreset
}
libavcodec_package() {
@@ -217,12 +223,10 @@ ffmpeg-devel_package() {
libavresample>=${version}_${revision}"
short_desc+=" - development files"
conflicts="ffmpeg6-devel"
-
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
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PR PATCH] [Updated] New package: ffmpeg6-6.0.1
2024-07-06 20:05 [PR PATCH] Ffmpeg6pkg zlice
@ 2024-07-20 21:44 ` classabbyamp
2024-07-20 21:44 ` classabbyamp
` (6 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: classabbyamp @ 2024-07-20 21:44 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 1452 bytes --]
There is an updated pull request by classabbyamp against master on the void-packages repository
https://github.com/zlice/void-packages ffmpeg6pkg
https://github.com/void-linux/void-packages/pull/51132
New package: ffmpeg6-6.0.1
#### Testing the changes
- I tested the changes in this PR: **YES**
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**
#### Local build testing
- I built this PR locally for my native architecture, **x86_64**, **i686**
- I built this PR locally for these architectures (if supported. mark crossbuilds):
- **aarch64**
- **x86_64-musl**
#### Comments
Makes `ffmpeg` a transitional meta package that is still version 4 but depends on `ffmpeg6` which has binaries and libraries. Should allow for a slow transition to move things over to 6 and avoid breaking current installs.
#### pre-reqs
- opencv https://github.com/void-linux/void-packages/pull/51124
- qtav remove https://github.com/void-linux/void-packages/pull/51123
- flowblade https://github.com/void-linux/void-packages/pull/50385
- idjc https://github.com/void-linux/void-packages/pull/48944

A patch file from https://github.com/void-linux/void-packages/pull/51132.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-ffmpeg6pkg-51132.patch --]
[-- Type: text/x-diff, Size: 18450 bytes --]
From 351a88ce1daf7ff95b6dbde4a4811b823fab5f6f Mon Sep 17 00:00:00 2001
From: zlice <zlice555@gmail.com>
Date: Sat, 6 Jul 2024 15:52:45 -0400
Subject: [PATCH 1/3] nv-codec-headers: update to 12.0.16.1
---
| 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--git a/srcpkgs/nv-codec-headers/template b/srcpkgs/nv-codec-headers/template
index 8f04477e378e55..6798f9cbd6bb2f 100644
--- a/srcpkgs/nv-codec-headers/template
+++ b/srcpkgs/nv-codec-headers/template
@@ -1,15 +1,15 @@
# Template file for 'nv-codec-headers'
pkgname=nv-codec-headers
reverts="12.2.72.0_1"
-version=11.1.5.1
-revision=2
+version=12.0.16.1
+revision=1
build_style=gnu-makefile
short_desc="FFmpeg version of headers required to interface with Nvidias codec APIs"
maintainer="Orphaned <orphan@voidlinux.org>"
license="MIT"
homepage="http://git.videolan.org/?p=ffmpeg/nv-codec-headers.git"
distfiles="https://github.com/FFmpeg/nv-codec-headers/archive/n${version}.tar.gz"
-checksum=d095fbd56aa93772471a323be0ebe65504a0f43f06c76a30b6d25da77b06ae9c
+checksum=37e31c7ed0c9bf2da74646a3ec426c38a6d29e60b1fb7bff3e03a99b9412e050
post_install() {
sed -n '4,25p' include/ffnvcodec/nvEncodeAPI.h > LICENSE
From ea5fe870f4274b9f516a6454eeebf795a05ecc4a Mon Sep 17 00:00:00 2001
From: zlice <zlice555@gmail.com>
Date: Sat, 6 Jul 2024 15:38:10 -0400
Subject: [PATCH 2/3] ffmpeg: remove bin packages
now provided by ffmpeg6
---
srcpkgs/ffmpeg/template | 27 +++++++++++++++++----------
1 file changed, 17 insertions(+), 10 deletions(-)
diff --git a/srcpkgs/ffmpeg/template b/srcpkgs/ffmpeg/template
index 93618cd977537e..0778dff73e8089 100644
--- a/srcpkgs/ffmpeg/template
+++ b/srcpkgs/ffmpeg/template
@@ -2,8 +2,9 @@
# audacity also needs to be bumped when a new ffmpeg version bumps libavformat's soname!
pkgname=ffmpeg
version=4.4.4
-revision=7
-short_desc="Decoding, encoding and streaming software"
+revision=8
+build_style=meta
+short_desc="Decoding, encoding and streaming software (transitional dummy package)"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-3.0-or-later"
homepage="https://www.ffmpeg.org"
@@ -29,11 +30,13 @@ makedepends="zlib-devel bzip2-devel freetype-devel alsa-lib-devel libXfixes-deve
$(vopt_if srt srt-devel) $(vopt_if rist librist-devel)
$(vopt_if vulkan 'vulkan-loader-devel')
$(vopt_if nvenc nv-codec-headers) $(vopt_if nvdec nv-codec-headers)"
-depends="ffplay>=${version}_${revision}"
+# ffmpeg6 provides ffmpeg, ffprobe, ffplay, etc
+depends="ffmpeg6"
build_options="x265 v4l2 vaapi vdpau vpx fdk_aac aom nvenc sndio pulseaudio
dav1d zimg webp sofa vulkan drm svtav1 srt rist nvdec"
build_options_default="x265 v4l2 vpx aom sndio pulseaudio dav1d webp vulkan drm srt rist"
+
desc_option_srt="Enable support for SRT (Secure, Reliable, Transport)"
desc_option_rist="Enable support for RIST (Reliable Internet Stream Transport)"
desc_option_sofa="Enable support for AES SOFA"
@@ -132,11 +135,16 @@ do_configure() {
do_build() {
make ${makejobs}
- make doc/ff{mpeg,play}.1
}
+# transitional dummy package for ffmpeg6
+# binaries conflict with 6
do_install() {
- make DESTDIR=${DESTDIR} install install-man
+ make DESTDIR=${DESTDIR} install
+ rm -rf ${DESTDIR}/usr/bin
+ rm -rf ${DESTDIR}/usr/share/man/man1
+ rm -rf ${DESTDIR}/usr/share/ffmpeg/ffprobe.xsd
+ rm -rf ${DESTDIR}/usr/share/ffmpeg/libvpx*ffpreset
}
libavcodec_package() {
@@ -214,6 +222,7 @@ ffmpeg-devel_package() {
libswresample>=${version}_${revision}
libavresample>=${version}_${revision}"
short_desc+=" - development files"
+ conflicts="ffmpeg6-devel"
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
@@ -231,9 +240,7 @@ ffmpeg-devel_package() {
}
ffplay_package() {
- short_desc="Simple video player using FFmpeg and SDL2"
- pkg_install() {
- vmove usr/bin/ffplay
- vmove "usr/share/man/man1/ffplay*"
- }
+ short_desc="Simple video player using FFmpeg and SDL2 (transitional dummy package)"
+ build_style="meta"
+ depends="ffplay6"
}
From ae7b3583edeb9eb2aa4e82bfbd3ea6f4b6db606d Mon Sep 17 00:00:00 2001
From: zlice <zlice555@gmail.com>
Date: Sat, 20 Jul 2024 17:40:38 -0400
Subject: [PATCH 3/3] New package: ffmpeg6-6.0.1
---
common/shlibs | 8 +
srcpkgs/ffmpeg6-devel | 1 +
srcpkgs/ffmpeg6/patches/qsv.patch | 15 ++
srcpkgs/ffmpeg6/patches/qt6-webengine.patch | 36 +++
srcpkgs/ffmpeg6/template | 234 ++++++++++++++++++++
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, 304 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 252abb54d1b7a2..ef925b00db9f8e 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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..94ef68f5683f3a
--- /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 00000000000000..c0b397ba849438
--- /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 00000000000000..a925e95395cc8a
--- /dev/null
+++ b/srcpkgs/ffmpeg6/template
@@ -0,0 +1,234 @@
+# 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
+ $(vopt_if pulseaudio pulseaudio-devel)
+ $(vopt_if vaapi libva-devel) $(vopt_if vdpau libvdpau-devel)
+ $(vopt_if x265 x265-devel) $(vopt_if v4l2 v4l-utils-devel)
+ $(vopt_if fdk_aac fdk-aac-devel) $(vopt_if vpx libvpx-devel)
+ $(vopt_if aom libaom-devel) $(vopt_if sndio sndio-devel)
+ $(vopt_if dav1d libdav1d-devel) $(vopt_if zimg zimg-devel)
+ $(vopt_if webp libwebp-devel) $(vopt_if sofa libmysofa-devel)
+ $(vopt_if drm libdrm-devel) $(vopt_if svtav1 libsvt-av1-devel)
+ $(vopt_if srt srt-devel) $(vopt_if rist librist-devel)
+ $(vopt_if vulkan 'vulkan-loader-devel')
+ $(vopt_if onevpl 'oneVPL oneVPL-devel')
+ $(vopt_if nvenc nv-codec-headers) $(vopt_if nvdec nv-codec-headers)"
+depends="ffplay6>=${version}_${revision}"
+short_desc="Decoding, encoding and streaming software"
+maintainer="Orphaned <orphan@voidlinux.org>"
+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="x265 v4l2 vaapi vdpau vpx fdk_aac aom nvenc sndio pulseaudio
+ dav1d zimg webp sofa vulkan drm svtav1 srt rist nvdec onevpl"
+build_options_default="x265 v4l2 vpx aom sndio pulseaudio dav1d webp vulkan drm srt rist"
+desc_option_srt="Enable support for SRT (Secure, Reliable, Transport)"
+desc_option_rist="Enable support for RIST (Reliable Internet Stream Transport)"
+desc_option_sofa="Enable support for AES SOFA"
+desc_option_webp="Enable support for WebP"
+
+case "$XBPS_TARGET_MACHINE" in
+ i686*)
+ build_options_default+=" vaapi vdpau nvenc nvdec"
+ hostmakedepends+=" nasm"
+ ;;
+ x86_64*)
+ hostmakedepends+=" nasm"
+ build_options_default+=" vaapi vdpau nvenc nvdec 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 $(vopt_enable vpx libvpx) --enable-libtheora \
+ --enable-shared --enable-static --enable-libxcb \
+ $(vopt_enable pulseaudio libpulse) --enable-libfreetype --enable-libmodplug \
+ --enable-libspeex --enable-libcelt --enable-libass \
+ --enable-libopus --enable-librtmp --enable-libjack \
+ $(vopt_if fdk_aac '--enable-nonfree --enable-libfdk-aac') \
+ --disable-libopencore_amrnb --disable-libopencore_amrwb \
+ --disable-libopenjpeg --enable-libbluray \
+ --enable-postproc --enable-opencl --enable-libvmaf ${_args} \
+ $(vopt_enable x265 libx265) \
+ $(vopt_enable v4l2 libv4l2) \
+ $(vopt_enable aom libaom) $(vopt_enable vaapi) $(vopt_enable vdpau) \
+ --enable-libbs2b --enable-libvidstab \
+ $(vopt_enable dav1d libdav1d) \
+ $(vopt_enable zimg libzimg) \
+ $(vopt_enable webp libwebp) \
+ $(vopt_enable sofa libmysofa) \
+ $(vopt_enable vulkan) \
+ $(vopt_enable onevpl libvpl) \
+ $(vopt_enable drm libdrm) \
+ $(vopt_enable svtav1 libsvtav1) \
+ $(vopt_enable srt libsrt) \
+ $(vopt_enable rist librist) \
+ $(vopt_enable nvenc nvenc) \
+ $(vopt_enable nvdec 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"
+ 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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /dev/null
+++ b/srcpkgs/libswscale6
@@ -0,0 +1 @@
+ffmpeg6
\ No newline at end of file
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: New package: ffmpeg6-6.0.1
2024-07-06 20:05 [PR PATCH] Ffmpeg6pkg zlice
2024-07-20 21:44 ` [PR PATCH] [Updated] New package: ffmpeg6-6.0.1 classabbyamp
@ 2024-07-20 21:44 ` classabbyamp
2024-07-20 21:45 ` classabbyamp
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: classabbyamp @ 2024-07-20 21:44 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 225 bytes --]
New comment by classabbyamp on void-packages repository
https://github.com/void-linux/void-packages/pull/51132#issuecomment-2241303287
Comment:
- rebased
- made ffplay a transitional package too
- linted ffmpeg6 template
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: New package: ffmpeg6-6.0.1
2024-07-06 20:05 [PR PATCH] Ffmpeg6pkg zlice
2024-07-20 21:44 ` [PR PATCH] [Updated] New package: ffmpeg6-6.0.1 classabbyamp
2024-07-20 21:44 ` classabbyamp
@ 2024-07-20 21:45 ` classabbyamp
2024-07-21 1:01 ` [PR REVIEW] " classabbyamp
` (4 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: classabbyamp @ 2024-07-20 21:45 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 275 bytes --]
New comment by classabbyamp on void-packages repository
https://github.com/void-linux/void-packages/pull/51132#issuecomment-2241303589
Comment:
not a fan of how `ffmpeg{,6}-devel` conflict with each other, but I think the only way to make that better is to add `replaces=`
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PR REVIEW] New package: ffmpeg6-6.0.1
2024-07-06 20:05 [PR PATCH] Ffmpeg6pkg zlice
` (2 preceding siblings ...)
2024-07-20 21:45 ` classabbyamp
@ 2024-07-21 1:01 ` classabbyamp
2024-07-21 1:02 ` classabbyamp
` (3 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: classabbyamp @ 2024-07-21 1:01 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 187 bytes --]
New review comment by classabbyamp on void-packages repository
https://github.com/void-linux/void-packages/pull/51132#discussion_r1685542841
Comment:
does this still happen on ffmpeg6?
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: New package: ffmpeg6-6.0.1
2024-07-06 20:05 [PR PATCH] Ffmpeg6pkg zlice
` (3 preceding siblings ...)
2024-07-21 1:01 ` [PR REVIEW] " classabbyamp
@ 2024-07-21 1:02 ` classabbyamp
2024-07-21 1:49 ` [PR REVIEW] " zlice
` (2 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: classabbyamp @ 2024-07-21 1:02 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 326 bytes --]
New comment by classabbyamp on void-packages repository
https://github.com/void-linux/void-packages/pull/51132#issuecomment-2241303287
Comment:
- rebased
- made ffplay a transitional package too
- linted ffmpeg6 template
once ffmpeg 4 is less needed, let's make the `ffmpeg` template a metapackage fully, à la `linux`
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PR REVIEW] New package: ffmpeg6-6.0.1
2024-07-06 20:05 [PR PATCH] Ffmpeg6pkg zlice
` (4 preceding siblings ...)
2024-07-21 1:02 ` classabbyamp
@ 2024-07-21 1:49 ` zlice
2024-07-21 22:42 ` [PR PATCH] [Updated] " classabbyamp
2024-07-21 23:03 ` [PR PATCH] [Closed]: " classabbyamp
7 siblings, 0 replies; 9+ messages in thread
From: zlice @ 2024-07-21 1:49 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 1363 bytes --]
New review comment by zlice on void-packages repository
https://github.com/void-linux/void-packages/pull/51132#discussion_r1685589919
Comment:
```
=> ffmpeg6-devel-6.0.1_1: running post-install hook: 06-strip-and-debug-pkgs ...
Stripped static library: /usr/lib/libswresample.a
Stripped static library: /usr/lib/libavcodec.a
Stripped static library: /usr/lib/libavformat.a
Stripped static library: /usr/lib/libswscale.a
Stripped static library: /usr/lib/libavutil.a
Stripped static library: /usr/lib/libpostproc.a
Stripped static library: /usr/lib/libavdevice.a
/usr/bin/strip: error: the input file '/destdir//ffmpeg6-devel-6.0.1/usr/lib/libavfilter.a(vf_atadenoise.o)' has no sections
=> ERROR: ffmpeg6-devel-6.0.1_1: failed to strip /usr/lib/libavfilter.a
=> ERROR: ffmpeg6-devel-6.0.1_1: post-install_06-strip-and-debug-pkgs: 'find ${PKGDESTDIR} -type f' exited with 1
=> ERROR: in hook() at common/hooks/post-install/06-strip-and-debug-pkgs.sh:68
=> ERROR: in run_func() at common/xbps-src/shutils/common.sh:57
=> ERROR: in run_pkg_hooks() at common/xbps-src/shutils/common.sh:314
=> ERROR: in main() at common/xbps-src/libexec/xbps-src-doinstall.sh:66
```
forget the exact reason but other distros `--disable-stripping` and there was some ffmpeg/gcc/strip thing about the library not having sections bc 'x'
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PR PATCH] [Updated] New package: ffmpeg6-6.0.1
2024-07-06 20:05 [PR PATCH] Ffmpeg6pkg zlice
` (5 preceding siblings ...)
2024-07-21 1:49 ` [PR REVIEW] " zlice
@ 2024-07-21 22:42 ` classabbyamp
2024-07-21 23:03 ` [PR PATCH] [Closed]: " classabbyamp
7 siblings, 0 replies; 9+ messages in thread
From: classabbyamp @ 2024-07-21 22:42 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 1452 bytes --]
There is an updated pull request by classabbyamp against master on the void-packages repository
https://github.com/zlice/void-packages ffmpeg6pkg
https://github.com/void-linux/void-packages/pull/51132
New package: ffmpeg6-6.0.1
#### Testing the changes
- I tested the changes in this PR: **YES**
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**
#### Local build testing
- I built this PR locally for my native architecture, **x86_64**, **i686**
- I built this PR locally for these architectures (if supported. mark crossbuilds):
- **aarch64**
- **x86_64-musl**
#### Comments
Makes `ffmpeg` a transitional meta package that is still version 4 but depends on `ffmpeg6` which has binaries and libraries. Should allow for a slow transition to move things over to 6 and avoid breaking current installs.
#### pre-reqs
- opencv https://github.com/void-linux/void-packages/pull/51124
- qtav remove https://github.com/void-linux/void-packages/pull/51123
- flowblade https://github.com/void-linux/void-packages/pull/50385
- idjc https://github.com/void-linux/void-packages/pull/48944

A patch file from https://github.com/void-linux/void-packages/pull/51132.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-ffmpeg6pkg-51132.patch --]
[-- Type: text/x-diff, Size: 23654 bytes --]
From 677a2164e4e42d0211a168900b7293c8587af88f Mon Sep 17 00:00:00 2001
From: zlice <zlice555@gmail.com>
Date: Sat, 6 Jul 2024 15:52:45 -0400
Subject: [PATCH 1/4] nv-codec-headers: update to 12.0.16.1
---
| 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
--git a/srcpkgs/nv-codec-headers/template b/srcpkgs/nv-codec-headers/template
index 8f04477e378e55..6798f9cbd6bb2f 100644
--- a/srcpkgs/nv-codec-headers/template
+++ b/srcpkgs/nv-codec-headers/template
@@ -1,15 +1,15 @@
# Template file for 'nv-codec-headers'
pkgname=nv-codec-headers
reverts="12.2.72.0_1"
-version=11.1.5.1
-revision=2
+version=12.0.16.1
+revision=1
build_style=gnu-makefile
short_desc="FFmpeg version of headers required to interface with Nvidias codec APIs"
maintainer="Orphaned <orphan@voidlinux.org>"
license="MIT"
homepage="http://git.videolan.org/?p=ffmpeg/nv-codec-headers.git"
distfiles="https://github.com/FFmpeg/nv-codec-headers/archive/n${version}.tar.gz"
-checksum=d095fbd56aa93772471a323be0ebe65504a0f43f06c76a30b6d25da77b06ae9c
+checksum=37e31c7ed0c9bf2da74646a3ec426c38a6d29e60b1fb7bff3e03a99b9412e050
post_install() {
sed -n '4,25p' include/ffnvcodec/nvEncodeAPI.h > LICENSE
From ef6cfa888f9740e4d1d7b1eaff39014a125a4c2d Mon Sep 17 00:00:00 2001
From: zlice <zlice555@gmail.com>
Date: Sat, 6 Jul 2024 15:38:10 -0400
Subject: [PATCH 2/4] ffmpeg: remove bin packages
now provided by ffmpeg6
---
srcpkgs/ffmpeg/template | 27 +++++++++++++++++----------
1 file changed, 17 insertions(+), 10 deletions(-)
diff --git a/srcpkgs/ffmpeg/template b/srcpkgs/ffmpeg/template
index 93618cd977537e..0778dff73e8089 100644
--- a/srcpkgs/ffmpeg/template
+++ b/srcpkgs/ffmpeg/template
@@ -2,8 +2,9 @@
# audacity also needs to be bumped when a new ffmpeg version bumps libavformat's soname!
pkgname=ffmpeg
version=4.4.4
-revision=7
-short_desc="Decoding, encoding and streaming software"
+revision=8
+build_style=meta
+short_desc="Decoding, encoding and streaming software (transitional dummy package)"
maintainer="Orphaned <orphan@voidlinux.org>"
license="GPL-3.0-or-later"
homepage="https://www.ffmpeg.org"
@@ -29,11 +30,13 @@ makedepends="zlib-devel bzip2-devel freetype-devel alsa-lib-devel libXfixes-deve
$(vopt_if srt srt-devel) $(vopt_if rist librist-devel)
$(vopt_if vulkan 'vulkan-loader-devel')
$(vopt_if nvenc nv-codec-headers) $(vopt_if nvdec nv-codec-headers)"
-depends="ffplay>=${version}_${revision}"
+# ffmpeg6 provides ffmpeg, ffprobe, ffplay, etc
+depends="ffmpeg6"
build_options="x265 v4l2 vaapi vdpau vpx fdk_aac aom nvenc sndio pulseaudio
dav1d zimg webp sofa vulkan drm svtav1 srt rist nvdec"
build_options_default="x265 v4l2 vpx aom sndio pulseaudio dav1d webp vulkan drm srt rist"
+
desc_option_srt="Enable support for SRT (Secure, Reliable, Transport)"
desc_option_rist="Enable support for RIST (Reliable Internet Stream Transport)"
desc_option_sofa="Enable support for AES SOFA"
@@ -132,11 +135,16 @@ do_configure() {
do_build() {
make ${makejobs}
- make doc/ff{mpeg,play}.1
}
+# transitional dummy package for ffmpeg6
+# binaries conflict with 6
do_install() {
- make DESTDIR=${DESTDIR} install install-man
+ make DESTDIR=${DESTDIR} install
+ rm -rf ${DESTDIR}/usr/bin
+ rm -rf ${DESTDIR}/usr/share/man/man1
+ rm -rf ${DESTDIR}/usr/share/ffmpeg/ffprobe.xsd
+ rm -rf ${DESTDIR}/usr/share/ffmpeg/libvpx*ffpreset
}
libavcodec_package() {
@@ -214,6 +222,7 @@ ffmpeg-devel_package() {
libswresample>=${version}_${revision}
libavresample>=${version}_${revision}"
short_desc+=" - development files"
+ conflicts="ffmpeg6-devel"
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
@@ -231,9 +240,7 @@ ffmpeg-devel_package() {
}
ffplay_package() {
- short_desc="Simple video player using FFmpeg and SDL2"
- pkg_install() {
- vmove usr/bin/ffplay
- vmove "usr/share/man/man1/ffplay*"
- }
+ short_desc="Simple video player using FFmpeg and SDL2 (transitional dummy package)"
+ build_style="meta"
+ depends="ffplay6"
}
From e2befbd49ceb6ea624db8322ab0fd29a875794ec Mon Sep 17 00:00:00 2001
From: zlice <zlice555@gmail.com>
Date: Sat, 20 Jul 2024 17:40:38 -0400
Subject: [PATCH 3/4] New package: ffmpeg6-6.0.1
---
common/shlibs | 8 +
srcpkgs/ffmpeg6-devel | 1 +
srcpkgs/ffmpeg6/patches/qsv.patch | 15 ++
srcpkgs/ffmpeg6/patches/qt6-webengine.patch | 36 +++
srcpkgs/ffmpeg6/template | 234 ++++++++++++++++++++
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, 304 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 3e00d163604c75..3a49ea5d6df2c0 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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..94ef68f5683f3a
--- /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 00000000000000..c0b397ba849438
--- /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 00000000000000..a925e95395cc8a
--- /dev/null
+++ b/srcpkgs/ffmpeg6/template
@@ -0,0 +1,234 @@
+# 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
+ $(vopt_if pulseaudio pulseaudio-devel)
+ $(vopt_if vaapi libva-devel) $(vopt_if vdpau libvdpau-devel)
+ $(vopt_if x265 x265-devel) $(vopt_if v4l2 v4l-utils-devel)
+ $(vopt_if fdk_aac fdk-aac-devel) $(vopt_if vpx libvpx-devel)
+ $(vopt_if aom libaom-devel) $(vopt_if sndio sndio-devel)
+ $(vopt_if dav1d libdav1d-devel) $(vopt_if zimg zimg-devel)
+ $(vopt_if webp libwebp-devel) $(vopt_if sofa libmysofa-devel)
+ $(vopt_if drm libdrm-devel) $(vopt_if svtav1 libsvt-av1-devel)
+ $(vopt_if srt srt-devel) $(vopt_if rist librist-devel)
+ $(vopt_if vulkan 'vulkan-loader-devel')
+ $(vopt_if onevpl 'oneVPL oneVPL-devel')
+ $(vopt_if nvenc nv-codec-headers) $(vopt_if nvdec nv-codec-headers)"
+depends="ffplay6>=${version}_${revision}"
+short_desc="Decoding, encoding and streaming software"
+maintainer="Orphaned <orphan@voidlinux.org>"
+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="x265 v4l2 vaapi vdpau vpx fdk_aac aom nvenc sndio pulseaudio
+ dav1d zimg webp sofa vulkan drm svtav1 srt rist nvdec onevpl"
+build_options_default="x265 v4l2 vpx aom sndio pulseaudio dav1d webp vulkan drm srt rist"
+desc_option_srt="Enable support for SRT (Secure, Reliable, Transport)"
+desc_option_rist="Enable support for RIST (Reliable Internet Stream Transport)"
+desc_option_sofa="Enable support for AES SOFA"
+desc_option_webp="Enable support for WebP"
+
+case "$XBPS_TARGET_MACHINE" in
+ i686*)
+ build_options_default+=" vaapi vdpau nvenc nvdec"
+ hostmakedepends+=" nasm"
+ ;;
+ x86_64*)
+ hostmakedepends+=" nasm"
+ build_options_default+=" vaapi vdpau nvenc nvdec 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 $(vopt_enable vpx libvpx) --enable-libtheora \
+ --enable-shared --enable-static --enable-libxcb \
+ $(vopt_enable pulseaudio libpulse) --enable-libfreetype --enable-libmodplug \
+ --enable-libspeex --enable-libcelt --enable-libass \
+ --enable-libopus --enable-librtmp --enable-libjack \
+ $(vopt_if fdk_aac '--enable-nonfree --enable-libfdk-aac') \
+ --disable-libopencore_amrnb --disable-libopencore_amrwb \
+ --disable-libopenjpeg --enable-libbluray \
+ --enable-postproc --enable-opencl --enable-libvmaf ${_args} \
+ $(vopt_enable x265 libx265) \
+ $(vopt_enable v4l2 libv4l2) \
+ $(vopt_enable aom libaom) $(vopt_enable vaapi) $(vopt_enable vdpau) \
+ --enable-libbs2b --enable-libvidstab \
+ $(vopt_enable dav1d libdav1d) \
+ $(vopt_enable zimg libzimg) \
+ $(vopt_enable webp libwebp) \
+ $(vopt_enable sofa libmysofa) \
+ $(vopt_enable vulkan) \
+ $(vopt_enable onevpl libvpl) \
+ $(vopt_enable drm libdrm) \
+ $(vopt_enable svtav1 libsvtav1) \
+ $(vopt_enable srt libsrt) \
+ $(vopt_enable rist librist) \
+ $(vopt_enable nvenc nvenc) \
+ $(vopt_enable nvdec 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"
+ 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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /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 00000000000000..ccdfc6aa0e84ea
--- /dev/null
+++ b/srcpkgs/libswscale6
@@ -0,0 +1 @@
+ffmpeg6
\ No newline at end of file
From 11f817ee646c56e4d46a22d9555c66a5c6f62895 Mon Sep 17 00:00:00 2001
From: classabbyamp <void@placeviolette.net>
Date: Sun, 21 Jul 2024 18:42:40 -0400
Subject: [PATCH 4/4] fixup! New package: ffmpeg6-6.0.1
---
srcpkgs/ffmpeg6/template | 56 ++++++++++++++--------------------------
1 file changed, 20 insertions(+), 36 deletions(-)
diff --git a/srcpkgs/ffmpeg6/template b/srcpkgs/ffmpeg6/template
index a925e95395cc8a..4538a152394226 100644
--- a/srcpkgs/ffmpeg6/template
+++ b/srcpkgs/ffmpeg6/template
@@ -9,19 +9,13 @@ makedepends="zlib-devel bzip2-devel freetype-devel alsa-lib-devel libXfixes-deve
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
- $(vopt_if pulseaudio pulseaudio-devel)
- $(vopt_if vaapi libva-devel) $(vopt_if vdpau libvdpau-devel)
- $(vopt_if x265 x265-devel) $(vopt_if v4l2 v4l-utils-devel)
- $(vopt_if fdk_aac fdk-aac-devel) $(vopt_if vpx libvpx-devel)
- $(vopt_if aom libaom-devel) $(vopt_if sndio sndio-devel)
- $(vopt_if dav1d libdav1d-devel) $(vopt_if zimg zimg-devel)
- $(vopt_if webp libwebp-devel) $(vopt_if sofa libmysofa-devel)
- $(vopt_if drm libdrm-devel) $(vopt_if svtav1 libsvt-av1-devel)
- $(vopt_if srt srt-devel) $(vopt_if rist librist-devel)
- $(vopt_if vulkan 'vulkan-loader-devel')
- $(vopt_if onevpl 'oneVPL oneVPL-devel')
- $(vopt_if nvenc nv-codec-headers) $(vopt_if nvdec nv-codec-headers)"
+ 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 <orphan@voidlinux.org>"
@@ -31,22 +25,17 @@ changelog="https://raw.githubusercontent.com/FFmpeg/FFmpeg/master/Changelog"
distfiles="https://www.ffmpeg.org/releases/ffmpeg-${version}.tar.xz"
checksum=9b16b8731d78e596b4be0d720428ca42df642bb2d78342881ff7f5bc29fc9623
-build_options="x265 v4l2 vaapi vdpau vpx fdk_aac aom nvenc sndio pulseaudio
- dav1d zimg webp sofa vulkan drm svtav1 srt rist nvdec onevpl"
-build_options_default="x265 v4l2 vpx aom sndio pulseaudio dav1d webp vulkan drm srt rist"
-desc_option_srt="Enable support for SRT (Secure, Reliable, Transport)"
-desc_option_rist="Enable support for RIST (Reliable Internet Stream Transport)"
+build_options="vaapi vdpau fdk_aac nvcodec svtav1 onevpl"
desc_option_sofa="Enable support for AES SOFA"
-desc_option_webp="Enable support for WebP"
case "$XBPS_TARGET_MACHINE" in
i686*)
- build_options_default+=" vaapi vdpau nvenc nvdec"
+ build_options_default+=" vaapi vdpau nvcodec"
hostmakedepends+=" nasm"
;;
x86_64*)
hostmakedepends+=" nasm"
- build_options_default+=" vaapi vdpau nvenc nvdec onevpl"
+ build_options_default+=" vaapi vdpau nvcodec onevpl"
;;
ppc64*) build_options_default+=" vaapi vdpau";;
mips*) CFLAGS="-mnan=legacy";;
@@ -102,31 +91,26 @@ do_configure() {
--disable-stripping \
--enable-libcdio --enable-version3 --enable-runtime-cpudetect \
--enable-libmp3lame --enable-libvorbis --enable-libxvid \
- --enable-libx264 $(vopt_enable vpx libvpx) --enable-libtheora \
+ --enable-libx264 --enable-libvpx --enable-libtheora \
--enable-shared --enable-static --enable-libxcb \
- $(vopt_enable pulseaudio libpulse) --enable-libfreetype --enable-libmodplug \
+ --enable-libpulse --enable-libfreetype --enable-libmodplug \
--enable-libspeex --enable-libcelt --enable-libass \
--enable-libopus --enable-librtmp --enable-libjack \
- $(vopt_if fdk_aac '--enable-nonfree --enable-libfdk-aac') \
--disable-libopencore_amrnb --disable-libopencore_amrwb \
--disable-libopenjpeg --enable-libbluray \
--enable-postproc --enable-opencl --enable-libvmaf ${_args} \
- $(vopt_enable x265 libx265) \
- $(vopt_enable v4l2 libv4l2) \
- $(vopt_enable aom libaom) $(vopt_enable vaapi) $(vopt_enable vdpau) \
- --enable-libbs2b --enable-libvidstab \
- $(vopt_enable dav1d libdav1d) \
+ --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 webp libwebp) \
$(vopt_enable sofa libmysofa) \
- $(vopt_enable vulkan) \
$(vopt_enable onevpl libvpl) \
- $(vopt_enable drm libdrm) \
$(vopt_enable svtav1 libsvtav1) \
- $(vopt_enable srt libsrt) \
- $(vopt_enable rist librist) \
- $(vopt_enable nvenc nvenc) \
- $(vopt_enable nvdec nvdec)
+ $(vopt_enable nvcodec nvenc) \
+ $(vopt_enable nvcodec nvdec)
}
do_build() {
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PR PATCH] [Closed]: New package: ffmpeg6-6.0.1
2024-07-06 20:05 [PR PATCH] Ffmpeg6pkg zlice
` (6 preceding siblings ...)
2024-07-21 22:42 ` [PR PATCH] [Updated] " classabbyamp
@ 2024-07-21 23:03 ` classabbyamp
7 siblings, 0 replies; 9+ messages in thread
From: classabbyamp @ 2024-07-21 23:03 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 1290 bytes --]
There's a closed pull request on the void-packages repository
New package: ffmpeg6-6.0.1
https://github.com/void-linux/void-packages/pull/51132
Description:
#### Testing the changes
- I tested the changes in this PR: **YES**
#### New package
- This new package conforms to the [package requirements](https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#package-requirements): **YES**
#### Local build testing
- I built this PR locally for my native architecture, **x86_64**, **i686**
- I built this PR locally for these architectures (if supported. mark crossbuilds):
- **aarch64**
- **x86_64-musl**
#### Comments
Makes `ffmpeg` a transitional meta package that is still version 4 but depends on `ffmpeg6` which has binaries and libraries. Should allow for a slow transition to move things over to 6 and avoid breaking current installs.
#### pre-reqs
- opencv https://github.com/void-linux/void-packages/pull/51124
- qtav remove https://github.com/void-linux/void-packages/pull/51123
- flowblade https://github.com/void-linux/void-packages/pull/50385
- idjc https://github.com/void-linux/void-packages/pull/48944

^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-07-21 23:03 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-07-06 20:05 [PR PATCH] Ffmpeg6pkg zlice
2024-07-20 21:44 ` [PR PATCH] [Updated] New package: ffmpeg6-6.0.1 classabbyamp
2024-07-20 21:44 ` classabbyamp
2024-07-20 21:45 ` classabbyamp
2024-07-21 1:01 ` [PR REVIEW] " classabbyamp
2024-07-21 1:02 ` classabbyamp
2024-07-21 1:49 ` [PR REVIEW] " zlice
2024-07-21 22:42 ` [PR PATCH] [Updated] " classabbyamp
2024-07-21 23:03 ` [PR PATCH] [Closed]: " classabbyamp
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).