Skip to content

Commit

Permalink
pkg: danctnix: ffmpeg-v4l2-request: new pkgbuild
Browse files Browse the repository at this point in the history
  • Loading branch information
Danct12 committed Mar 24, 2024
1 parent 0829f78 commit 541f4f2
Show file tree
Hide file tree
Showing 2 changed files with 269 additions and 0 deletions.
238 changes: 238 additions & 0 deletions PKGBUILDS/danctnix/ffmpeg-v4l2-request/PKGBUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,238 @@
# Maintainer: Maxime Gauduin <alucryd@archlinux.org>
# Contributor: Bartłomiej Piotrowski <bpiotrowski@archlinux.org>
# Contributor: Ionut Biru <ibiru@archlinux.org>
# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
# Contributor: Paul Mattal <paul@archlinux.org>

# ALARM: Kevin Mihelich <kevin@archlinuxarm.org>
# - use -fPIC in host cflags for v7/v8 to fix print_options.c compile
# - remove makedepends on ffnvcodec-headers, remove --enable-nvenc, --enable-nvdec
# - remove depends on aom, remove --enable-libaom
# - remove optdepends on intel-media-sdk, onevpl-intel-gpu
# - remove depends on onevpl, remove --enable-libvpl
# - remove depends on vmaf, remove --enable-vmaf
# - remove depends on rav1e, remove --enable-librav1e
# - remove depends on svt-av1, remove --enable-libsvtav1
# - remove --enable-lto

pkgname=ffmpeg-v4l2-request
pkgver=6.1.1
pkgrel=8
epoch=2
pkgdesc='Complete solution to record, convert and stream audio and video'
arch=(x86_64 armv7h aarch64)
url=https://ffmpeg.org
license=(GPL-3.0-only)
depends=(
alsa-lib
bzip2
cairo
dav1d
fontconfig
freetype2
fribidi
glib2
glibc
gmp
gnutls
gsm
harfbuzz
jack
lame
libass
libavc1394
libbluray
libbs2b
libdrm
libgl
libiec61883
libjxl
libmodplug
libopenmpt
libplacebo
libpulse
libraw1394
librsvg
libsoxr
libssh
libtheora
libva
libvdpau
libvorbis
libvpx
libwebp
libx11
libxcb
libxext
libxml2
libxv
ocl-icd
opencore-amr
openjpeg2
opus
rubberband
sdl2
snappy
speex
srt
v4l-utils
vapoursynth
vid.stab
vulkan-icd-loader
x264
x265
xvidcore
xz
zimg
zlib
)
makedepends=(
amf-headers
avisynthplus
clang
frei0r-plugins
ladspa
mesa
nasm
opencl-headers
vulkan-headers
)
optdepends=(
'avisynthplus: AviSynthPlus support'
'frei0r-plugins: Frei0r video effects support'
'ladspa: LADSPA filters'
)
provides=(
libavcodec.so
libavdevice.so
libavfilter.so
libavformat.so
libavutil.so
libpostproc.so
libswresample.so
libswscale.so
)
options=(
debug
)
_commit=502d19c9564969538952051c2d395c714e41e567
source=(
https://github.com/Kwiboo/FFmpeg/archive/${_commit}.tar.gz
https://github.com/FFmpeg/FFmpeg/commit/fef22c87ada4517441701e6e61e062c9f4399c8e.patch
add-av_stream_get_first_dts-for-chromium.patch
)
b2sums=('82e42a6856c87ef4e33a9bec5dc00637ebdc81fa75daa0357fb6f03e85872ac7a52b699c0eaf25723b2a208d2006b094593c4eb8af613ea1d127dd32e541da9d'
'76ec8ce681f1ba77753140df935634817e45da2e9015d06afa042d12186f34a140dfd4c757f03f38b76d993f01231f8093a48a2b367049ded59300fe39f3ed50'
'555274228e09a233d92beb365d413ff5c718a782008075552cafb2130a3783cf976b51dfe4513c15777fb6e8397a34122d475080f2c4483e8feea5c0d878e6de')

prepare() {
cd FFmpeg-${_commit}
patch -Np1 -i ../add-av_stream_get_first_dts-for-chromium.patch # https://crbug.com/1251779
# Fix build with latest vulkan headers
patch -Np1 -i ../fef22c87ada4517441701e6e61e062c9f4399c8e.patch
}

build() {
cd FFmpeg-${_commit}
[[ $CARCH == "armv7h" || $CARCH == "aarch64" ]] && CONFIG='--host-cflags="-fPIC"'

./configure \
--prefix=/usr \
--disable-debug \
--disable-static \
--disable-stripping \
--enable-amf \
--enable-avisynth \
--enable-cuda-llvm \
--enable-fontconfig \
--enable-frei0r \
--enable-gmp \
--enable-gnutls \
--enable-gpl \
--enable-ladspa \
--enable-libass \
--enable-libbluray \
--enable-libbs2b \
--enable-libdav1d \
--enable-libdrm \
--enable-libfreetype \
--enable-libfribidi \
--enable-libgsm \
--enable-libharfbuzz \
--enable-libiec61883 \
--enable-libjack \
--enable-libjxl \
--enable-libmodplug \
--enable-libmp3lame \
--enable-libopencore_amrnb \
--enable-libopencore_amrwb \
--enable-libopenjpeg \
--enable-libopenmpt \
--enable-libopus \
--enable-libplacebo \
--enable-libpulse \
--enable-librsvg \
--enable-librubberband \
--enable-libsnappy \
--enable-libsoxr \
--enable-libspeex \
--enable-libsrt \
--enable-libssh \
--enable-libtheora \
--enable-libv4l2 \
--enable-libvidstab \
--enable-libvorbis \
--enable-libvpx \
--enable-libwebp \
--enable-libx264 \
--enable-libx265 \
--enable-libxcb \
--enable-libxml2 \
--enable-libxvid \
--enable-libzimg \
--enable-opencl \
--enable-opengl \
--enable-shared \
--enable-vapoursynth \
--enable-version3 \
--enable-vulkan $CONFIG \
\
--enable-libudev
make
make tools/qt-faststart
make doc/ff{mpeg,play}.1
}

package() {
depends+=(
libass.so
libbluray.so
libbs2b.so
libdav1d.so
libfreetype.so
libharfbuzz.so
libjxl.so
libopenmpt.so
libplacebo.so
librsvg-2.so
librubberband.so
libva.so
libva-drm.so
libva-x11.so
libvidstab.so
libvorbisenc.so
libvorbis.so
libvpx.so
libx264.so
libx265.so
libxvidcore.so
libzimg.so
)
provides+=(ffmpeg)
conflicts+=(ffmpeg)

make DESTDIR="${pkgdir}" -C FFmpeg-${_commit} install install-man
install -Dm 755 FFmpeg-${_commit}/tools/qt-faststart "${pkgdir}"/usr/bin/
}

# vim: ts=2 sw=2 et:
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
diff '--color=auto' -rupN ffmpeg.orig/libavformat/avformat.h ffmpeg/libavformat/avformat.h
--- ffmpeg.orig/libavformat/avformat.h 2022-08-19 17:42:47.323422603 +0200
+++ ffmpeg/libavformat/avformat.h 2022-08-19 17:42:51.347130436 +0200
@@ -1128,6 +1128,10 @@ struct AVCodecParserContext *av_stream_g
*/
int64_t av_stream_get_end_pts(const AVStream *st);

+// 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 ^^^
+
#define AV_PROGRAM_RUNNING 1

/**
diff '--color=auto' -rupN ffmpeg.orig/libavformat/mux_utils.c ffmpeg/libavformat/mux_utils.c
--- ffmpeg.orig/libavformat/mux_utils.c 2022-08-19 17:42:47.346758108 +0200
+++ ffmpeg/libavformat/mux_utils.c 2022-08-19 17:47:28.549589002 +0200
@@ -37,6 +37,13 @@ int64_t av_stream_get_end_pts(const AVSt
return AV_NOPTS_VALUE;
}

+// 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 ^^^
+
int avformat_query_codec(const AVOutputFormat *ofmt, enum AVCodecID codec_id,
int std_compliance)
{

0 comments on commit 541f4f2

Please sign in to comment.