Compare commits

..

4 Commits

Author SHA1 Message Date
Raboneko e45230f93b bump: rust-mise rust-usage-cli 2026-05-31 15:48:15 +00:00
Raboneko d14a018c53 bump: rpcs3 2026-05-31 14:23:27 +00:00
Raboneko 9c9d6b897a bump(branch): zig-master 2026-05-31 11:54:50 +00:00
Raboneko ac4fdb8c37 bump: zig-master-bootstrap 2026-05-31 11:15:03 +00:00
22 changed files with 2779 additions and 2502 deletions
+1 -1
View File
@@ -5,7 +5,7 @@
%global crate mise
Name: rust-mise
Version: 2026.5.16
Version: 2026.5.17
Release: 1%{?dist}
Summary: Front-end to your dev env
+2 -2
View File
@@ -9,8 +9,8 @@
# GLIBCXX_ASSERTIONS is known to break RPCS3
%global build_cflags %(echo "%{__build_flags_lang_c}" | sed 's|-Wp,-D_GLIBCXX_ASSERTIONS ||g') %{?_distro_extra_cflags}
%global build_cxxflags %(echo "%{__build_flags_lang_cxx}" | sed 's|-Wp,-D_GLIBCXX_ASSERTIONS ||g') %{?_distro_extra_cflags}
%global commit 1bd246d2d31cee65b867d93ff82993cec8f012cb
%global ver 0.0.40-19408
%global commit 7b540cdb20fe3225b26251d0400300d0ebbd4dc7
%global ver 0.0.40-19412
Name: rpcs3
Version: %(echo %{ver} | sed 's/-/^/g')
+1 -1
View File
@@ -4,7 +4,7 @@
%global crate usage-cli
Name: rust-usage-cli
Version: 3.3.0
Version: 3.4.0
Release: 1%{?dist}
Summary: CLI for working with usage-based CLIs
+1 -1
View File
@@ -1,6 +1,6 @@
#!/usr/bin/bash
version=0.17.0-dev.607+456b2ec07
version=0.17.0-dev.633+9c5655093
mirrors=()
@@ -6,7 +6,7 @@
%define llvm_compat 22
%endif
%global llvm_version 22.0.0
%global ver 0.17.0-dev.607+456b2ec07
%global ver 0.17.0-dev.633+9c5655093
%bcond bootstrap 1
%bcond docs %{without bootstrap}
%bcond test 1
+1 -1
View File
@@ -18,7 +18,7 @@
%global zig_cache_dir %{builddir}/zig-cache
Name: zig-master
Version: 0.17.0~dev.607+456b2ec07
Version: 0.17.0~dev.633+9c5655093
Release: 2%{?dist}
Summary: Master builds of the Zig language
License: MIT AND NCSA AND LGPL-2.1-or-later AND LGPL-2.1-or-later WITH GCC-exception-2.0 AND GPL-2.0-or-later AND GPL-2.0-or-later WITH GCC-exception-2.0 AND BSD-3-Clause AND Inner-Net-2.0 AND ISC AND LicenseRef-Fedora-Public-Domain AND GFDL-1.1-or-later AND ZPL-2.1
-3
View File
@@ -1,3 +0,0 @@
# FFmpeg keys
ffmpeg-devel.asc
ffmpeg.keyring
+1 -1
View File
@@ -2,7 +2,7 @@ project pkg {
arches = ["x86_64", "aarch64", "i386"]
rpm {
spec = "ffmpeg.spec"
extra_repos = ["https://repos.fyralabs.com/terra\\$releasever-multimedia"]
extra_repos = ["https://repos.fyralabs.com/terra\\$releasever-nvidia", "https://repos.fyralabs.com/terra\\$releasever-multimedia"]
}
labels {
updbranch = 1
-479
View File
@@ -1,479 +0,0 @@
## module name # reason for enablement in ffmpeg (usually there is another package that already got legal review)
aac
aasc
libfdk_aac # fdk-aac-free
ac3
acelp_kelvin
adpcm_4xm
adpcm_adx
adpcm_afc
adpcm_agm
adpcm_aica
adpcm_argo
adpcm_ct
adpcm_dtk
adpcm_ea
adpcm_ea_maxis_xa
adpcm_ea_r1
adpcm_ea_r2
adpcm_ea_r3
adpcm_ea_xas
adpcm_g722
adpcm_g726
adpcm_g726le
adpcm_ima_acorn
adpcm_ima_alp
adpcm_ima_amv
adpcm_ima_apc
adpcm_ima_apm
adpcm_ima_cunning
adpcm_ima_dat4
adpcm_ima_dk3
adpcm_ima_dk4
adpcm_ima_ea_eacs
adpcm_ima_ea_sead
adpcm_ima_iss
adpcm_ima_moflex
adpcm_ima_mtf
adpcm_ima_oki
adpcm_ima_qt
adpcm_ima_rad
adpcm_ima_smjpeg
adpcm_ima_ssi
adpcm_ima_wav
adpcm_ima_ws
adpcm_ms
adpcm_mtaf
adpcm_psx
adpcm_sbpro_2
adpcm_sbpro_3
adpcm_sbpro_4
adpcm_swf
adpcm_thp
adpcm_thp_le
adpcm_vima
adpcm_xa
adpcm_xmd
adpcm_yamaha
adpcm_zork
aic
alac
alias_pix
amrnb
amrwb
amv
anm
ansi # trivial
anull
apac
ape
apng # animated png
apv
arbc
argo
ass # trivial
asv1
asv2
atrac1
atrac3
atrac3al
atrac3p
atrac3pal
aura
aura2
av1 # libaom
av1_qsv # libaom
bethsoftvid # trivial
bfi # trivial
bink
binkaudio_dct
binkaudio_rdft
bintext
bitpacked # trivial
bmp # trivial
bmv_audio
bmv_video
bonk
brender_pix
c93
cbd2_dpcm
ccaption
cdgraphics
cdtoons
cdxl
cinepak
clearvideo
cljr
cook
cpia
cscd
cyuv
dca
dds
derf_dpcm
dfa
dfpwm
dirac # dirac
dnxhd
dnxhr
dolby_e
dpx
dsd_lsbf
dsd_msbf
dsicinaudio
dsicinvideo
dss_sp
dvaudio
dvbsub
dvdsub
dvvideo
dxa
dxtory
eacmv
eamad
eatgq
eatgv
eatqi
eightbps
eightsvx_exp
eightsvx_fib
escape124
escape130
evrc
exr # openEXR
ffv1 # ffmpeg
ffvhuff # ffmpeg
ffwavesynth # pseudo
fits
flac # libFLAC
flashsv
flashsv2
flic
flv
fmvc
fourxm
ftr # fdk-aac
g723_1
g729
gdv
gem
gif # libpng
gremlin_dpcm
gsm # libgsm
gsm_ms
h261
h263
h263_v4l2m2m # hardware
h263i
h263p
hap
hca
hcom
hdr
hnm4_video
hq_hqa
hqx
huffyuv # trivial+zlib
hymt # huffyuv-mt
iac
idcin
idf
iff_ilbm
ilbc # ilbc
imc
indeo2
indeo3
indeo4
indeo5
interplay_acm
interplay_dpcm
interplay_video
ipu
jacosub
jpeg2000 # openjpeg2
jpegls
jv
kgv1
kmvc
lagarith
libaribb24 # aribb24
libaribcaption # libaribcaption
libaom # libaom
libaom_av1 # libaom
libcodec2 # codec2
libdav1d # av1
libgsm # libgsm
libgsm_ms # libgsm
libilbc # ilbc
libjxl # libjxl
liblc3 # liblc3
libopencore_amrnb # opencore-amr
libopencore_amrwb # opencore-amr
libopenh264 # openh264
libopenjpeg # openjpeg
libopus # opus
librsvg # librsvg
libschroedinger # schroedinger
libspeex # speex
libvorbis # libvorbis
libvpx_vp8 # libvpx
libvpx_vp9 # libvpx
libxevd
libzvbi_teletext # zvbi
loco
lscr
m101
mace3
mace6
mdec
media100
metasound
microdvd
mimic
misc4
mjpeg # mjpegtools
mjpeg_qsv # mjpegtools
mjpegb
mlp
mmvideo
motionpixels
movtext
mp1 # twolame/lame
mp1float # twolame/lame
mp2 # twolame
mp2float # twolame
mp3 # lame
mp3adu
mp3adufloat
mp3float # lame
mp3on4
mp3on4float
mpc7
mpc8
mpeg1_v4l2m2m
mpeg1video
mpeg2_qsv
mpeg2_v4l2m2m
mpeg2video
mpeg4
mpeg4_v4l2m2m # hardware
mpegvideo
mpl2
msa1
mscc
msmpeg4v1
msmpeg4v2
msmpeg4v3
msnsiren
msp2
msrle
mss1
msvideo1
mszh
mts2
mv30
mvc1
mvc2
mvdv
mvha
mwsc
mxpeg
nellymoser
nuv
on2avc
opus # libopus
paf_audio
paf_video
pam # trivial
pbm # trivial
pcm_alaw # trivial
pcm_bluray
pcm_dvd
pcm_f16le # trivial
pcm_f24le # trivial
pcm_f32be # trivial
pcm_f32le # trivial
pcm_f64be # trivial
pcm_f64le # trivial
pcm_lxf # trivial
pcm_mulaw # trivial
pcm_s16be # trivial
pcm_s16be_planar # trivial
pcm_s16le # trivial
pcm_s16le_planar # trivial
pcm_s24be # trivial
pcm_s24daud # trivial
pcm_s24le # trivial
pcm_s24le_planar # trivial
pcm_s32be # trivial
pcm_s32le # trivial
pcm_s32le_planar # trivial
pcm_s64be # trivial
pcm_s64le # trivial
pcm_s8 # trivial
pcm_s8_planar # trivial
pcm_sga # trivial
pcm_u16be # trivial
pcm_u16le # trivial
pcm_u24be # trivial
pcm_u24le # trivial
pcm_u32be # trivial
pcm_u32le # trivial
pcm_u8 # trivial
pcm_vidc # trivial
pcx
pfm # trivial
pgm # trivial
pgmyuv # trivial
pgssub # mkvtoolnix
pgx
phm # trivial
photocd
pictor
pjs
png # libpng
ppm # trivial
prores
prores_raw
prosumer
psd
ptx
qcelp
qdm2
qdmc
qdraw
qoa
qoi
qpeg
qtrle
r10k
r210
ra_144
ra_288
rasc
rawvideo # trivial
realtext
rka
rl2
roq
roq_dpcm
rpza
rscc
rv10
rv20
s302m
sami
sanm
sbc
screenpresso
sdx2_dpcm
sgi # trivial
sgirle # trivial
shorten
simbiosis_imx
sipr
siren
smackaud
smacker
smc
smvjpeg
snow
sol_dpcm
sonic
sp5x
speedhq
speex
srgc
srt # trivial
ssa # trivial
stl
subrip
subviewer
subviewer1
sunrast # trivial
svq1
svq3
tak
targa # trivial
targa_y216
tdsc
text # trivial
theora # libtheora
thp
tiertexseqvideo
tiff # libtiff
tmv
truehd
truemotion1
truemotion2
truemotion2rt
truespeech
tscc
tscc2
tta
twinvq
txd
ulti
utvideo
v210 # trivial
v210x # trivial
v308 # trivial
v408 # trivial
v410 # trivial
vb
vble
vcr1
vmdaudio
vmdvideo
vmnc
vnull
vorbis # libvorbis
vp3 # libav
vp4 # libav
vp5 # libav
vp6 # libav
vp6a # libav
vp6f # libav
vp7 # libav
vp8 # libvpx
vp8_qsv # libvpx
vp8_v4l2m2m # libvpx
vp9 # libvpx
vp9_qsv # libvpx
vp9_v4l2m2m # libvpx
vplayer
vqa
vqc
wady_dpcm
wavarc
wavpack
wbmp
wcmv
webp # libwebp
webvtt # trivial
wmav1
wmav2
wmavoice
wmv1
wmv2
wnv1
wrapped_avframe # passthrough
ws_snd1
xan_dpcm
xan_wc3
xan_wc4
xbin
xbm # trivial
xface
xl
xpm
xsub
xwd # xwd
y41p # trivial
ylc
yop
yuv4 # trivial
zero12v
zerocodec
zlib # zlib
zmbv # dosbox
-216
View File
@@ -1,216 +0,0 @@
## module name # reason for enablement in ffmpeg (usually there is another package that already got legal review)
a64multi
a64multi5
aac
libfdk_aac # fdk-aac-free
ac3
adpcm_adx
adpcm_argo
adpcm_g722
adpcm_g726
adpcm_g726le
adpcm_ima_alp
adpcm_ima_amv
adpcm_ima_apm
adpcm_ima_qt
adpcm_ima_ssi
adpcm_ima_wav
adpcm_ima_ws
adpcm_ms
adpcm_swf
adpcm_yamaha
alac
alias_pix
amv
anull
apng # libpng
ass # trivial
asv1
asv2
av1_amf
av1_nvenc
av1_qsv
av1_vaapi
bitpacked # trivial
bmp # trivial
cinepak
cljr
dca
dfpwm
dnxhd
dnxhr
dpx
dvbsub
dvdsub
dvvideo
exr
ffv1
ffvhuff # trivial+zlib
flac # libFLAC
flashsv
flashsv2
flv
g723_1
gif # libpng
h261
h263
h263_v4l2m2m # hardware
h263p
h264_amf # hardware
h264_nvenc # hardware
h264_qsv # hardware
h264_v4l2m2m # hardware
h264_vaapi # hardware
hap
hdr
hevc_amf # hardware
hevc_nvenc # hardware
hevc_qsv # hardware
hevc_v4l2m2m # hardware
hevc_vaapi # hardware
huffyuv # trivial+zlib
ilbc # ilbc
jpeg2000
jpegls
libaom
libaom_av1 # libaom
libcodec2 # codec2
libgsm # libgsm
libgsm_ms # libgsm
libilbc # ilbc
libjxl # libjxl
liblc3 # liblc3
libmp3lame # lame
liboapv
libopencore_amrnb
libopenh264 # openh264
libopenjpeg # openjpeg
libopus # opus
librav1e # rav1e
libspeex # speex
libsvtav1
libtheora # libtheora
libtwolame # twolame
libvo_amrwbenc
libvorbis # libvorbis
libvpx_vp8 # libvpx
libvpx_vp9 # libvpx
libwebp # libwebp
libwebp_anim # libwebp
libxeve
libxvid # xvidcore
mjpeg # mjpegtools
mjpeg_qsv # mjpegtools
mjpeg_vaapi # mjpegtools
mlp
movtext
mp2 # twolame
mp2fixed # twolame
mpeg1video
mpeg2_qsv
mpeg2_vaapi
mpeg2video
mpeg4
mpeg4_v4l2m2m # hardware
msmpeg4v2
msmpeg4v3
msvideo1
nellymoser
opus # opus
pam
pbm # trivial
pcm_alaw # trivial
pcm_f32be # trivial
pcm_f32le # trivial
pcm_f64be # trivial
pcm_f64le # trivial
pcm_mulaw # trivial
pcm_s16be # trivial
pcm_s16be_planar # trivial
pcm_s16le # trivial
pcm_s16le_planar # trivial
pcm_s24be # trivial
pcm_s24le # trivial
pcm_s24le_planar # trivial
pcm_s32be # trivial
pcm_s32le # trivial
pcm_s32le_planar # trivial
pcm_s8 # trivial
pcm_s8_planar # trivial
pcm_u16be # trivial
pcm_u16le # trivial
pcm_u24be # trivial
pcm_u24le # trivial
pcm_u32be # trivial
pcm_u32le # trivial
pcm_u8 # trivial
pcx
pgm # trivial
pgmyuv # trivial
phm # trivial
png # libpng
ppm # trivial
prores
prores_aw
prores_ks
qoi
qtrle
r10k # trivial
r210 # trivial
ra_144
rawvideo # trivial
roq
roq_dpcm
rpza
rv10
rv20
s302m
sbc
sgi # trivial
smc
snow
sonic
sonic_ls
speedhq
srt # trivial
ssa # trivial
subrip # trivial
sunrast # trivial
svq1
targa # trivial
text # trivial
tiff # libtiff
truehd
tta
ttml
utvideo
v210 # trivial
v308 # trivial
v408 # trivial
v410 # trivial
vc1_qsv # hardware
vc1_v4l2m2m # hardware
vc2 # dirac
vnull
vorbis # libvorbis
vp8_qsv # libvpx
vp8_v4l2m2m # libvpx
vp8_vaapi # libvpx
vp9_qsv # libvpx
vp9_vaapi # libvpx
wavpack
wbmp
webvtt # trivial
wmav1
wmav2
wmv1
wmv2
wrapped_avframe # passthrough
xbm # (X11)
xface
xsub
xwd # xwd
y41p # trivial
yuv4 # trivial
zlib # zlib
zmbv # dosbox
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,42 @@
diff -Naur ffmpeg-7.1.2.old/libavcodec/lcevcdec.c ffmpeg-7.1.2/libavcodec/lcevcdec.c
--- ffmpeg-7.1.2.old/libavcodec/lcevcdec.c 2025-10-27 10:07:00.369472051 +0100
+++ ffmpeg-7.1.2/libavcodec/lcevcdec.c 2025-10-27 10:07:01.223246583 +0100
@@ -139,7 +139,7 @@
if (!sd)
return 1;
- res = LCEVC_SendDecoderEnhancementData(lcevc->decoder, in->pts, 0, sd->data, sd->size);
+ res = LCEVC_SendDecoderEnhancementData(lcevc->decoder, (uint64_t) in->pts, sd->data, sd->size);
if (res != LCEVC_Success)
return AVERROR_EXTERNAL;
@@ -147,7 +147,7 @@
if (ret < 0)
return ret;
- res = LCEVC_SendDecoderBase(lcevc->decoder, in->pts, 0, picture, -1, NULL);
+ res = LCEVC_SendDecoderBase(lcevc->decoder, (uint64_t) in->pts, picture, -1, NULL);
if (res != LCEVC_Success)
return AVERROR_EXTERNAL;
diff -Naur ffmpeg-7.1.2.old/libavfilter/vf_lcevc.c ffmpeg-7.1.2/libavfilter/vf_lcevc.c
--- ffmpeg-7.1.2.old/libavfilter/vf_lcevc.c 2025-10-27 10:07:00.732521928 +0100
+++ ffmpeg-7.1.2/libavfilter/vf_lcevc.c 2025-10-27 10:07:01.223846623 +0100
@@ -139,7 +139,7 @@
return ret;
if (sd) {
- res = LCEVC_SendDecoderEnhancementData(lcevc->decoder, in->pts, 0, sd->data, sd->size);
+ res = LCEVC_SendDecoderEnhancementData(lcevc->decoder, (uint64_t) in->pts, sd->data, sd->size);
if (res == LCEVC_Again)
return AVERROR(EAGAIN);
else if (res != LCEVC_Success) {
@@ -148,7 +148,7 @@
}
}
- res = LCEVC_SendDecoderBase(lcevc->decoder, in->pts, 0, picture, -1, in);
+ res = LCEVC_SendDecoderBase(lcevc->decoder, (uint64_t) in->pts, picture, -1, in);
if (res != LCEVC_Success) {
av_log(ctx, AV_LOG_ERROR, "LCEVC_SendDecoderBase failed\n");
LCEVC_FreePicture(lcevc->decoder, picture);
@@ -1,33 +0,0 @@
From 26eb0232fa41d603a2f016faf5610de79f694c02 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn@cryptomilk.org>
Date: Sun, 10 May 2026 00:10:38 +0200
Subject: [PATCH] fdk-aac-free-devel is GPL compatible
See https://bugzilla.redhat.com/show_bug.cgi?id=1501522#c112
---
configure | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure b/configure
index 1759694..6cf4f08 100755
--- a/configure
+++ b/configure
@@ -2003,7 +2003,6 @@ EXTERNAL_LIBRARY_GPL_LIST="
EXTERNAL_LIBRARY_NONFREE_LIST="
decklink
- libfdk_aac
libmpeghdec
"
@@ -2044,6 +2043,7 @@ EXTERNAL_LIBRARY_LIST="
libcodec2
libdav1d
libdc1394
+ libfdk_aac
libflite
libfontconfig
libfreetype
--
2.54.0
+13 -28
View File
@@ -1,46 +1,31 @@
From d32aacab65a322b66d6a1b48f6cdb03e42bde0f9 Mon Sep 17 00:00:00 2001
From: Frank Liberato <liberato@chromium.org>
Date: Wed, 7 Jul 2021 19:01:22 -0700
Subject: [PATCH] Add av_stream_get_first_dts for Chromium
---
libavformat/avformat.h | 4 ++++
libavformat/utils.c | 7 +++++++
2 files changed, 11 insertions(+)
diff --git a/libavformat/avformat.h b/libavformat/avformat.h
index 1916aa2dc5..e6682849fa 100644
--- a/libavformat/avformat.h
+++ b/libavformat/avformat.h
@@ -1170,6 +1170,10 @@ typedef struct AVStreamGroup {
diff -Naur ffmpeg-7.1.2.old/libavformat/avformat.h ffmpeg-7.1.2/libavformat/avformat.h
--- ffmpeg-7.1.2.old/libavformat/avformat.h 2025-10-27 10:07:00.895476692 +0100
+++ ffmpeg-7.1.2/libavformat/avformat.h 2025-10-27 10:07:01.866348795 +0100
@@ -1202,6 +1202,10 @@
struct AVCodecParserContext *av_stream_get_parser(const AVStream *s);
+// 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 --git a/libavformat/utils.c b/libavformat/utils.c
index cf4d68bff9..7d750abf88 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -56,6 +56,13 @@ int ff_unlock_avformat(void)
diff -Naur ffmpeg-7.1.2.old/libavformat/utils.c ffmpeg-7.1.2/libavformat/utils.c
--- ffmpeg-7.1.2.old/libavformat/utils.c 2025-10-27 10:07:00.899476727 +0100
+++ ffmpeg-7.1.2/libavformat/utils.c 2025-10-27 10:07:01.866992658 +0100
@@ -44,6 +44,13 @@
* various utility functions for use within FFmpeg
*/
+// Chromium: We use the internal field first_dts vvv
+int64_t av_stream_get_first_dts(const AVStream *st)
+{
+ return cffstream(st)->first_dts;
+ return cffstream(st)->first_dts;
+}
+// Chromium: We use the internal field first_dts ^^^
+
/* an arbitrarily chosen "sane" max packet size -- 50M */
#define SANE_CHUNK_SIZE (50000000)
--
2.41.0
@@ -1,58 +0,0 @@
From: Jan Engelhardt <jengelh@inai.de>
Edit the default codec selection such that
ffmpeg -i youtube.blah.webm foobar.mkv
without any further arguments can produce a result even on a
reduced codec selection list.
---
libavformat/matroskaenc.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
Index: ffmpeg-7.0/libavformat/matroskaenc.c
===================================================================
--- ffmpeg-7.0.orig/libavformat/matroskaenc.c
+++ ffmpeg-7.0/libavformat/matroskaenc.c
@@ -3540,16 +3540,25 @@ static int mkv_query_codec(enum AVCodecI
return 0;
}
+#define PREFAUDIO \
+ CONFIG_LIBOPUS_ENCODER ? AV_CODEC_ID_OPUS : \
+ CONFIG_AAC_ENCODER ? AV_CODEC_ID_AAC : \
+ CONFIG_VORBIS_ENCODER ? AV_CODEC_ID_VORBIS : \
+ AV_CODEC_ID_AC3
+
const FFOutputFormat ff_matroska_muxer = {
.p.name = "matroska",
.p.long_name = NULL_IF_CONFIG_SMALL("Matroska"),
.p.mime_type = "video/x-matroska",
.p.extensions = "mkv",
.priv_data_size = sizeof(MatroskaMuxContext),
- .p.audio_codec = CONFIG_LIBVORBIS_ENCODER ?
- AV_CODEC_ID_VORBIS : AV_CODEC_ID_AC3,
- .p.video_codec = CONFIG_LIBX264_ENCODER ?
- AV_CODEC_ID_H264 : AV_CODEC_ID_MPEG4,
+ .p.audio_codec = PREFAUDIO,
+ .p.video_codec =
+ CONFIG_LIBVPX_VP9_ENCODER ? AV_CODEC_ID_VP9 : \
+ CONFIG_LIBX264_ENCODER ? AV_CODEC_ID_H264 : \
+ CONFIG_LIBVPX_VP8_ENCODER ? AV_CODEC_ID_VP8 : \
+ CONFIG_MPEG4_ENCODER ? AV_CODEC_ID_MPEG4 : \
+ AV_CODEC_ID_THEORA,
.init = mkv_init,
.deinit = mkv_deinit,
.write_header = mkv_write_header,
@@ -3617,8 +3626,7 @@ const FFOutputFormat ff_matroska_audio_m
.p.mime_type = "audio/x-matroska",
.p.extensions = "mka",
.priv_data_size = sizeof(MatroskaMuxContext),
- .p.audio_codec = CONFIG_LIBVORBIS_ENCODER ?
- AV_CODEC_ID_VORBIS : AV_CODEC_ID_AC3,
+ .p.audio_codec = PREFAUDIO,
.p.video_codec = AV_CODEC_ID_NONE,
.init = mkv_init,
.deinit = mkv_deinit,
@@ -0,0 +1,13 @@
diff -Naur ffmpeg-7.1.2.old/configure ffmpeg-7.1.2/configure
--- ffmpeg-7.1.2.old/configure 2025-10-27 10:07:02.273543997 +0100
+++ ffmpeg-7.1.2/configure 2025-10-27 10:07:02.276510125 +0100
@@ -4710,6 +4710,9 @@
if $nvcc $nvccflags_default 2>&1 | grep -qi unsupported; then
nvccflags_default="-gencode arch=compute_60,code=sm_60 -O2"
fi
+ if $nvcc $nvccflags_default 2>&1 | grep -qi unsupported; then
+ nvccflags_default="-gencode arch=compute_75,code=sm_75 -O2"
+ fi
fi
set_default arch cc cxx doxygen pkg_config ranlib strip sysinclude \
@@ -0,0 +1,454 @@
diff -Naur ffmpeg-7.1.2.old/doc/outdevs.texi ffmpeg-7.1.2/doc/outdevs.texi
--- ffmpeg-7.1.2.old/doc/outdevs.texi 2025-10-27 10:07:00.979477433 +0100
+++ ffmpeg-7.1.2/doc/outdevs.texi 2025-10-27 10:07:02.002148270 +0100
@@ -240,6 +240,10 @@
outgoing VANC data will be dropped.
Defaults to @samp{1048576}.
+@item block_until_available
+Retries output if device appears unavailable. Retry rate is 60 times a second.
+Defaults to @option{0}.
+
@end table
@subsection Examples
diff -Naur ffmpeg-7.1.2.old/fftools/ffmpeg_sched.c ffmpeg-7.1.2/fftools/ffmpeg_sched.c
--- ffmpeg-7.1.2.old/fftools/ffmpeg_sched.c 2025-10-27 10:07:01.220479559 +0100
+++ ffmpeg-7.1.2/fftools/ffmpeg_sched.c 2025-10-27 10:07:02.002549025 +0100
@@ -22,6 +22,7 @@
#include <stdatomic.h>
#include <stddef.h>
#include <stdint.h>
+#include <unistd.h>
#include "cmdutils.h"
#include "ffmpeg_sched.h"
diff -Naur ffmpeg-7.1.2.old/libavdevice/decklink_common_c.h ffmpeg-7.1.2/libavdevice/decklink_common_c.h
--- ffmpeg-7.1.2.old/libavdevice/decklink_common_c.h 2025-10-27 10:07:00.829476109 +0100
+++ ffmpeg-7.1.2/libavdevice/decklink_common_c.h 2025-10-27 10:07:02.003002589 +0100
@@ -74,6 +74,7 @@
int64_t timestamp_align;
int timing_offset;
int wait_for_tc;
+ int block_until_available;
DecklinkSignalLossAction signal_loss_action;
};
diff -Naur ffmpeg-7.1.2.old/libavdevice/decklink_common.cpp ffmpeg-7.1.2/libavdevice/decklink_common.cpp
--- ffmpeg-7.1.2.old/libavdevice/decklink_common.cpp 2025-10-27 10:07:00.828476101 +0100
+++ ffmpeg-7.1.2/libavdevice/decklink_common.cpp 2025-10-27 10:07:02.003115933 +0100
@@ -25,7 +25,7 @@
#include "libavformat/internal.h"
}
-#include <DeckLinkAPI.h>
+#include <DeckLinkAPI_v14_2_1.h>
#ifdef _WIN32
#include <DeckLinkAPI_i.c>
#else
@@ -53,6 +53,7 @@
#include "decklink_common.h"
+
static IDeckLinkIterator *decklink_create_iterator(AVFormatContext *avctx)
{
IDeckLinkIterator *iter;
@@ -512,8 +513,8 @@
return AVERROR(EIO);
while (ret == 0 && iter->Next(&dl) == S_OK) {
- IDeckLinkOutput *output_config;
- IDeckLinkInput *input_config;
+ IDeckLinkOutput_v14_2_1 *output_config;
+ IDeckLinkInput_v14_2_1 *input_config;
const char *display_name = NULL;
const char *unique_name = NULL;
AVDeviceInfo *new_device = NULL;
@@ -527,14 +528,14 @@
goto next;
if (show_outputs) {
- if (dl->QueryInterface(IID_IDeckLinkOutput, (void **)&output_config) == S_OK) {
+ if (dl->QueryInterface(IID_IDeckLinkOutput_v14_2_1, (void **)&output_config) == S_OK) {
output_config->Release();
add = 1;
}
}
if (show_inputs) {
- if (dl->QueryInterface(IID_IDeckLinkInput, (void **)&input_config) == S_OK) {
+ if (dl->QueryInterface(IID_IDeckLinkInput_v14_2_1, (void **)&input_config) == S_OK) {
input_config->Release();
add = 1;
}
diff -Naur ffmpeg-7.1.2.old/libavdevice/decklink_common.h ffmpeg-7.1.2/libavdevice/decklink_common.h
--- ffmpeg-7.1.2.old/libavdevice/decklink_common.h 2025-10-27 10:07:00.831476127 +0100
+++ ffmpeg-7.1.2/libavdevice/decklink_common.h 2025-10-27 10:07:02.003408083 +0100
@@ -93,8 +93,8 @@
struct decklink_ctx {
/* DeckLink SDK interfaces */
IDeckLink *dl;
- IDeckLinkOutput *dlo;
- IDeckLinkInput *dli;
+ IDeckLinkOutput_v14_2_1 *dlo;
+ IDeckLinkInput_v14_2_1 *dli;
IDeckLinkConfiguration *cfg;
IDeckLinkProfileAttributes *attr;
decklink_output_callback *output_callback;
@@ -134,7 +134,6 @@
AVStream *klv_st;
AVStream *teletext_st;
uint16_t cdp_sequence_num;
-
/* Options */
int list_devices;
int list_formats;
@@ -149,13 +148,16 @@
BMDPixelFormat raw_format;
DecklinkSignalLossAction signal_loss_action;
+
int frames_preroll;
int frames_buffer;
pthread_mutex_t mutex;
pthread_cond_t cond;
int frames_buffer_available_spots;
+ int outstanding_frames;
int autodetect;
+ int block_until_available;
#if CONFIG_LIBKLVANC
struct klvanc_context_s *vanc_ctx;
@@ -249,3 +251,4 @@
int64_t ff_decklink_packet_queue_peekpts(DecklinkPacketQueue *q);
#endif /* AVDEVICE_DECKLINK_COMMON_H */
+
diff -Naur ffmpeg-7.1.2.old/libavdevice/decklink_dec.cpp ffmpeg-7.1.2/libavdevice/decklink_dec.cpp
--- ffmpeg-7.1.2.old/libavdevice/decklink_dec.cpp 2025-10-27 10:07:00.828476101 +0100
+++ ffmpeg-7.1.2/libavdevice/decklink_dec.cpp 2025-10-27 10:07:02.003669356 +0100
@@ -31,7 +31,7 @@
#include "libavformat/internal.h"
}
-#include <DeckLinkAPI.h>
+#include <DeckLinkAPI_v14_2_1.h>
extern "C" {
#include "config.h"
@@ -56,6 +56,7 @@
#include "decklink_common.h"
#include "decklink_dec.h"
+extern bool operator==(const REFIID& me, const REFIID& other);
#define MAX_WIDTH_VANC 1920
const BMDDisplayMode AUTODETECT_DEFAULT_MODE = bmdModeNTSC;
@@ -105,13 +106,13 @@
{bmdModeUnknown, 0, -1, -1, -1}
};
-class decklink_allocator : public IDeckLinkMemoryAllocator
+class decklink_allocator : public IDeckLinkMemoryAllocator_v14_2_1
{
public:
decklink_allocator(): _refs(1) { }
virtual ~decklink_allocator() { }
- // IDeckLinkMemoryAllocator methods
+ // IDeckLinkMemoryAllocator_v14_2_1 methods
virtual HRESULT STDMETHODCALLTYPE AllocateBuffer(unsigned int bufferSize, void* *allocatedBuffer)
{
void *buf = av_malloc(bufferSize + AV_INPUT_BUFFER_PADDING_SIZE);
@@ -129,7 +130,15 @@
virtual HRESULT STDMETHODCALLTYPE Decommit() { return S_OK; }
// IUnknown methods
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) { return E_NOINTERFACE; }
+ virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv)
+ {
+ if (iid == IID_IDeckLinkMemoryAllocator_v14_2_1) {
+ *ppv = (IDeckLinkMemoryAllocator_v14_2_1*)this;
+ AddRef();
+ return S_OK;
+ }
+ return E_NOINTERFACE;
+ }
virtual ULONG STDMETHODCALLTYPE AddRef(void) { return ++_refs; }
virtual ULONG STDMETHODCALLTYPE Release(void)
{
@@ -472,7 +481,7 @@
}
-static void handle_klv(AVFormatContext *avctx, decklink_ctx *ctx, IDeckLinkVideoInputFrame *videoFrame, int64_t pts)
+static void handle_klv(AVFormatContext *avctx, decklink_ctx *ctx, IDeckLinkVideoInputFrame_v14_2_1 *videoFrame, int64_t pts)
{
const uint8_t KLV_DID = 0x44;
const uint8_t KLV_IN_VANC_SDID = 0x04;
@@ -574,17 +583,25 @@
}
}
-class decklink_input_callback : public IDeckLinkInputCallback
+class decklink_input_callback : public IDeckLinkInputCallback_v14_2_1
{
public:
explicit decklink_input_callback(AVFormatContext *_avctx);
~decklink_input_callback();
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) { return E_NOINTERFACE; }
+ virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv)
+ {
+ if (iid == IID_IDeckLinkInputCallback_v14_2_1) {
+ *ppv = (IDeckLinkInputCallback_v14_2_1*)this;
+ AddRef();
+ return S_OK;
+ }
+ return E_NOINTERFACE;
+ }
virtual ULONG STDMETHODCALLTYPE AddRef(void);
virtual ULONG STDMETHODCALLTYPE Release(void);
virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged(BMDVideoInputFormatChangedEvents, IDeckLinkDisplayMode*, BMDDetectedVideoInputFormatFlags);
- virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived(IDeckLinkVideoInputFrame*, IDeckLinkAudioInputPacket*);
+ virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived(IDeckLinkVideoInputFrame_v14_2_1*, IDeckLinkAudioInputPacket*);
private:
std::atomic<int> _refs;
@@ -593,7 +610,7 @@
int no_video;
int64_t initial_video_pts;
int64_t initial_audio_pts;
- IDeckLinkVideoInputFrame* last_video_frame;
+ IDeckLinkVideoInputFrame_v14_2_1* last_video_frame;
};
decklink_input_callback::decklink_input_callback(AVFormatContext *_avctx) : _refs(1)
@@ -625,7 +642,7 @@
return ret;
}
-static int64_t get_pkt_pts(IDeckLinkVideoInputFrame *videoFrame,
+static int64_t get_pkt_pts(IDeckLinkVideoInputFrame_v14_2_1 *videoFrame,
IDeckLinkAudioInputPacket *audioFrame,
int64_t wallclock,
int64_t abs_wallclock,
@@ -679,7 +696,7 @@
return pts;
}
-static int get_bmd_timecode(AVFormatContext *avctx, AVTimecode *tc, AVRational frame_rate, BMDTimecodeFormat tc_format, IDeckLinkVideoInputFrame *videoFrame)
+static int get_bmd_timecode(AVFormatContext *avctx, AVTimecode *tc, AVRational frame_rate, BMDTimecodeFormat tc_format, IDeckLinkVideoInputFrame_v14_2_1 *videoFrame)
{
IDeckLinkTimecode *timecode;
int ret = AVERROR(ENOENT);
@@ -701,7 +718,7 @@
return ret;
}
-static int get_frame_timecode(AVFormatContext *avctx, decklink_ctx *ctx, AVTimecode *tc, IDeckLinkVideoInputFrame *videoFrame)
+static int get_frame_timecode(AVFormatContext *avctx, decklink_ctx *ctx, AVTimecode *tc, IDeckLinkVideoInputFrame_v14_2_1 *videoFrame)
{
AVRational frame_rate = ctx->video_st->r_frame_rate;
int ret;
@@ -726,7 +743,7 @@
}
HRESULT decklink_input_callback::VideoInputFrameArrived(
- IDeckLinkVideoInputFrame *videoFrame, IDeckLinkAudioInputPacket *audioFrame)
+ IDeckLinkVideoInputFrame_v14_2_1 *videoFrame, IDeckLinkAudioInputPacket *audioFrame)
{
void *frameBytes;
void *audioFrameBytes;
@@ -1141,7 +1158,7 @@
goto error;
/* Get input device. */
- if (ctx->dl->QueryInterface(IID_IDeckLinkInput, (void **) &ctx->dli) != S_OK) {
+ if (ctx->dl->QueryInterface(IID_IDeckLinkInput_v14_2_1, (void **) &ctx->dli) != S_OK) {
av_log(avctx, AV_LOG_ERROR, "Could not open input device from '%s'\n",
avctx->url);
ret = AVERROR(EIO);
diff -Naur ffmpeg-7.1.2.old/libavdevice/decklink_enc_c.c ffmpeg-7.1.2/libavdevice/decklink_enc_c.c
--- ffmpeg-7.1.2.old/libavdevice/decklink_enc_c.c 2025-10-27 10:07:00.833476145 +0100
+++ ffmpeg-7.1.2/libavdevice/decklink_enc_c.c 2025-10-27 10:07:02.004050964 +0100
@@ -32,6 +32,7 @@
{ "list_devices", "use ffmpeg -sinks decklink instead", OFFSET(list_devices), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, ENC | AV_OPT_FLAG_DEPRECATED},
{ "list_formats", "list supported formats" , OFFSET(list_formats), AV_OPT_TYPE_INT , { .i64 = 0 }, 0, 1, ENC },
{ "preroll" , "video preroll in seconds", OFFSET(preroll ), AV_OPT_TYPE_DOUBLE, { .dbl = 0.5 }, 0, 5, ENC },
+ { "block_until_available", "wait for device to become available instead of raising error", OFFSET(block_until_available), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, ENC },
{ "vanc_queue_size", "VANC queue buffer size", OFFSET(vanc_queue_size), AV_OPT_TYPE_INT64, { .i64 = (1024 * 1024)}, 0, INT64_MAX, ENC },
#if BLACKMAGIC_DECKLINK_API_VERSION >= 0x0b000000
{ "duplex_mode" , "duplex mode" , OFFSET(duplex_mode ), AV_OPT_TYPE_INT , { .i64 = 0 }, 0, 5, ENC, .unit = "duplex_mode"},
diff -Naur ffmpeg-7.1.2.old/libavdevice/decklink_enc.cpp ffmpeg-7.1.2/libavdevice/decklink_enc.cpp
--- ffmpeg-7.1.2.old/libavdevice/decklink_enc.cpp 2025-10-27 10:07:00.832476136 +0100
+++ ffmpeg-7.1.2/libavdevice/decklink_enc.cpp 2025-10-27 10:07:02.004296918 +0100
@@ -20,6 +20,8 @@
*/
#include <atomic>
+#include <unistd.h>
+
using std::atomic;
/* Include internal.h first to avoid conflict between winsock.h (used by
@@ -28,7 +30,7 @@
#include "libavformat/internal.h"
}
-#include <DeckLinkAPI.h>
+#include <DeckLinkAPI_v14_2_1.h>
extern "C" {
#include "libavformat/avformat.h"
@@ -47,8 +49,26 @@
#include "libklvanc/pixels.h"
#endif
+extern bool operator==(const REFIID& me, const REFIID& other){
+ return me.byte0 == other.byte0 &&
+ me.byte1 == other.byte1 &&
+ me.byte2 == other.byte2 &&
+ me.byte3 == other.byte3 &&
+ me.byte4 == other.byte4 &&
+ me.byte5 == other.byte5 &&
+ me.byte6 == other.byte6 &&
+ me.byte7 == other.byte7 &&
+ me.byte8 == other.byte8 &&
+ me.byte9 == other.byte9 &&
+ me.byte10 == other.byte10 &&
+ me.byte11 == other.byte11 &&
+ me.byte12 == other.byte12 &&
+ me.byte13 == other.byte13 &&
+ me.byte14 == other.byte14 &&
+ me.byte15 == other.byte15;
+}
/* DeckLink callback class declaration */
-class decklink_frame : public IDeckLinkVideoFrame
+class decklink_frame : public IDeckLinkVideoFrame_v14_2_1
{
public:
decklink_frame(struct decklink_ctx *ctx, AVFrame *avframe, AVCodecID codec_id, int height, int width) :
@@ -111,7 +131,16 @@
_ancillary->AddRef();
return S_OK;
}
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) { return E_NOINTERFACE; }
+ virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv)
+ {
+ if (iid == IID_IDeckLinkVideoFrame_v14_2_1)
+ {
+ *ppv = (IDeckLinkVideoFrame_v14_2_1*)this;
+ AddRef();
+ return S_OK;
+ }
+ return E_NOINTERFACE;
+ }
virtual ULONG STDMETHODCALLTYPE AddRef(void) { return ++_refs; }
virtual ULONG STDMETHODCALLTYPE Release(void)
{
@@ -138,10 +167,10 @@
std::atomic<int> _refs;
};
-class decklink_output_callback : public IDeckLinkVideoOutputCallback
+class decklink_output_callback : public IDeckLinkVideoOutputCallback_v14_2_1
{
public:
- virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted(IDeckLinkVideoFrame *_frame, BMDOutputFrameCompletionResult result)
+ virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted(IDeckLinkVideoFrame_v14_2_1 *_frame, BMDOutputFrameCompletionResult result)
{
decklink_frame *frame = static_cast<decklink_frame *>(_frame);
struct decklink_ctx *ctx = frame->_ctx;
@@ -155,11 +184,22 @@
ctx->frames_buffer_available_spots++;
pthread_cond_broadcast(&ctx->cond);
pthread_mutex_unlock(&ctx->mutex);
-
+ pthread_mutex_lock(&ctx->mutex);
+ ctx->outstanding_frames--;
+ pthread_mutex_unlock(&ctx->mutex);
return S_OK;
}
virtual HRESULT STDMETHODCALLTYPE ScheduledPlaybackHasStopped(void) { return S_OK; }
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) { return E_NOINTERFACE; }
+ virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv)
+ {
+ if (iid == IID_IDeckLinkVideoOutputCallback_v14_2_1)
+ {
+ *ppv = (IDeckLinkVideoOutputCallback_v14_2_1*)this;
+ AddRef();
+ return S_OK;
+ }
+ return E_NOINTERFACE;
+ }
virtual ULONG STDMETHODCALLTYPE AddRef(void) { return 1; }
virtual ULONG STDMETHODCALLTYPE Release(void) { return 1; }
};
@@ -204,9 +244,14 @@
av_log(avctx, AV_LOG_WARNING, "Could not enable video output with VANC! Trying without...\n");
ctx->supports_vanc = 0;
}
- if (!ctx->supports_vanc && ctx->dlo->EnableVideoOutput(ctx->bmd_mode, bmdVideoOutputFlagDefault) != S_OK) {
- av_log(avctx, AV_LOG_ERROR, "Could not enable video output!\n");
- return -1;
+ while (!ctx->supports_vanc && ctx->dlo->EnableVideoOutput(ctx->bmd_mode, bmdVideoOutputFlagDefault) != S_OK) {
+ if (!ctx->block_until_available) {
+ av_log(avctx, AV_LOG_ERROR, "Could not enable video output!\n");
+ return -1;
+ };
+ av_log(avctx, AV_LOG_WARNING, "Could not enable video output, waiting for device...\n");
+ usleep(1000000 / 60);
+ continue;
}
/* Set callback. */
@@ -370,6 +415,10 @@
struct decklink_cctx *cctx = (struct decklink_cctx *)avctx->priv_data;
struct decklink_ctx *ctx = (struct decklink_ctx *)cctx->ctx;
+ av_log(avctx, AV_LOG_DEBUG, "Wating for %d outstanding frames to return their results\n", ctx->outstanding_frames);
+ while (ctx->outstanding_frames > 0){
+ usleep(1);
+ }
if (ctx->playback_started) {
BMDTimeValue actual;
ctx->dlo->StopScheduledPlayback(ctx->last_pts * ctx->bmd_tb_num,
@@ -739,7 +788,7 @@
ctx->first_pts = pkt->pts;
/* Schedule frame for playback. */
- hr = ctx->dlo->ScheduleVideoFrame((class IDeckLinkVideoFrame *) frame,
+ hr = ctx->dlo->ScheduleVideoFrame((class IDeckLinkVideoFrame_v14_2_1 *) frame,
pkt->pts * ctx->bmd_tb_num,
ctx->bmd_tb_num, ctx->bmd_tb_den);
/* Pass ownership to DeckLink, or release on failure */
@@ -750,6 +799,9 @@
return AVERROR(EIO);
}
+ pthread_mutex_lock(&ctx->mutex);
+ ctx->outstanding_frames++;
+ pthread_mutex_unlock(&ctx->mutex);
ctx->dlo->GetBufferedVideoFrameCount(&buffered);
av_log(avctx, AV_LOG_DEBUG, "Buffered video frames: %d.\n", (int) buffered);
if (pkt->pts > 2 && buffered <= 2)
@@ -850,6 +902,7 @@
ctx->list_devices = cctx->list_devices;
ctx->list_formats = cctx->list_formats;
ctx->preroll = cctx->preroll;
+ ctx->block_until_available = cctx->block_until_available;
ctx->duplex_mode = cctx->duplex_mode;
ctx->first_pts = AV_NOPTS_VALUE;
if (cctx->link > 0 && (unsigned int)cctx->link < FF_ARRAY_ELEMS(decklink_link_conf_map))
@@ -874,7 +927,7 @@
return ret;
/* Get output device. */
- if (ctx->dl->QueryInterface(IID_IDeckLinkOutput, (void **) &ctx->dlo) != S_OK) {
+ if (ctx->dl->QueryInterface(IID_IDeckLinkOutput_v14_2_1, (void **) &ctx->dlo) != S_OK) {
av_log(avctx, AV_LOG_ERROR, "Could not open output device from '%s'\n",
avctx->url);
ret = AVERROR(EIO);
+12
View File
@@ -0,0 +1,12 @@
diff -Naur ffmpeg-7.1.2.old/configure ffmpeg-7.1.2/configure
--- ffmpeg-7.1.2.old/configure 2025-10-27 10:07:01.862821941 +0100
+++ ffmpeg-7.1.2/configure 2025-10-27 10:07:02.140469997 +0100
@@ -6766,7 +6766,7 @@
nvccflags=$nvccflags_default
fi
-nvccflags="$nvccflags -std=c++11"
+nvccflags="$nvccflags -std=c++14"
if enabled x86_64 || enabled ppc64 || enabled aarch64; then
nvccflags="$nvccflags -m64"
+32 -64
View File
@@ -1,24 +1,15 @@
From fed3505f256f4eecc967f9bec4252cb1b15375bd Mon Sep 17 00:00:00 2001
From: Terra Packaging Team <terra@fyralabs.com>
Date: Sun, 31 May 2026 03:01:18 -0500
Subject: [PATCH] Patch for SVT-VP9 plugin
See: https://github.com/OpenVisualCloud/SVT-VP9/tree/master/ffmpeg_plugin
---
configure | 3 +
configure.rej | 10 +
libavcodec/Makefile | 1 +
libavcodec/allcodecs.c | 1 +
libavcodec/libsvt_vp9.c | 701 ++++++++++++++++++++++++++++++++++++++++
5 files changed, 716 insertions(+)
create mode 100644 configure.rej
create mode 100644 libavcodec/libsvt_vp9.c
diff --git a/configure b/configure
index 1759694..4b63d8e 100755
--- a/configure
+++ b/configure
@@ -2083,6 +2083,7 @@ EXTERNAL_LIBRARY_LIST="
diff -Naur ffmpeg-7.1.2.old/configure ffmpeg-7.1.2/configure
--- ffmpeg-7.1.2.old/configure 2025-10-27 10:07:00.645474486 +0100
+++ ffmpeg-7.1.2/configure 2025-10-27 10:07:01.726484024 +0100
@@ -278,6 +278,7 @@
--enable-libsrt enable Haivision SRT protocol via libsrt [no]
--enable-libssh enable SFTP protocol via libssh [no]
--enable-libsvtav1 enable AV1 encoding via SVT [no]
+ --enable-libsvtvp9 enable VP9 encoding via svt [no]
--enable-libtensorflow enable TensorFlow as a DNN module backend
for DNN based filters like sr [no]
--enable-libtesseract enable Tesseract, needed for ocr filter [no]
@@ -1955,6 +1956,7 @@
libshaderc
libshine
libsmbclient
@@ -26,7 +17,7 @@ index 1759694..4b63d8e 100755
libsnappy
libsoxr
libspeex
@@ -3825,6 +3826,7 @@ libvpx_vp8_decoder_deps="libvpx"
@@ -3579,6 +3581,7 @@
libvpx_vp8_encoder_deps="libvpx"
libvpx_vp9_decoder_deps="libvpx"
libvpx_vp9_encoder_deps="libvpx"
@@ -34,7 +25,7 @@ index 1759694..4b63d8e 100755
libvvenc_encoder_deps="libvvenc"
libwebp_encoder_deps="libwebp"
libwebp_anim_encoder_deps="libwebp"
@@ -7387,6 +7389,7 @@ enabled libtwolame && require libtwolame twolame.h twolame_init -ltwolame
@@ -7028,6 +7031,7 @@
die "ERROR: libtwolame must be installed and version must be >= 0.3.10"; }
enabled libuavs3d && require_pkg_config libuavs3d "uavs3d >= 1.1.41" uavs3d.h uavs3d_decode
enabled libv4l2 && require_pkg_config libv4l2 libv4l2 libv4l2.h v4l2_ioctl
@@ -42,39 +33,10 @@ index 1759694..4b63d8e 100755
enabled libvidstab && require_pkg_config libvidstab "vidstab >= 0.98" vid.stab/libvidstab.h vsMotionDetectInit
enabled libvmaf && require_pkg_config libvmaf "libvmaf >= 2.0.0" libvmaf.h vmaf_init
enabled libvmaf && check_pkg_config libvmaf_cuda "libvmaf >= 2.0.0" libvmaf_cuda.h vmaf_cuda_state_init
diff --git a/configure.rej b/configure.rej
new file mode 100644
index 0000000..3de8351
--- /dev/null
+++ b/configure.rej
@@ -0,0 +1,10 @@
+--- configure 2026-03-10 10:00:58.102559577 +0100
++++ configure 2026-03-10 10:00:58.530928613 +0100
+@@ -278,6 +278,7 @@
+ --enable-libsrt enable Haivision SRT protocol via libsrt [no]
+ --enable-libssh enable SFTP protocol via libssh [no]
+ --enable-libsvtav1 enable AV1 encoding via SVT [no]
++ --enable-libsvtvp9 enable VP9 encoding via svt [no]
+ --enable-libtensorflow enable TensorFlow as a DNN module backend
+ for DNN based filters like sr [no]
+ --enable-libtesseract enable Tesseract, needed for ocr filter [no]
diff --git a/libavcodec/Makefile b/libavcodec/Makefile
index 1410bd8..9310a97 100644
--- a/libavcodec/Makefile
+++ b/libavcodec/Makefile
@@ -1217,6 +1217,7 @@ OBJS-$(CONFIG_LIBVO_AMRWBENC_ENCODER) += libvo-amrwbenc.o
OBJS-$(CONFIG_LIBVORBIS_DECODER) += libvorbisdec.o
OBJS-$(CONFIG_LIBVORBIS_ENCODER) += libvorbisenc.o \
vorbis_data.o
+OBJS-$(CONFIG_LIBSVT_VP9_ENCODER) += libsvt_vp9.o
OBJS-$(CONFIG_LIBVPX_VP8_DECODER) += libvpxdec.o
OBJS-$(CONFIG_LIBVPX_VP8_ENCODER) += libvpxenc.o
OBJS-$(CONFIG_LIBVPX_VP9_DECODER) += libvpxdec.o
diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c
index 695214f..8eaa76a 100644
--- a/libavcodec/allcodecs.c
+++ b/libavcodec/allcodecs.c
@@ -826,6 +826,7 @@ extern const FFCodec ff_libuavs3d_decoder;
diff -Naur ffmpeg-7.1.2.old/libavcodec/allcodecs.c ffmpeg-7.1.2/libavcodec/allcodecs.c
--- ffmpeg-7.1.2.old/libavcodec/allcodecs.c 2025-10-27 10:07:00.517473357 +0100
+++ ffmpeg-7.1.2/libavcodec/allcodecs.c 2025-10-27 10:07:01.728697010 +0100
@@ -796,6 +796,7 @@
extern const FFCodec ff_libvo_amrwbenc_encoder;
extern const FFCodec ff_libvorbis_encoder;
extern const FFCodec ff_libvorbis_decoder;
@@ -82,11 +44,9 @@ index 695214f..8eaa76a 100644
extern const FFCodec ff_libvpx_vp8_encoder;
extern const FFCodec ff_libvpx_vp8_decoder;
extern FFCodec ff_libvpx_vp9_encoder;
diff --git a/libavcodec/libsvt_vp9.c b/libavcodec/libsvt_vp9.c
new file mode 100644
index 0000000..90ed5cb
--- /dev/null
+++ b/libavcodec/libsvt_vp9.c
diff -Naur ffmpeg-7.1.2.old/libavcodec/libsvt_vp9.c ffmpeg-7.1.2/libavcodec/libsvt_vp9.c
--- ffmpeg-7.1.2.old/libavcodec/libsvt_vp9.c 1970-01-01 01:00:00.000000000 +0100
+++ ffmpeg-7.1.2/libavcodec/libsvt_vp9.c 2025-10-27 10:07:01.729099438 +0100
@@ -0,0 +1,701 @@
+/*
+* Scalable Video Technology for VP9 encoder library plugin
@@ -789,6 +749,14 @@ index 0000000..90ed5cb
+ .defaults = eb_enc_defaults,
+ .p.wrapper_name = "libsvt_vp9",
+};
--
2.54.0
diff -Naur ffmpeg-7.1.2.old/libavcodec/Makefile ffmpeg-7.1.2/libavcodec/Makefile
--- ffmpeg-7.1.2.old/libavcodec/Makefile 2025-10-27 10:07:00.259471080 +0100
+++ ffmpeg-7.1.2/libavcodec/Makefile 2025-10-27 10:07:01.729297932 +0100
@@ -1157,6 +1157,7 @@
OBJS-$(CONFIG_LIBVORBIS_DECODER) += libvorbisdec.o
OBJS-$(CONFIG_LIBVORBIS_ENCODER) += libvorbisenc.o \
vorbis_data.o
+OBJS-$(CONFIG_LIBSVT_VP9_ENCODER) += libsvt_vp9.o
OBJS-$(CONFIG_LIBVPX_VP8_DECODER) += libvpxdec.o
OBJS-$(CONFIG_LIBVPX_VP8_ENCODER) += libvpxenc.o
OBJS-$(CONFIG_LIBVPX_VP9_DECODER) += libvpxdec.o
@@ -1,26 +0,0 @@
From 03ce488cabd436b353aaa4bef1b848493e17317f Mon Sep 17 00:00:00 2001
From: Terra Packaging Team <terra@fyralabs.com>
Date: Sun, 31 May 2026 03:08:52 -0500
Subject: [PATCH] Fix VapourSynth dlopen
See: https://bugzilla.redhat.com/show_bug.cgi?id=2345698
---
libavformat/vapoursynth.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libavformat/vapoursynth.c b/libavformat/vapoursynth.c
index 0fa5aff..e6ac20b 100644
--- a/libavformat/vapoursynth.c
+++ b/libavformat/vapoursynth.c
@@ -49,7 +49,7 @@
#else
#include <dlfcn.h>
#define VSSCRIPT_NAME "libvapoursynth-script"
- #define VSSCRIPT_LIB VSSCRIPT_NAME SLIBSUF
+ #define VSSCRIPT_LIB VSSCRIPT_NAME SLIBSUF ".0"
#endif
struct VSState {
--
2.54.0
File diff suppressed because it is too large Load Diff
-5
View File
@@ -1,5 +0,0 @@
let key = get("https://ffmpeg.org/ffmpeg-devel.asc");
let dir = sub(`/[^/]+$`, "", __script_path);
open_file(`${dir}/ffmpeg-devel.asc`, "w").write(key);
sh(`gpg2 --import --import-options import-export,import-minimal ffmpeg-devel.asc > ./ffmpeg.keyring`, #{ "cwd": dir });