forked from pool/ffmpeg-4
[info=9e43e5445b98d8995b81b0fc26eca3b5334fb0e654fa27f34d5f3cd90ff11654]
OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/ffmpeg-4?expand=0&rev=225
This commit is contained in:
commit
96fe7eebe6
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
.osc
|
@ -0,0 +1,47 @@
|
||||
From c3c8f97a9804b4234e97f13b0057ffc2c9af27c0 Mon Sep 17 00:00:00 2001
|
||||
From: Christopher Degawa <christopher.degawa@intel.com>
|
||||
Date: Thu, 20 Oct 2022 22:55:27 -0500
|
||||
Subject: [PATCH] avcodec/libsvtav1: remove compressed_ten_bit_format and
|
||||
simplify alloc_buffer
|
||||
|
||||
compressed_ten_bit_format has been deprecated upstream and has no effect
|
||||
and can be removed. Plus, technically it was never used in the first place
|
||||
since it would require the app (ffmpeg) to set it and do additional
|
||||
processing of the input frames.
|
||||
|
||||
Also simplify alloc_buffer by removing calculations relating to the
|
||||
non-existant processing.
|
||||
|
||||
Signed-off-by: Christopher Degawa <christopher.degawa@intel.com>
|
||||
(cherry picked from commit 031f1561cd286596cdb374da32f8aa816ce3b135)
|
||||
---
|
||||
libavcodec/libsvtav1.c | 10 +++-------
|
||||
1 file changed, 3 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/libsvtav1.c b/libavcodec/libsvtav1.c
|
||||
index cfd93a2484..38777b0fb7 100644
|
||||
--- a/libavcodec/libsvtav1.c
|
||||
+++ b/libavcodec/libsvtav1.c
|
||||
@@ -120,16 +120,12 @@ static int svt_print_error(void *log_ctx, EbErrorType err,
|
||||
|
||||
static int alloc_buffer(EbSvtAv1EncConfiguration *config, SvtContext *svt_enc)
|
||||
{
|
||||
- const int pack_mode_10bit =
|
||||
- (config->encoder_bit_depth > 8) && (config->compressed_ten_bit_format == 0) ? 1 : 0;
|
||||
- const size_t luma_size_8bit =
|
||||
- config->source_width * config->source_height * (1 << pack_mode_10bit);
|
||||
- const size_t luma_size_10bit =
|
||||
- (config->encoder_bit_depth > 8 && pack_mode_10bit == 0) ? luma_size_8bit : 0;
|
||||
+ const size_t luma_size = config->source_width * config->source_height *
|
||||
+ (config->encoder_bit_depth > 8 ? 2 : 1);
|
||||
|
||||
EbSvtIOFormat *in_data;
|
||||
|
||||
- svt_enc->raw_size = (luma_size_8bit + luma_size_10bit) * 3 / 2;
|
||||
+ svt_enc->raw_size = luma_size * 3 / 2;
|
||||
|
||||
// allocate buffer for in and out
|
||||
svt_enc->in_buf = av_mallocz(sizeof(*svt_enc->in_buf));
|
||||
--
|
||||
2.41.0
|
||||
|
@ -0,0 +1,76 @@
|
||||
From effadce6c756247ea8bae32dc13bb3e6f464f0eb Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
|
||||
Date: Sun, 16 Jul 2023 18:18:02 +0300
|
||||
Subject: [PATCH] avcodec/x86/mathops: clip constants used with shift
|
||||
instructions within inline assembly
|
||||
|
||||
Fixes assembling with binutil as >= 2.41
|
||||
|
||||
Signed-off-by: James Almer <jamrial@gmail.com>
|
||||
---
|
||||
libavcodec/x86/mathops.h | 26 +++++++++++++++++++++++---
|
||||
1 file changed, 23 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/x86/mathops.h b/libavcodec/x86/mathops.h
|
||||
index 6298f5ed19..ca7e2dffc1 100644
|
||||
--- a/libavcodec/x86/mathops.h
|
||||
+++ b/libavcodec/x86/mathops.h
|
||||
@@ -35,12 +35,20 @@
|
||||
static av_always_inline av_const int MULL(int a, int b, unsigned shift)
|
||||
{
|
||||
int rt, dummy;
|
||||
+ if (__builtin_constant_p(shift))
|
||||
__asm__ (
|
||||
"imull %3 \n\t"
|
||||
"shrdl %4, %%edx, %%eax \n\t"
|
||||
:"=a"(rt), "=d"(dummy)
|
||||
- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
|
||||
+ :"a"(a), "rm"(b), "i"(shift & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ (
|
||||
+ "imull %3 \n\t"
|
||||
+ "shrdl %4, %%edx, %%eax \n\t"
|
||||
+ :"=a"(rt), "=d"(dummy)
|
||||
+ :"a"(a), "rm"(b), "c"((uint8_t)shift)
|
||||
+ );
|
||||
return rt;
|
||||
}
|
||||
|
||||
@@ -113,19 +121,31 @@ __asm__ volatile(\
|
||||
// avoid +32 for shift optimization (gcc should do that ...)
|
||||
#define NEG_SSR32 NEG_SSR32
|
||||
static inline int32_t NEG_SSR32( int32_t a, int8_t s){
|
||||
+ if (__builtin_constant_p(s))
|
||||
__asm__ ("sarl %1, %0\n\t"
|
||||
: "+r" (a)
|
||||
- : "ic" ((uint8_t)(-s))
|
||||
+ : "i" (-s & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ ("sarl %1, %0\n\t"
|
||||
+ : "+r" (a)
|
||||
+ : "c" ((uint8_t)(-s))
|
||||
+ );
|
||||
return a;
|
||||
}
|
||||
|
||||
#define NEG_USR32 NEG_USR32
|
||||
static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
|
||||
+ if (__builtin_constant_p(s))
|
||||
__asm__ ("shrl %1, %0\n\t"
|
||||
: "+r" (a)
|
||||
- : "ic" ((uint8_t)(-s))
|
||||
+ : "i" (-s & 0x1F)
|
||||
);
|
||||
+ else
|
||||
+ __asm__ ("shrl %1, %0\n\t"
|
||||
+ : "+r" (a)
|
||||
+ : "c" ((uint8_t)(-s))
|
||||
+ );
|
||||
return a;
|
||||
}
|
||||
|
||||
--
|
||||
2.42.0
|
||||
|
29
0001-avfilter-af_stereowiden-Check-length.patch
Normal file
29
0001-avfilter-af_stereowiden-Check-length.patch
Normal file
@ -0,0 +1,29 @@
|
||||
From 50f0f8c53c818f73fe2d752708e2fa9d2a2d8a07 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Niedermayer <michael@niedermayer.cc>
|
||||
Date: Sat, 23 Dec 2023 04:03:01 +0100
|
||||
Subject: [PATCH] avfilter/af_stereowiden: Check length
|
||||
References: https://bugzilla.opensuse.org/1223437
|
||||
References: CVE-2023-51794
|
||||
|
||||
Fixes: out of array access
|
||||
Fixes: tickets/10746/poc13ffmpeg
|
||||
|
||||
Found-by: Zeng Yunxiang
|
||||
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
|
||||
---
|
||||
libavfilter/af_stereowiden.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
Index: ffmpeg-4.4.4/libavfilter/af_stereowiden.c
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.4.orig/libavfilter/af_stereowiden.c
|
||||
+++ ffmpeg-4.4.4/libavfilter/af_stereowiden.c
|
||||
@@ -75,6 +75,8 @@ static int config_input(AVFilterLink *in
|
||||
|
||||
s->length = s->delay * inlink->sample_rate / 1000;
|
||||
s->length *= 2;
|
||||
+ if (s->length == 0)
|
||||
+ return AVERROR(EINVAL);
|
||||
s->buffer = av_calloc(s->length, sizeof(*s->buffer));
|
||||
if (!s->buffer)
|
||||
return AVERROR(ENOMEM);
|
@ -0,0 +1,40 @@
|
||||
From 68146f06f852078866b3ef1564556e3a272920c7 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Niedermayer <michael@niedermayer.cc>
|
||||
Date: Sat, 30 Dec 2023 02:51:32 +0100
|
||||
Subject: [PATCH] avfilter/vf_minterpolate: Check pts before division
|
||||
References: https://bugzilla.opensuse.org/1223304
|
||||
References: CVE-2023-51798
|
||||
|
||||
Fixes: FPE
|
||||
Fixes: tickets/10758/poc20ffmpeg
|
||||
|
||||
Discovered by Zeng Yunxiang
|
||||
|
||||
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
|
||||
---
|
||||
libavfilter/vf_minterpolate.c | 9 +++++++--
|
||||
1 file changed, 7 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libavfilter/vf_minterpolate.c b/libavfilter/vf_minterpolate.c
|
||||
index 9920210ece..b2242a15ee 100644
|
||||
--- a/libavfilter/vf_minterpolate.c
|
||||
+++ b/libavfilter/vf_minterpolate.c
|
||||
@@ -1075,8 +1075,13 @@ static void interpolate(AVFilterLink *inlink, AVFrame *avf_out)
|
||||
pts = av_rescale(avf_out->pts, (int64_t) ALPHA_MAX * outlink->time_base.num * inlink->time_base.den,
|
||||
(int64_t) outlink->time_base.den * inlink->time_base.num);
|
||||
|
||||
- alpha = (pts - mi_ctx->frames[1].avf->pts * ALPHA_MAX) / (mi_ctx->frames[2].avf->pts - mi_ctx->frames[1].avf->pts);
|
||||
- alpha = av_clip(alpha, 0, ALPHA_MAX);
|
||||
+ if (mi_ctx->frames[2].avf->pts > mi_ctx->frames[1].avf->pts) {
|
||||
+ alpha = (pts - mi_ctx->frames[1].avf->pts * ALPHA_MAX) / (mi_ctx->frames[2].avf->pts - mi_ctx->frames[1].avf->pts);
|
||||
+ alpha = av_clip(alpha, 0, ALPHA_MAX);
|
||||
+ } else {
|
||||
+ av_log(ctx, AV_LOG_DEBUG, "duplicate input PTS detected\n");
|
||||
+ alpha = 0;
|
||||
+ }
|
||||
|
||||
if (alpha == 0 || alpha == ALPHA_MAX) {
|
||||
av_frame_copy(avf_out, alpha ? mi_ctx->frames[2].avf : mi_ctx->frames[1].avf);
|
||||
--
|
||||
2.44.0
|
||||
|
@ -0,0 +1,46 @@
|
||||
From 3bb00c0a420c3ce83c6fafee30270d69622ccad7 Mon Sep 17 00:00:00 2001
|
||||
From: Zhao Zhili <zhilizhao@tencent.com>
|
||||
Date: Tue, 20 Feb 2024 20:08:55 +0800
|
||||
Subject: [PATCH] avutil/hwcontext: Don't assume frames_uninit is reentrant
|
||||
References: https://bugzilla.opensuse.org/1223070
|
||||
References: CVE-2024-31578
|
||||
|
||||
Fix heap use after free when vulkan_frames_init failed.
|
||||
|
||||
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
|
||||
---
|
||||
libavutil/hwcontext.c | 8 ++------
|
||||
1 file changed, 2 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/libavutil/hwcontext.c b/libavutil/hwcontext.c
|
||||
index 1d2c2d7920..aa1329bf2b 100644
|
||||
--- a/libavutil/hwcontext.c
|
||||
+++ b/libavutil/hwcontext.c
|
||||
@@ -359,7 +359,7 @@ int av_hwframe_ctx_init(AVBufferRef *ref)
|
||||
if (ctx->internal->hw_type->frames_init) {
|
||||
ret = ctx->internal->hw_type->frames_init(ctx);
|
||||
if (ret < 0)
|
||||
- goto fail;
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
if (ctx->internal->pool_internal && !ctx->pool)
|
||||
@@ -369,14 +369,10 @@ int av_hwframe_ctx_init(AVBufferRef *ref)
|
||||
if (ctx->initial_pool_size > 0) {
|
||||
ret = hwframe_pool_prealloc(ref);
|
||||
if (ret < 0)
|
||||
- goto fail;
|
||||
+ return ret;
|
||||
}
|
||||
|
||||
return 0;
|
||||
-fail:
|
||||
- if (ctx->internal->hw_type->frames_uninit)
|
||||
- ctx->internal->hw_type->frames_uninit(ctx);
|
||||
- return ret;
|
||||
}
|
||||
|
||||
int av_hwframe_transfer_get_formats(AVBufferRef *hwframe_ref,
|
||||
--
|
||||
2.44.0
|
||||
|
@ -0,0 +1,58 @@
|
||||
From 654bd47716c4f36719fb0f3f7fd8386d5ed0b916 Mon Sep 17 00:00:00 2001
|
||||
From: Ross Burton <ross.burton@arm.com>
|
||||
Date: Fri, 9 Aug 2024 11:32:00 +0100
|
||||
Subject: [PATCH] libavcodec/arm/mlpdsp_armv5te: fix label format to work with
|
||||
binutils 2.43
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
binutils 2.43 has stricter validation for labels[1] and results in errors
|
||||
when building ffmpeg for armv5:
|
||||
|
||||
src/libavcodec/arm/mlpdsp_armv5te.S:232: Error: junk at end of line, first unrecognized character is `0'
|
||||
|
||||
Remove the leading zero in the "01" label to resolve this error.
|
||||
|
||||
[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=226749d5a6ff0d5c607d6428d6c81e1e7e7a994b
|
||||
|
||||
Signed-off-by: Ross Burton <ross.burton@arm.com>
|
||||
Signed-off-by: Martin Storsjö <martin@martin.st>
|
||||
---
|
||||
libavcodec/arm/mlpdsp_armv5te.S | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/libavcodec/arm/mlpdsp_armv5te.S b/libavcodec/arm/mlpdsp_armv5te.S
|
||||
index 4f9aa485fd..d31568611c 100644
|
||||
--- a/libavcodec/arm/mlpdsp_armv5te.S
|
||||
+++ b/libavcodec/arm/mlpdsp_armv5te.S
|
||||
@@ -229,7 +229,7 @@ A .endif
|
||||
.endif
|
||||
|
||||
// Begin loop
|
||||
-01:
|
||||
+1:
|
||||
.if TOTAL_TAPS == 0
|
||||
// Things simplify a lot in this case
|
||||
// In fact this could be pipelined further if it's worth it...
|
||||
@@ -241,7 +241,7 @@ A .endif
|
||||
str ST0, [PST, #-4]!
|
||||
str ST0, [PST, #4 * (MAX_BLOCKSIZE + MAX_FIR_ORDER)]
|
||||
str ST0, [PSAMP], #4 * MAX_CHANNELS
|
||||
- bne 01b
|
||||
+ bne 1b
|
||||
.else
|
||||
.if \fir_taps & 1
|
||||
.set LOAD_REG, 1
|
||||
@@ -333,7 +333,7 @@ T orr AC0, AC0, AC1
|
||||
str ST3, [PST, #-4]!
|
||||
str ST2, [PST, #4 * (MAX_BLOCKSIZE + MAX_FIR_ORDER)]
|
||||
str ST3, [PSAMP], #4 * MAX_CHANNELS
|
||||
- bne 01b
|
||||
+ bne 1b
|
||||
.endif
|
||||
b 99f
|
||||
|
||||
--
|
||||
2.46.0
|
||||
|
4
_scmsync.obsinfo
Normal file
4
_scmsync.obsinfo
Normal file
@ -0,0 +1,4 @@
|
||||
mtime: 1724842934
|
||||
commit: 9e43e5445b98d8995b81b0fc26eca3b5334fb0e654fa27f34d5f3cd90ff11654
|
||||
url: https://src.opensuse.org/jengelh/ffmpeg-4
|
||||
revision: master
|
11
baselibs.conf
Normal file
11
baselibs.conf
Normal file
@ -0,0 +1,11 @@
|
||||
libavcodec58_134
|
||||
libavdevice58_13
|
||||
libavfilter7_110
|
||||
libavformat58_76
|
||||
libavresample4_0
|
||||
obsoletes "libavresample4-<targettype> < <version>"
|
||||
provides "libavresample4-<targettype> = <version>"
|
||||
libavutil56_70
|
||||
libpostproc55_9
|
||||
libswresample3_9
|
||||
libswscale5_9
|
BIN
build.specials.obscpio
(Stored with Git LFS)
Normal file
BIN
build.specials.obscpio
(Stored with Git LFS)
Normal file
Binary file not shown.
480
enable_decoders
Normal file
480
enable_decoders
Normal file
@ -0,0 +1,480 @@
|
||||
## module name # reason for enablement in ffmpeg (usually there is another package that already got legal review)
|
||||
aac
|
||||
aasc
|
||||
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
|
||||
alac
|
||||
alias_pix
|
||||
amrnb # opencore-amr
|
||||
amrwb # opencore-amr
|
||||
amv
|
||||
anm
|
||||
ansi # trivial
|
||||
anull
|
||||
apac
|
||||
ape
|
||||
apng # animated png
|
||||
arbc
|
||||
argo
|
||||
ass # trivial
|
||||
asv1
|
||||
asv2
|
||||
atrac1
|
||||
atrac3
|
||||
atrac3al
|
||||
atrac3p
|
||||
atrac3pal
|
||||
aura
|
||||
aura2
|
||||
av1 # libaom
|
||||
av1_nvdec # passthrough
|
||||
av1_qsv # passthrough
|
||||
av1_vaapi # passthrough
|
||||
ayuv # trivial
|
||||
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
|
||||
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 # passthrough
|
||||
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
|
||||
libaom # libaom
|
||||
libaom_av1 # libaom
|
||||
libcodec2 # codec2
|
||||
libdav1d # av1
|
||||
libgsm # libgsm
|
||||
libgsm_ms # libgsm
|
||||
libjxl # libjxl
|
||||
libopencore_amrnb # opencore-amr
|
||||
libopencore_amrwb # opencore-amr
|
||||
libopenh264 # passthrough/dlopen
|
||||
libopenjpeg # openjpeg
|
||||
libopus # opus
|
||||
libschroedinger # schroedinger
|
||||
libspeex # speex
|
||||
libvorbis # libvorbis
|
||||
libvpx_vp8 # libvpx
|
||||
libvpx_vp9 # libvpx
|
||||
libzvbi_teletext # zvbi
|
||||
loco
|
||||
lscr
|
||||
m101
|
||||
mace3
|
||||
mace6
|
||||
mdec
|
||||
media100
|
||||
metasound
|
||||
microdvd
|
||||
mimic
|
||||
misc4
|
||||
mjpeg # mjpegtools
|
||||
mjpeg_qsv # passthrough
|
||||
mjpegb
|
||||
mlp
|
||||
mmvideo
|
||||
motionpixels
|
||||
mp1 # twolame/lame
|
||||
mp1float # twolame/lame
|
||||
mp2 # twolame
|
||||
mp2float # twolame
|
||||
mp3 # lame
|
||||
mp3adu
|
||||
mp3adufloat
|
||||
mp3float # lame
|
||||
mp3on4
|
||||
mp3on4float
|
||||
mpc7
|
||||
mpc8
|
||||
mpeg1_cuvid # passthrough
|
||||
mpeg1_v4l2m2m # passthrough
|
||||
mpeg1video
|
||||
mpeg2_cuvid # passthrough
|
||||
mpeg2_qsv # passthrough
|
||||
mpeg2_v4l2m2m # passthrough
|
||||
mpeg2_vaapi # passthrough
|
||||
mpeg2video
|
||||
mpeg4
|
||||
mpeg4_cuvid # passthrough
|
||||
mpeg4_v4l2m2m # passthrough
|
||||
mpegvideo
|
||||
mpl2
|
||||
msa1
|
||||
mscc
|
||||
msmpeg4
|
||||
msmpeg4v1
|
||||
msmpeg4v2
|
||||
msmpeg4v3
|
||||
msnsiren
|
||||
msp2
|
||||
msrle
|
||||
mss1
|
||||
msvideo1
|
||||
mszh
|
||||
mts2
|
||||
mv30
|
||||
mvc1
|
||||
mvc2
|
||||
mvdv
|
||||
mvha
|
||||
mwsc
|
||||
mxpeg
|
||||
nellymoser
|
||||
nuv
|
||||
on2avc
|
||||
opus # opus
|
||||
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_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
|
||||
prosumer
|
||||
psd
|
||||
ptx
|
||||
qcelp
|
||||
qdm2
|
||||
qdmc
|
||||
qdraw
|
||||
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 # 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 # trivial
|
||||
vorbis # libvorbis
|
||||
vp3 # libav
|
||||
vp4 # libav
|
||||
vp5 # libav
|
||||
vp5 # libav
|
||||
vp6 # libav
|
||||
vp6 # libav
|
||||
vp6a # libav
|
||||
vp6a # libav
|
||||
vp6f # libav
|
||||
vp6f # libav
|
||||
vp7 # libav
|
||||
vp8 # libvpx
|
||||
vp8_qsv # passthrough
|
||||
vp8_v4l2m2m # passthrough
|
||||
vp9 # libvpx
|
||||
vp9_qsv # passthrough
|
||||
vp9_v4l2m2m # passthrough
|
||||
vplayer
|
||||
vqa
|
||||
vqc
|
||||
wady_dpcm
|
||||
wavarc
|
||||
wavpack # 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
|
||||
y41p # trivial
|
||||
ylc
|
||||
yop
|
||||
yuv4 # trivial
|
||||
yuv4 # trivial
|
||||
zero12v
|
||||
zerocodec
|
||||
zlib # zlib
|
||||
zmbv # dosbox
|
195
enable_encoders
Normal file
195
enable_encoders
Normal file
@ -0,0 +1,195 @@
|
||||
## module name # reason for enablement in ffmpeg (usually there is another package that already got legal review)
|
||||
a64multi
|
||||
a64multi5
|
||||
aac
|
||||
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_nvenc
|
||||
av1_vaapi
|
||||
ayuv # trival
|
||||
bitpacked # trivial
|
||||
bmp # trivial
|
||||
cinepak
|
||||
cljr
|
||||
dca
|
||||
dfpwm
|
||||
dnxhd
|
||||
dpx
|
||||
dvdsub
|
||||
dvvideo
|
||||
exr
|
||||
ffv1
|
||||
ffvhuff # trivial+zlib
|
||||
flac # libFLAC
|
||||
flashsv
|
||||
flashsv2
|
||||
flv
|
||||
g723_1
|
||||
gif # libpng
|
||||
h261
|
||||
h263
|
||||
h263_v4l2m2m # passthrough
|
||||
h263p
|
||||
hdr
|
||||
huffyuv # trivial+zlib
|
||||
ilbc # ilbc
|
||||
jpeg2000
|
||||
jpegls
|
||||
libaom # libaom
|
||||
libaom_av1 # libaom
|
||||
libcodec2 # codec2
|
||||
libgsm # libgsm
|
||||
libgsm_ms # libgsm
|
||||
libjxl # libjxl
|
||||
libmp3lame # lame
|
||||
libopencore_amrnb # opencore-amr
|
||||
libopenh264 # passthrough/dlopen
|
||||
libopenjpeg # openjpeg
|
||||
libopus # opus
|
||||
librav1e # rav1e
|
||||
libschroedinger # schroedinger
|
||||
libspeex # speex
|
||||
libsvtav1 # SVT-AV1
|
||||
libtheora # libtheora
|
||||
libtwolame # twolame
|
||||
libvo_amrwbenc # vo-amrwbenc
|
||||
libvorbis # libvorbis
|
||||
libvpx_vp8 # libvpx
|
||||
libvpx_vp9 # libvpx
|
||||
libwebp # libwebp
|
||||
libwebp_anim # libwebp
|
||||
libxvid # xvidcore
|
||||
mjpeg # mjpegtools
|
||||
mjpeg_qsv # passthrough
|
||||
mjpeg_vaapi # passthrough
|
||||
mlp
|
||||
mp2 # twolame
|
||||
mp2fixed # twolame
|
||||
mpeg1video
|
||||
mpeg2_qsv
|
||||
mpeg2_vaapi
|
||||
mpeg2video
|
||||
mpeg4
|
||||
mpeg4_v4l2m2m # passthrough
|
||||
msmpeg4v1
|
||||
msmpeg4v2
|
||||
msmpeg4v3
|
||||
msnsiren
|
||||
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
|
||||
qoi
|
||||
qtrle
|
||||
r10k # trivial
|
||||
r210 # trivial
|
||||
ra_144
|
||||
rawvideo # trivial
|
||||
roq
|
||||
roq_dpcm
|
||||
rpza
|
||||
rv10
|
||||
rv20
|
||||
s302m
|
||||
sbc
|
||||
sgi # trivial
|
||||
siren
|
||||
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
|
||||
vc2 # dirac
|
||||
vnull # trivial
|
||||
vorbis # libvorbis
|
||||
vp8_qsv # passthrough
|
||||
vp8_v4l2m2m # passthrough
|
||||
vp8_vaapi # passthrough
|
||||
vp9_qsv # passthrough
|
||||
vp9_vaapi # passthough
|
||||
wavpack
|
||||
wbmp
|
||||
webvtt # trivial
|
||||
wmav1
|
||||
wmav2
|
||||
wmv1
|
||||
wmv2
|
||||
wrapped_avframe # passthrough
|
||||
xbm # trivial
|
||||
xface
|
||||
xsub
|
||||
xwd # xwd
|
||||
y41p # trivial
|
||||
yuv4 # trivial
|
||||
zlib # zlib
|
||||
zmbv # dosbox
|
23
ffmpeg-4-CVE-2024-32230.patch
Normal file
23
ffmpeg-4-CVE-2024-32230.patch
Normal file
@ -0,0 +1,23 @@
|
||||
commit 96449cfeaeb95fcfd7a2b8d9ccf7719e97471ed1
|
||||
Author: Michael Niedermayer <michael@niedermayer.cc>
|
||||
Date: Mon Apr 8 18:38:42 2024 +0200
|
||||
|
||||
avcodec/mpegvideo_enc: Fix 1 line and one column images
|
||||
|
||||
Fixes: Ticket10952
|
||||
Fixes: poc21ffmpeg
|
||||
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
|
||||
|
||||
--- ffmpeg-4.4.4/libavcodec/mpegvideo_enc.c
|
||||
+++ ffmpeg-4.4.4_new/libavcodec/mpegvideo_enc.c
|
||||
@@ -1263,8 +1263,8 @@
|
||||
int dst_stride = i ? s->uvlinesize : s->linesize;
|
||||
int h_shift = i ? h_chroma_shift : 0;
|
||||
int v_shift = i ? v_chroma_shift : 0;
|
||||
- int w = s->width >> h_shift;
|
||||
- int h = s->height >> v_shift;
|
||||
+ int w = AV_CEIL_RSHIFT(s->width , h_shift);
|
||||
+ int h = AV_CEIL_RSHIFT(s->height, v_shift);
|
||||
uint8_t *src = pic_arg->data[i];
|
||||
uint8_t *dst = pic->f->data[i];
|
||||
int vpad = 16;
|
7
ffmpeg-4-rpmlintrc
Normal file
7
ffmpeg-4-rpmlintrc
Normal file
@ -0,0 +1,7 @@
|
||||
# manpages for such executables aren't supplied
|
||||
addFilter("no-manual-page-for-binary")
|
||||
|
||||
# our libraries really have those names and versions
|
||||
addFilter("shlib-fixed-dependency")
|
||||
addFilter("no-dependency-on libffmpeg.*")
|
||||
addFilter("no-dependency-on ffmpeg-4-lib*")
|
181
ffmpeg-4.2-dlopen-fdk_aac.patch
Normal file
181
ffmpeg-4.2-dlopen-fdk_aac.patch
Normal file
@ -0,0 +1,181 @@
|
||||
Index: ffmpeg-4.4.3/configure
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.3.orig/configure
|
||||
+++ ffmpeg-4.4.3/configure
|
||||
@@ -232,6 +232,7 @@ External library support:
|
||||
--enable-libdc1394 enable IIDC-1394 grabbing using libdc1394
|
||||
and libraw1394 [no]
|
||||
--enable-libfdk-aac enable AAC de/encoding via libfdk-aac [no]
|
||||
+ --enable-libfdk-aac-dlopen enable AAC de/encoding via dlopen()'ed libfdk-aac [no]
|
||||
--enable-libflite enable flite (voice synthesis) support via libflite [no]
|
||||
--enable-libfontconfig enable libfontconfig, useful for drawtext filter [no]
|
||||
--enable-libfreetype enable libfreetype, needed for drawtext filter [no]
|
||||
@@ -1735,6 +1736,7 @@ EXTERNAL_LIBRARY_GPL_LIST="
|
||||
EXTERNAL_LIBRARY_NONFREE_LIST="
|
||||
decklink
|
||||
libfdk_aac
|
||||
+ libfdk_aac_dlopen
|
||||
openssl
|
||||
libtls
|
||||
"
|
||||
@@ -6368,6 +6370,7 @@ enabled libdrm && require_pkg
|
||||
enabled libfdk_aac && { check_pkg_config libfdk_aac fdk-aac "fdk-aac/aacenc_lib.h" aacEncOpen ||
|
||||
{ require libfdk_aac fdk-aac/aacenc_lib.h aacEncOpen -lfdk-aac &&
|
||||
warn "using libfdk without pkg-config"; } }
|
||||
+enabled libfdk_aac_dlopen && enable libfdk_aac && add_cppflags "-I/usr/include/fdk-aac"
|
||||
flite_extralibs="-lflite_cmu_time_awb -lflite_cmu_us_awb -lflite_cmu_us_kal -lflite_cmu_us_kal16 -lflite_cmu_us_rms -lflite_cmu_us_slt -lflite_usenglish -lflite_cmulex -lflite"
|
||||
enabled libflite && require libflite "flite/flite.h" flite_init $flite_extralibs
|
||||
enabled fontconfig && enable libfontconfig
|
||||
Index: ffmpeg-4.4.3/libavcodec/dlopen.h
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ ffmpeg-4.4.3/libavcodec/dlopen.h
|
||||
@@ -0,0 +1,12 @@
|
||||
+#ifndef LOCALINC_DLOPEN_H
|
||||
+#define LOCALINC_DLOPEN_H
|
||||
+#include <dlfcn.h>
|
||||
+#define num2str(x) str(x)
|
||||
+#define str(x) #x
|
||||
+
|
||||
+#define dl_sym(func, args, lib) \
|
||||
+ dl_##func = args dlsym(lib, #func); \
|
||||
+ if ((err = dlerror())) \
|
||||
+ goto error;
|
||||
+
|
||||
+#endif
|
||||
Index: ffmpeg-4.4.3/libavcodec/libfdk-aacdec.c
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.3.orig/libavcodec/libfdk-aacdec.c
|
||||
+++ ffmpeg-4.4.3/libavcodec/libfdk-aacdec.c
|
||||
@@ -37,6 +37,54 @@
|
||||
#define AAC_PCM_MAX_OUTPUT_CHANNELS AAC_PCM_OUTPUT_CHANNELS
|
||||
#endif
|
||||
|
||||
+#ifdef CONFIG_LIBFDK_AAC_DLOPEN
|
||||
+#include "dlopen.h"
|
||||
+AAC_DECODER_ERROR (*dl_aacDecoder_AncDataInit)(HANDLE_AACDECODER, UCHAR*, int);
|
||||
+HANDLE_AACDECODER (*dl_aacDecoder_Open)(TRANSPORT_TYPE, UINT);
|
||||
+AAC_DECODER_ERROR (*dl_aacDecoder_Fill)(HANDLE_AACDECODER, UCHAR**, const UINT*, UINT*);
|
||||
+AAC_DECODER_ERROR (*dl_aacDecoder_ConfigRaw)(HANDLE_AACDECODER, UCHAR **, const UINT*);
|
||||
+AAC_DECODER_ERROR (*dl_aacDecoder_SetParam)(const HANDLE_AACDECODER, const AACDEC_PARAM, const INT);
|
||||
+AAC_DECODER_ERROR (*dl_aacDecoder_DecodeFrame)(HANDLE_AACDECODER, INT_PCM*, const INT, const UINT);
|
||||
+CStreamInfo* (*dl_aacDecoder_GetStreamInfo)(HANDLE_AACDECODER);
|
||||
+void (*dl_aacDecoder_Close)(HANDLE_AACDECODER);
|
||||
+#define aacDecoder_AncDataInit dl_aacDecoder_AncDataInit
|
||||
+#define aacDecoder_Open dl_aacDecoder_Open
|
||||
+#define aacDecoder_Fill dl_aacDecoder_Fill
|
||||
+#define aacDecoder_ConfigRaw dl_aacDecoder_ConfigRaw
|
||||
+#define aacDecoder_SetParam dl_aacDecoder_SetParam
|
||||
+#define aacDecoder_DecodeFrame dl_aacDecoder_DecodeFrame
|
||||
+#define aacDecoder_GetStreamInfo dl_aacDecoder_GetStreamInfo
|
||||
+#define aacDecoder_Close dl_aacDecoder_Close
|
||||
+#define FDKAAC_LIB "libfdk-aac.so.2"
|
||||
+static int loadLibFdkAac(AVCodecContext *avctx);
|
||||
+static int loadLibFdkAac(AVCodecContext *avctx) {
|
||||
+ void *libfdkaac = NULL;
|
||||
+ const char *err = NULL;
|
||||
+
|
||||
+ libfdkaac = dlopen(FDKAAC_LIB, RTLD_LAZY);
|
||||
+ if(err = dlerror()) {
|
||||
+ av_log(avctx, AV_LOG_FATAL, "%s\n%s is missing, libfdk-aac support will be disabled\n", err, FDKAAC_LIB);
|
||||
+ if(libfdkaac)
|
||||
+ dlclose(libfdkaac);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ dl_sym(aacDecoder_AncDataInit, (AAC_DECODER_ERROR (*)(HANDLE_AACDECODER, UCHAR*, int)), libfdkaac);
|
||||
+ dl_sym(aacDecoder_Open, (HANDLE_AACDECODER (*)(TRANSPORT_TYPE, UINT)), libfdkaac);
|
||||
+ dl_sym(aacDecoder_Fill, (AAC_DECODER_ERROR (*)(HANDLE_AACDECODER, UCHAR**, const UINT*, UINT*)), libfdkaac);
|
||||
+ dl_sym(aacDecoder_ConfigRaw, (AAC_DECODER_ERROR (*)(HANDLE_AACDECODER, UCHAR**, const UINT*)), libfdkaac);
|
||||
+ dl_sym(aacDecoder_SetParam, (AAC_DECODER_ERROR (*)(const HANDLE_AACDECODER, const AACDEC_PARAM, const INT)), libfdkaac);
|
||||
+ dl_sym(aacDecoder_DecodeFrame, (AAC_DECODER_ERROR (*)(HANDLE_AACDECODER, INT_PCM*, const INT, const UINT)), libfdkaac);
|
||||
+ dl_sym(aacDecoder_GetStreamInfo, (CStreamInfo* (*)(HANDLE_AACDECODER)), libfdkaac);
|
||||
+ dl_sym(aacDecoder_Close, (void (*)(HANDLE_AACDECODER)), libfdkaac);
|
||||
+ return 0;
|
||||
+error:
|
||||
+ av_log(avctx, AV_LOG_FATAL, "libfdk-aac: Missing symbols in %s: %s\n"
|
||||
+ "libfdk-aac support disabled\n", FDKAAC_LIB, err);
|
||||
+ dlclose(libfdkaac);
|
||||
+ return 1;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
enum ConcealMethod {
|
||||
CONCEAL_METHOD_SPECTRAL_MUTING = 0,
|
||||
CONCEAL_METHOD_NOISE_SUBSTITUTION = 1,
|
||||
@@ -229,6 +277,11 @@ static av_cold int fdk_aac_decode_init(A
|
||||
FDKAACDecContext *s = avctx->priv_data;
|
||||
AAC_DECODER_ERROR err;
|
||||
|
||||
+#ifdef CONFIG_LIBFDK_AAC_DLOPEN
|
||||
+ if (loadLibFdkAac(avctx))
|
||||
+ return -1;
|
||||
+#endif
|
||||
+
|
||||
s->handle = aacDecoder_Open(avctx->extradata_size ? TT_MP4_RAW : TT_MP4_ADTS, 1);
|
||||
if (!s->handle) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Error opening decoder\n");
|
||||
Index: ffmpeg-4.4.3/libavcodec/libfdk-aacenc.c
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.3.orig/libavcodec/libfdk-aacenc.c
|
||||
+++ ffmpeg-4.4.3/libavcodec/libfdk-aacenc.c
|
||||
@@ -35,6 +35,48 @@
|
||||
#define FDKENC_VER_AT_LEAST(vl0, vl1) 0
|
||||
#endif
|
||||
|
||||
+#ifdef CONFIG_LIBFDK_AAC_DLOPEN
|
||||
+#include "dlopen.h"
|
||||
+#include <fdk-aac/aacdecoder_lib.h>
|
||||
+AACENC_ERROR (*dl_aacEncOpen)(HANDLE_AACENCODER*, const UINT, const UINT);
|
||||
+AACENC_ERROR (*dl_aacEncoder_SetParam)(const HANDLE_AACENCODER, const AACENC_PARAM, const UINT);
|
||||
+AACENC_ERROR (*dl_aacEncEncode)(const HANDLE_AACENCODER, const AACENC_BufDesc*, const AACENC_BufDesc*, const AACENC_InArgs*, AACENC_OutArgs*);
|
||||
+AACENC_ERROR (*dl_aacEncInfo)(const HANDLE_AACENCODER, AACENC_InfoStruct*);
|
||||
+AACENC_ERROR (*dl_aacEncClose)(HANDLE_AACENCODER*);
|
||||
+
|
||||
+#define aacEncOpen dl_aacEncOpen
|
||||
+#define aacEncoder_SetParam dl_aacEncoder_SetParam
|
||||
+#define aacEncEncode dl_aacEncEncode
|
||||
+#define aacEncInfo dl_aacEncInfo
|
||||
+#define aacEncClose dl_aacEncClose
|
||||
+#define FDKAAC_LIB "libfdk-aac.so.2"
|
||||
+
|
||||
+static int loadLibFdkAac(AVCodecContext *avctx);
|
||||
+static int loadLibFdkAac(AVCodecContext *avctx) {
|
||||
+ void *libfdkaac = NULL;
|
||||
+ const char *err = NULL;
|
||||
+
|
||||
+ libfdkaac = dlopen(FDKAAC_LIB, RTLD_LAZY);
|
||||
+ if(err = dlerror()) {
|
||||
+ av_log(avctx, AV_LOG_FATAL, "%s\n%s is missing, libfdk-aac support will be disabled\n", err, FDKAAC_LIB);
|
||||
+ if(libfdkaac)
|
||||
+ dlclose(libfdkaac);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ dl_sym(aacEncOpen, (AACENC_ERROR (*)(HANDLE_AACENCODER*, const UINT, const UINT)), libfdkaac);
|
||||
+ dl_sym(aacEncoder_SetParam, (AACENC_ERROR (*)(const HANDLE_AACENCODER, const AACENC_PARAM, const UINT)), libfdkaac);
|
||||
+ dl_sym(aacEncEncode, (AACENC_ERROR (*)(const HANDLE_AACENCODER, const AACENC_BufDesc*, const AACENC_BufDesc*, const AACENC_InArgs*, AACENC_OutArgs*)), libfdkaac);
|
||||
+ dl_sym(aacEncInfo, (AACENC_ERROR (*)(const HANDLE_AACENCODER, AACENC_InfoStruct*)), libfdkaac);
|
||||
+ dl_sym(aacEncClose, (AACENC_ERROR (*)(HANDLE_AACENCODER*)), libfdkaac);
|
||||
+ return 0;
|
||||
+error:
|
||||
+ av_log(avctx, AV_LOG_FATAL, "libfdk-aac: Missing symbols in %s: %s\n"
|
||||
+ "libfdk-aac support disabled\n", FDKAAC_LIB, err);
|
||||
+ dlclose(libfdkaac);
|
||||
+ return 1;
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
typedef struct AACContext {
|
||||
const AVClass *class;
|
||||
HANDLE_AACENCODER handle;
|
||||
@@ -128,6 +170,11 @@ static av_cold int aac_encode_init(AVCod
|
||||
int aot = FF_PROFILE_AAC_LOW + 1;
|
||||
int sce = 0, cpe = 0;
|
||||
|
||||
+#ifdef CONFIG_LIBFDK_AAC_DLOPEN
|
||||
+ if (loadLibFdkAac(avctx))
|
||||
+ return -1;
|
||||
+#endif
|
||||
+
|
||||
if ((err = aacEncOpen(&s->handle, 0, avctx->channels)) != AACENC_OK) {
|
||||
av_log(avctx, AV_LOG_ERROR, "Unable to open the encoder: %s\n",
|
||||
aac_get_error(err));
|
26
ffmpeg-4.4-CVE-2020-22046.patch
Normal file
26
ffmpeg-4.4-CVE-2020-22046.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From 097c917c147661f5378dae8fe3f7e46f43236426 Mon Sep 17 00:00:00 2001
|
||||
From: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
|
||||
Date: Thu, 17 Oct 2019 11:11:55 +0200
|
||||
Subject: [PATCH] avcodec/ac3enc: Fix memleak
|
||||
|
||||
Fixes ticket #8294.
|
||||
|
||||
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
|
||||
---
|
||||
libavcodec/ac3enc.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: ffmpeg-4.4.1/libavcodec/ac3enc.c
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.1.orig/libavcodec/ac3enc.c
|
||||
+++ ffmpeg-4.4.1/libavcodec/ac3enc.c
|
||||
@@ -2148,7 +2148,8 @@ av_cold int ff_ac3_encode_close(AVCodecC
|
||||
av_freep(&block->cpl_coord_mant);
|
||||
}
|
||||
|
||||
- s->mdct_end(s);
|
||||
+ if (s->mdct_end)
|
||||
+ s->mdct_end(s);
|
||||
|
||||
return 0;
|
||||
}
|
BIN
ffmpeg-4.4.4.tar.xz
(Stored with Git LFS)
Normal file
BIN
ffmpeg-4.4.4.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
11
ffmpeg-4.4.4.tar.xz.asc
Normal file
11
ffmpeg-4.4.4.tar.xz.asc
Normal file
@ -0,0 +1,11 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQFMBAABCAA2FiEE/PmG6hXm4pOlZE8QtDIvBNZ2WNgFAmQ2/oUYHGZmbXBlZy1k
|
||||
ZXZlbEBmZm1wZWcub3JnAAoJELQyLwTWdljYkGMH/iRlBGO1ZcCPnNpJt6pAqxcY
|
||||
cP4hmanIPLLBPQfbHIwGUJDiTDIpXuFeWC7dt08Q8ndXtXbjTJ0T+hZP7Riuzns8
|
||||
bwXfrCRioKlmIZSUg9WMErNW+vE/nUFn20q4PdzaWbeUbIsZEW6Btt4C4JuBCLsn
|
||||
K2WZa7/GwaMnLLPIUIaNzW//aeUj11IhY74qB3k5nOhidgptY1en7xa9x1kZ3dvW
|
||||
wx2vO+2fS5SlvBfj2KFAey+FX2LAEZFjRaiWRnzlO5daqO4acWMtRAQeMk5rs21W
|
||||
NeTZUqZoPaaNfcFz1yWsBv19Fte4R9D8oD4TwMd5ikZZ2hjV+N+EMEFNWLoH02Q=
|
||||
=e6RR
|
||||
-----END PGP SIGNATURE-----
|
2098
ffmpeg-4.changes
Normal file
2098
ffmpeg-4.changes
Normal file
File diff suppressed because it is too large
Load Diff
30
ffmpeg-4.keyring
Normal file
30
ffmpeg-4.keyring
Normal file
@ -0,0 +1,30 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
mQENBE22rV0BCAC3DzRmA2XlhrqYv9HKoEvNHHf+PzosmCTHmYhWHDqvBxPkSvCl
|
||||
ipkbvJ4pBnVvcX6mW5QyKhspHm5j1X5ibe9Bt9/chS/obnIobmvF8shSUgjQ0qRW
|
||||
9c1aWOjvT26SxYQ1y9TmYCFwixeydGFHYKjAim+evGUccni5KMlfPoT3VTPtim78
|
||||
ufkr3E9Nco/Mobn/8APO0NmLEGWAM6ln/8J/c9h6a1QKnQyBqWfT0YnAaebafFaZ
|
||||
YwOtRdDG54VbJ4xwcHbCj5cKhTABk/QtBzDvnW4bG+uSpqdHbFZEY2JpURDuj/T3
|
||||
NudKQGzn0bYNpY1XY2l0pqs/btKHnBW0fVMjABEBAAG0NEZGbXBlZyByZWxlYXNl
|
||||
IHNpZ25pbmcga2V5IDxmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZz6JATgEEwECACIF
|
||||
Ak22rV0CGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJELQyLwTWdljYKxUH
|
||||
/1fqzl7SKie2g4t4PJbqUbkLuMsC+CP6gp0dcVZOHkuUYAoD3PM3iVxpLBVyKIXI
|
||||
g7wMSTAtlIcYnzhWIpnoCBes6/O2Mrq6xHgGeTp6CDcm3LmmSYR1f5KdD8KUaA+l
|
||||
c/M/1fEnwrSs/UGDk6R6iUmbqwxPsbozlOvmUHOLbDZBnKrk9XfAJdUhAuFACrSA
|
||||
T+KF1jniz0OfNGd23SaHWRCphoRW9pXDc5FfkdaueBUvBvGv19ZNcDhcxT3/u6z2
|
||||
DaUFC0rLWqk8obo951jVvi/zOhB94Pw6u1SLvcTq3V1q5URWJtgSbpih9VRqxUbQ
|
||||
NbXduKGzbHz6Vwpkupz4JRe5AQ0ETbatXQEIANjYrygJi/fn1nlSg5Mz0l9KHDm4
|
||||
yfWtaOrXUjJcyiGe4G0XXJLGh45qxJ0DOKzi9id+9W4jby+kKuzG9O6Vn0iDeODO
|
||||
aOGnz4ua7Vu6d0AbYfNXZPWge/GCodo/ZD/qri1tPkLmRtT/sniahwy6LruPNHfF
|
||||
SRoNIjwbcD/IL+EbY1pL1/IFSzEAA1ZZamgmHgB7o9pwDIkK6HuvHMR/Y5MsoMfV
|
||||
fWV3ZGtA6v9z51CvnHsHPsADRSnUp7aYtR412SiAO4XodMLTA92L3LxgYhI4ma7D
|
||||
XZ8jgKg4JkKO+DXmoU63HtRdq/HZjeXJKk1JGJF3zCvP3DyIzZ8LWIjN8t0AEQEA
|
||||
AYkBHwQYAQIACQUCTbatXQIbDAAKCRC0Mi8E1nZY2LS8B/0bMoUAl4X9D0WQbL4l
|
||||
U0czCIOKOsvbHpIxivjCnOQxU23+PV5WZdoCCpSuAHGv+2OHzhNrij++P9BNTJeQ
|
||||
skxdS9FH4MZwy1IRSPrxegSxbCUpBI1rd0Zf7qb9BNPrHPTueWFV1uExOSB2Apsv
|
||||
WrKo2D8mR0uZAPYfYl2ToFVoa5PR7/+ii9WiJr/flF6qm7hoLpI5Bm4VcZh2GPsJ
|
||||
9Vo/8x/qOGwtdWHqBykYloKsrwD4U69rjn+d9feLoPBRgoVroXWQttt0sUnyoudz
|
||||
+x8ETJgPoNK3kQoDagApj4qAt83Ayac3HzNIuEJ7LdvfINIOprujnJ9vH4n04XLg
|
||||
I4EZ
|
||||
=Rjbw
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
933
ffmpeg-4.spec
Normal file
933
ffmpeg-4.spec
Normal file
@ -0,0 +1,933 @@
|
||||
#
|
||||
# spec file for package ffmpeg-4
|
||||
#
|
||||
# Copyright (c) 2024 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
# Create proper conflicts to make sure we require all from one version
|
||||
# p: Conflict string, eg if you need them all for requires instead
|
||||
# Default value Conflicts:
|
||||
# c: copmare string ie "<" or ">=", must be defined
|
||||
# v: version string ie. "< 42.3.4" or ">= 15.0.2.1", must be defined
|
||||
%define devel_conflicts(p:c:v:) \
|
||||
%define preamble_string %{-p:%{-p*}}%{!-p:Conflicts:} \
|
||||
%define comparator %{-c:%{-c*}}%{!-c:%{error:Comparator not defined}} \
|
||||
%define conflicts_version %{-v:%{-v*}}%{!-v:%{error:Version not defined}} \
|
||||
\
|
||||
%preamble_string libavcodec-devel %comparator %conflicts_version \
|
||||
%preamble_string libavdevice-devel %comparator %conflicts_version \
|
||||
%preamble_string libavfilter-devel %comparator %conflicts_version \
|
||||
%preamble_string libavformat-devel %comparator %conflicts_version \
|
||||
%preamble_string libavresample-devel %comparator %conflicts_version \
|
||||
%preamble_string libavutil-devel %comparator %conflicts_version \
|
||||
%preamble_string libpostproc-devel %comparator %conflicts_version \
|
||||
%preamble_string libswresample-devel %comparator %conflicts_version \
|
||||
%preamble_string libswscale-devel %comparator %conflicts_version \
|
||||
%preamble_string ffmpeg-private-devel %comparator %conflicts_version \
|
||||
%nil
|
||||
|
||||
# nvcodec headers only present after leap15
|
||||
%bcond_with nvcodec
|
||||
%if 0%{?suse_version} >= 1500
|
||||
%bcond_without nvcodec
|
||||
%endif
|
||||
%if 0%{?BUILD_ORIG}
|
||||
%bcond_with amrwb
|
||||
%bcond_without cuda_sdk
|
||||
%else
|
||||
%bcond_with cuda_sdk
|
||||
%endif
|
||||
%bcond_with fdk_aac_dlopen
|
||||
%bcond_with librtmp
|
||||
%bcond_with opencore
|
||||
%bcond_with smbclient
|
||||
%bcond_with x264
|
||||
%bcond_with x265
|
||||
%bcond_with xvid
|
||||
|
||||
%if 0%{?suse_version} > 1500
|
||||
%bcond_without libaom
|
||||
%bcond_without mysofa
|
||||
%bcond_without vidstab
|
||||
%bcond_without srt
|
||||
%bcond_without codec2
|
||||
%bcond_without lv2
|
||||
%bcond_without librav1e
|
||||
%bcond_without rubberband
|
||||
%bcond_without soxr
|
||||
%bcond_without zmq
|
||||
%bcond_without vulkan
|
||||
%bcond_without amrwb
|
||||
%bcond_without opencore
|
||||
%bcond_without xvid
|
||||
%else
|
||||
%bcond_with libaom
|
||||
%bcond_with mysofa
|
||||
%bcond_with vidstab
|
||||
%bcond_with srt
|
||||
%bcond_with codec2
|
||||
%bcond_with lv2
|
||||
%bcond_with librav1e
|
||||
%bcond_with rubberband
|
||||
%bcond_with soxr
|
||||
%bcond_with zmq
|
||||
%bcond_with vulkan
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version} >= 1500
|
||||
%bcond_without zimg
|
||||
%bcond_without openmpt
|
||||
%else
|
||||
%bcond_with zimg
|
||||
%bcond_with openmpt
|
||||
%endif
|
||||
|
||||
%define _name ffmpeg
|
||||
%define _major_version 4
|
||||
%define _major_expected 5
|
||||
Name: ffmpeg-4
|
||||
Version: 4.4.4
|
||||
Release: 0
|
||||
Summary: Set of libraries for working with various multimedia formats
|
||||
License: GPL-3.0-or-later
|
||||
Group: Productivity/Multimedia/Video/Editors and Convertors
|
||||
URL: https://ffmpeg.org/
|
||||
|
||||
#Freshcode-URL: http://freshcode.club/projects/ffmpeg
|
||||
#Git-Clone: git://source.ffmpeg.org/ffmpeg
|
||||
Source: https://www.ffmpeg.org/releases/%_name-%version.tar.xz
|
||||
Source2: https://www.ffmpeg.org/releases/%_name-%version.tar.xz.asc
|
||||
Source3: ffmpeg-4-rpmlintrc
|
||||
Source4: enable_decoders
|
||||
Source5: enable_encoders
|
||||
Source98: http://ffmpeg.org/ffmpeg-devel.asc#/ffmpeg-4.keyring
|
||||
Source99: baselibs.conf
|
||||
Patch1: ffmpeg-arm6l.diff
|
||||
Patch2: ffmpeg-new-coder-errors.diff
|
||||
Patch3: ffmpeg-codec-choice.diff
|
||||
Patch4: ffmpeg-4.2-dlopen-fdk_aac.patch
|
||||
Patch5: soversion.patch
|
||||
Patch9: ffmpeg-4.4-CVE-2020-22046.patch
|
||||
Patch10: ffmpeg-chromium.patch
|
||||
Patch11: ffmpeg-libglslang-detection.patch
|
||||
Patch12: 0001-avcodec-libsvtav1-remove-compressed_ten_bit_format-a.patch
|
||||
Patch13: 0001-avcodec-x86-mathops-clip-constants-used-with-shift-i.patch
|
||||
Patch14: ffmpeg-glslang-cxx17.patch
|
||||
Patch15: 0001-avutil-hwcontext-Don-t-assume-frames_uninit-is-reent.patch
|
||||
Patch16: 0001-avfilter-vf_minterpolate-Check-pts-before-division.patch
|
||||
Patch17: ffmpeg-CVE-2023-49502.patch
|
||||
Patch18: ffmpeg-CVE-2023-51793.patch
|
||||
Patch19: 0001-avfilter-af_stereowiden-Check-length.patch
|
||||
Patch20: ffmpeg-CVE-2023-50010.patch
|
||||
Patch21: ffmpeg-4-CVE-2024-32230.patch
|
||||
Patch22: ffmpeg-c99.patch
|
||||
Patch23: 0001-libavcodec-arm-mlpdsp_armv5te-fix-label-format-to-wo.patch
|
||||
BuildRequires: ladspa-devel
|
||||
BuildRequires: libgsm-devel
|
||||
BuildRequires: libmp3lame-devel
|
||||
%if %{with mysofa}
|
||||
BuildRequires: libmysofa-devel
|
||||
%endif
|
||||
BuildRequires: nasm
|
||||
BuildRequires: pkg-config
|
||||
%ifarch x86_64
|
||||
%if 0%{?suse_version} >= 1550
|
||||
BuildRequires: pkgconfig(SvtAv1Enc) >= 0.8.4
|
||||
%endif
|
||||
%endif
|
||||
BuildRequires: pkgconfig(alsa)
|
||||
%if %{with libaom}
|
||||
BuildRequires: pkgconfig(aom)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(bzip2)
|
||||
BuildRequires: pkgconfig(celt) >= 0.11.0
|
||||
%if %{with codec2}
|
||||
BuildRequires: pkgconfig(codec2)
|
||||
%endif
|
||||
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150200
|
||||
BuildRequires: pkgconfig(dav1d)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(enca)
|
||||
BuildRequires: pkgconfig(fontconfig) >= 2.4.2
|
||||
BuildRequires: pkgconfig(freetype2)
|
||||
BuildRequires: pkgconfig(fribidi) >= 0.19.0
|
||||
BuildRequires: pkgconfig(gnutls)
|
||||
BuildRequires: pkgconfig(jack)
|
||||
BuildRequires: pkgconfig(libass)
|
||||
BuildRequires: pkgconfig(libbluray)
|
||||
BuildRequires: pkgconfig(libbs2b)
|
||||
BuildRequires: pkgconfig(libcdio)
|
||||
BuildRequires: pkgconfig(libcdio_paranoia)
|
||||
BuildRequires: pkgconfig(libdc1394-2)
|
||||
BuildRequires: pkgconfig(libdrm)
|
||||
BuildRequires: pkgconfig(libgme)
|
||||
BuildRequires: pkgconfig(libopenjp2) >= 2.1.0
|
||||
%if %{with openmpt}
|
||||
BuildRequires: pkgconfig(libopenmpt)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(libpng)
|
||||
BuildRequires: pkgconfig(libpulse)
|
||||
BuildRequires: pkgconfig(libraw1394)
|
||||
BuildRequires: pkgconfig(libssh)
|
||||
BuildRequires: pkgconfig(libv4l2)
|
||||
BuildRequires: pkgconfig(libva) >= 0.35.0
|
||||
BuildRequires: pkgconfig(libva-drm)
|
||||
BuildRequires: pkgconfig(libva-x11)
|
||||
BuildRequires: pkgconfig(libwebp) >= 0.4
|
||||
BuildRequires: pkgconfig(libxml-2.0)
|
||||
%if %{with zmq}
|
||||
BuildRequires: pkgconfig(libzmq)
|
||||
%endif
|
||||
%if %{with lv2}
|
||||
BuildRequires: pkgconfig(lilv-0)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(ogg)
|
||||
BuildRequires: pkgconfig(opus)
|
||||
%if %{with librav1e}
|
||||
BuildRequires: pkgconfig(rav1e)
|
||||
%endif
|
||||
%if %{with rubberband}
|
||||
BuildRequires: pkgconfig(rubberband)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(sdl2)
|
||||
%if %{with smbclient}
|
||||
BuildRequires: pkgconfig(smbclient)
|
||||
%endif
|
||||
%if %{with soxr}
|
||||
BuildRequires: pkgconfig(soxr)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(speex)
|
||||
%if %{with srt}
|
||||
BuildRequires: pkgconfig(srt)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(theora) >= 1.1
|
||||
BuildRequires: pkgconfig(twolame)
|
||||
BuildRequires: pkgconfig(vdpau)
|
||||
%if %{with vidstab}
|
||||
BuildRequires: pkgconfig(vidstab) >= 0.98
|
||||
%endif
|
||||
%if %{with vulkan}
|
||||
BuildRequires: c++_compiler
|
||||
BuildRequires: glslang-devel
|
||||
BuildRequires: pkgconfig(SPIRV-Tools)
|
||||
BuildRequires: pkgconfig(vulkan)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(vorbis)
|
||||
BuildRequires: pkgconfig(vpx) >= 1.4.0
|
||||
BuildRequires: pkgconfig(x11)
|
||||
BuildRequires: pkgconfig(xcb)
|
||||
BuildRequires: pkgconfig(xcb-render)
|
||||
BuildRequires: pkgconfig(xcb-shape)
|
||||
BuildRequires: pkgconfig(xcb-shm)
|
||||
BuildRequires: pkgconfig(xcb-xfixes)
|
||||
BuildRequires: pkgconfig(xext)
|
||||
BuildRequires: pkgconfig(xfixes)
|
||||
%if %{with zimg}
|
||||
BuildRequires: pkgconfig(zimg)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(zlib)
|
||||
BuildRequires: pkgconfig(zvbi-0.2) >= 0.2.28
|
||||
%if %{with fdk_aac_dlopen}
|
||||
BuildRequires: pkgconfig(fdk-aac)
|
||||
%endif
|
||||
%if %{with librtmp}
|
||||
BuildRequires: pkgconfig(librtmp)
|
||||
%endif
|
||||
%if %{with nvcodec}
|
||||
BuildRequires: pkgconfig(ffnvcodec)
|
||||
%endif
|
||||
%if %{with xvid}
|
||||
BuildRequires: libxvidcore-devel
|
||||
%endif
|
||||
%if %{with opencore}
|
||||
BuildRequires: pkgconfig(opencore-amrnb)
|
||||
%endif
|
||||
%if %{with amrwb}
|
||||
BuildRequires: pkgconfig(vo-amrwbenc)
|
||||
%endif
|
||||
%if %{with x264}
|
||||
BuildRequires: pkgconfig(x264)
|
||||
%endif
|
||||
%if %{with x265}
|
||||
BuildRequires: pkgconfig(x265)
|
||||
%endif
|
||||
Provides: ffmpeg-tools = %version
|
||||
Conflicts: ffmpeg-tools
|
||||
Provides: ffmpeg = %version
|
||||
Obsoletes: ffmpeg < %version
|
||||
Requires: libavcodec58_134 = %version-%release
|
||||
Requires: libavdevice58_13 = %version-%release
|
||||
Requires: libavfilter7_110 = %version-%release
|
||||
Requires: libavformat58_76 = %version-%release
|
||||
Requires: libavresample4_0 = %version-%release
|
||||
Requires: libavutil56_70 = %version-%release
|
||||
Requires: libpostproc55_9 = %version-%release
|
||||
Requires: libswresample3_9 = %version-%release
|
||||
Requires: libswscale5_9 = %version-%release
|
||||
|
||||
%description
|
||||
FFmpeg is a multimedia framework, able to decode, encode,
|
||||
transcode, mux, demux, stream, filter and play several formats
|
||||
that humans and machines have created.
|
||||
%if !0%{?BUILD_ORIG}
|
||||
|
||||
This build of ffmpeg is limited in the number of codecs supported.
|
||||
%endif
|
||||
|
||||
%package -n libavcodec58_134
|
||||
Summary: FFmpeg codec library
|
||||
Group: System/Libraries
|
||||
Requires: libavutil56_70 = %version-%release
|
||||
Requires: libswresample3_9 = %version-%release
|
||||
%if 0%{?BUILD_ORIG}
|
||||
Provides: libavcodec-full = %version-%release
|
||||
# This can be (and is) required by packages like vlc-codecs -
|
||||
# do follow the shlib name to not get random lib providers
|
||||
Provides: libavcodec58_134(unrestricted)
|
||||
%endif
|
||||
# For mozillas
|
||||
Provides: libavcodec = %version-%release
|
||||
|
||||
%description -n libavcodec58_134
|
||||
The libavcodec library provides a generic encoding/decoding framework
|
||||
and contains multiple decoders and encoders for audio, video and
|
||||
subtitle streams, and several bitstream filters.
|
||||
%if !0%{?BUILD_ORIG}
|
||||
|
||||
This build of ffmpeg is limited in the number of codecs supported.
|
||||
%endif
|
||||
|
||||
%package libavcodec-devel
|
||||
Summary: Development files for FFmpeg's codec library
|
||||
Group: Development/Libraries/C and C++
|
||||
Provides: libavcodec-devel = %version-%release
|
||||
Obsoletes: libavcodec-devel < %version-%release
|
||||
Requires: %name-libavresample-devel = %version-%release
|
||||
Requires: %name-libavutil-devel = %version-%release
|
||||
Requires: libavcodec58_134 = %version-%release
|
||||
%devel_conflicts -c < -v %_major_version
|
||||
%devel_conflicts -c >= -v %_major_expected
|
||||
|
||||
%description libavcodec-devel
|
||||
The libavcodec library provides a generic encoding/decoding framework
|
||||
and contains multiple decoders and encoders for audio, video and
|
||||
subtitle streams, and several bitstream filters.
|
||||
|
||||
This subpackage contains the headers for FFmpeg libavcodec.
|
||||
|
||||
%package -n libavdevice58_13
|
||||
Summary: FFmpeg device library
|
||||
Group: System/Libraries
|
||||
Requires: libavcodec58_134 = %version-%release
|
||||
Requires: libavfilter7_110 = %version-%release
|
||||
Requires: libavformat58_76 = %version-%release
|
||||
Requires: libavutil56_70 = %version-%release
|
||||
|
||||
%description -n libavdevice58_13
|
||||
The libavdevice library provides a generic framework for grabbing from
|
||||
and rendering to many common multimedia input/output devices, and
|
||||
supports several input and output devices, including Video4Linux2, VfW,
|
||||
DShow, and ALSA.
|
||||
|
||||
%package libavdevice-devel
|
||||
Summary: Development files for FFmpeg's device library
|
||||
Group: Development/Libraries/C and C++
|
||||
Provides: ffmpeg-devel = %version-%release
|
||||
Conflicts: ffmpeg-devel
|
||||
Provides: libavdevice-devel = %version-%release
|
||||
Obsoletes: libavdevice-devel < %version-%release
|
||||
Requires: %name-libavcodec-devel = %version-%release
|
||||
Requires: %name-libavfilter-devel = %version-%release
|
||||
Requires: %name-libavformat-devel = %version-%release
|
||||
Requires: %name-libavresample-devel = %version-%release
|
||||
Requires: %name-libavutil-devel = %version-%release
|
||||
Requires: %name-libpostproc-devel = %version-%release
|
||||
Requires: %name-libswresample-devel = %version-%release
|
||||
Requires: %name-libswscale-devel = %version-%release
|
||||
Requires: libavdevice58_13 = %version-%release
|
||||
%devel_conflicts -c < -v %_major_version
|
||||
%devel_conflicts -c >= -v %_major_expected
|
||||
|
||||
%description libavdevice-devel
|
||||
The libavdevice library provides a generic framework for grabbing from
|
||||
and rendering to many common multimedia input/output devices, and
|
||||
supports several input and output devices, including Video4Linux2, VfW,
|
||||
DShow, and ALSA.
|
||||
|
||||
This subpackage contains the headers for FFmpeg libavcodec.
|
||||
|
||||
%package -n libavfilter7_110
|
||||
Summary: FFmpeg audio and video filtering library
|
||||
Group: System/Libraries
|
||||
Requires: libavcodec58_134 = %version-%release
|
||||
Requires: libavformat58_76 = %version-%release
|
||||
Requires: libavresample4_0 = %version-%release
|
||||
Requires: libavutil56_70 = %version-%release
|
||||
Requires: libpostproc55_9 = %version-%release
|
||||
Requires: libswresample3_9 = %version-%release
|
||||
Requires: libswscale5_9 = %version-%release
|
||||
|
||||
%description -n libavfilter7_110
|
||||
The libavfilter library provides a generic audio/video filtering
|
||||
framework containing several filters, sources and sinks.
|
||||
|
||||
%package libavfilter-devel
|
||||
Summary: Development files for FFmpeg's audio/video filter library
|
||||
Group: Development/Libraries/C and C++
|
||||
Provides: libavfilter-devel = %version-%release
|
||||
Obsoletes: libavfilter-devel < %version-%release
|
||||
Requires: %name-libavcodec-devel = %version-%release
|
||||
Requires: %name-libavformat-devel = %version-%release
|
||||
Requires: %name-libavresample-devel = %version-%release
|
||||
Requires: %name-libavutil-devel = %version-%release
|
||||
Requires: %name-libpostproc-devel = %version-%release
|
||||
Requires: %name-libswresample-devel = %version-%release
|
||||
Requires: %name-libswscale-devel = %version-%release
|
||||
Requires: libavfilter7_110 = %version-%release
|
||||
%devel_conflicts -c < -v %_major_version
|
||||
%devel_conflicts -c >= -v %_major_expected
|
||||
|
||||
%description libavfilter-devel
|
||||
The libavfilter library provides a generic audio/video filtering
|
||||
framework containing several filters, sources and sinks.
|
||||
|
||||
This subpackage contains the headers for FFmpeg libavfilter.
|
||||
|
||||
%package -n libavformat58_76
|
||||
Summary: FFmpeg's stream format library
|
||||
Group: System/Libraries
|
||||
Requires: libavcodec58_134 = %version-%release
|
||||
Requires: libavutil56_70 = %version-%release
|
||||
|
||||
%description -n libavformat58_76
|
||||
The libavformat library provides a generic framework for multiplexing
|
||||
and demultiplexing (muxing and demuxing) audio, video and subtitle
|
||||
streams. It encompasses multiple muxers and demuxers for multimedia
|
||||
container formats.
|
||||
%if !0%{?BUILD_ORIG}
|
||||
|
||||
This build of ffmpeg is limited in the number of codecs supported.
|
||||
%endif
|
||||
|
||||
%package libavformat-devel
|
||||
Summary: Development files for FFmpeg's stream format library
|
||||
Group: Development/Libraries/C and C++
|
||||
Provides: libavformat-devel = %version-%release
|
||||
Obsoletes: libavformat-devel < %version-%release
|
||||
Requires: %name-libavcodec-devel = %version-%release
|
||||
Requires: %name-libavutil-devel = %version-%release
|
||||
Requires: %name-libswresample-devel = %version-%release
|
||||
Requires: libavformat58_76 = %version-%release
|
||||
%devel_conflicts -c < -v %_major_version
|
||||
%devel_conflicts -c >= -v %_major_expected
|
||||
|
||||
%description libavformat-devel
|
||||
The libavformat library provides a generic framework for multiplexing
|
||||
and demultiplexing (muxing and demuxing) audio, video and subtitle
|
||||
streams. It encompasses multiple muxers and demuxers for multimedia
|
||||
container formats.
|
||||
|
||||
This subpackage contains the headers for FFmpeg libavformat.
|
||||
|
||||
%package -n libavresample4_0
|
||||
Summary: FFmpeg alternate audio resampling library
|
||||
Group: System/Libraries
|
||||
Requires: libavutil56_70 = %version-%release
|
||||
Obsoletes: libavresample4 < %version-%release
|
||||
Provides: libavresample4 = %version-%release
|
||||
|
||||
%description -n libavresample4_0
|
||||
An audio resampling library that is being provided for drop-in
|
||||
compatibility with libav.
|
||||
|
||||
It is advised to use libswresample for new code.
|
||||
|
||||
%package libavresample-devel
|
||||
Summary: Development files for libavresample as present in FFmpeg
|
||||
Group: Development/Libraries/C and C++
|
||||
Provides: libavresample-devel = %version-%release
|
||||
Obsoletes: libavresample-devel < %version-%release
|
||||
Requires: %name-libavutil-devel = %version-%release
|
||||
Requires: libavresample4_0 = %version-%release
|
||||
%devel_conflicts -c < -v %_major_version
|
||||
%devel_conflicts -c >= -v %_major_expected
|
||||
|
||||
%description libavresample-devel
|
||||
An audio resampling library that is being provided for drop-in
|
||||
compatibility with libav.
|
||||
|
||||
It is advised to use libswresample for new code.
|
||||
|
||||
This subpackage contains the headers for FFmpeg's copy of libavresample.
|
||||
|
||||
%package -n libavutil56_70
|
||||
Summary: FFmpeg's utility library
|
||||
Group: System/Libraries
|
||||
|
||||
%description -n libavutil56_70
|
||||
The libavutil library is a utility library to aid portable multimedia
|
||||
programming. It contains safe portable string functions, random
|
||||
number generators, data structures, additional mathematics functions,
|
||||
cryptography and multimedia related functionality (like enumerations
|
||||
for pixel and sample formats).
|
||||
|
||||
%package libavutil-devel
|
||||
Summary: Development files for FFmpeg's utility library
|
||||
Group: Development/Libraries/C and C++
|
||||
Provides: libavutil-devel = %version-%release
|
||||
Obsoletes: libavutil-devel < %version-%release
|
||||
Requires: libavutil56_70 = %version-%release
|
||||
%devel_conflicts -c < -v %_major_version
|
||||
%devel_conflicts -c >= -v %_major_expected
|
||||
|
||||
%description libavutil-devel
|
||||
The libavutil library is a utility library to aid portable multimedia
|
||||
programming. It contains safe portable string functions, random
|
||||
number generators, data structures, additional mathematics functions,
|
||||
cryptography and multimedia related functionality (like enumerations
|
||||
for pixel and sample formats).
|
||||
|
||||
This subpackage contains the headers for FFmpeg libavutil.
|
||||
|
||||
%package -n libpostproc55_9
|
||||
Summary: FFmpeg post-processing library
|
||||
Group: System/Libraries
|
||||
Requires: libavutil56_70 = %version-%release
|
||||
|
||||
%description -n libpostproc55_9
|
||||
A library with video postprocessing filters, such as deblocking and
|
||||
deringing filters, noise reduction, automatic contrast and brightness
|
||||
correction, linear/cubic interpolating deinterlacing.
|
||||
|
||||
%package libpostproc-devel
|
||||
Summary: Development files for the FFmpeg post-processing library
|
||||
Group: Development/Libraries/C and C++
|
||||
Provides: libpostproc-devel = %version-%release
|
||||
Obsoletes: libpostproc-devel < %version-%release
|
||||
Requires: %name-libavutil-devel = %version-%release
|
||||
Requires: libpostproc55_9 = %version-%release
|
||||
%devel_conflicts -c < -v %_major_version
|
||||
%devel_conflicts -c >= -v %_major_expected
|
||||
|
||||
%description libpostproc-devel
|
||||
A library with video postprocessing filters, such as deblocking and
|
||||
deringing filters, noise reduction, automatic contrast and brightness
|
||||
correction, linear/cubic interpolating deinterlacing.
|
||||
|
||||
This subpackage contains the headers for FFmpeg libpostproc.
|
||||
|
||||
%package -n libswresample3_9
|
||||
Summary: FFmpeg software resampling library
|
||||
Group: System/Libraries
|
||||
Requires: libavutil56_70 = %version-%release
|
||||
|
||||
%description -n libswresample3_9
|
||||
The libswresample library performs audio conversion between different
|
||||
sample rates, channel layout and channel formats.
|
||||
|
||||
%package libswresample-devel
|
||||
Summary: Development files for the FFmpeg software resampling library
|
||||
Group: Development/Libraries/C and C++
|
||||
Provides: libswresample-devel = %version-%release
|
||||
Obsoletes: libswresample-devel < %version-%release
|
||||
Requires: %name-libavutil-devel = %version-%release
|
||||
Requires: libswresample3_9 = %version-%release
|
||||
%devel_conflicts -c < -v %_major_version
|
||||
%devel_conflicts -c >= -v %_major_expected
|
||||
|
||||
%description libswresample-devel
|
||||
The libswresample library performs audio conversion between different
|
||||
sample rates, channel layout and channel formats.
|
||||
|
||||
This subpackage contains the headers for FFmpeg libswresample.
|
||||
|
||||
%package -n libswscale5_9
|
||||
Summary: FFmpeg image scaling and colorspace/pixel conversion library
|
||||
Group: System/Libraries
|
||||
Requires: libavutil56_70 = %version-%release
|
||||
|
||||
%description -n libswscale5_9
|
||||
The libswscale library performs image scaling and colorspace and
|
||||
pixel format conversion operations.
|
||||
|
||||
%package libswscale-devel
|
||||
Summary: Development files for FFmpeg's image scaling and colorspace library
|
||||
Group: Development/Libraries/C and C++
|
||||
Provides: libswscale-devel = %version-%release
|
||||
Conflicts: libswscale-devel
|
||||
Requires: %name-libavutil-devel = %version-%release
|
||||
Requires: libswscale5_9 = %version-%release
|
||||
%devel_conflicts -c < -v %_major_version
|
||||
%devel_conflicts -c >= -v %_major_expected
|
||||
|
||||
%description libswscale-devel
|
||||
The libswscale library performs image scaling and colorspace and
|
||||
pixel format conversion operations.
|
||||
|
||||
This subpackage contains the headers for FFmpeg libswscale.
|
||||
|
||||
%package private-devel
|
||||
Summary: Some FFmpeg private headers
|
||||
Group: Development/Libraries/C and C++
|
||||
Requires: %name-libavcodec-devel = %version-%release
|
||||
Requires: %name-libavformat-devel = %version-%release
|
||||
Requires: %name-libavutil-devel = %version-%release
|
||||
Provides: ffmpeg-private-devel = %version
|
||||
Obsoletes: ffmpeg-private-devel < %version
|
||||
%devel_conflicts -c < -v %_major_version
|
||||
%devel_conflicts -c >= -v %_major_expected
|
||||
|
||||
%description private-devel
|
||||
FFmpeg is a multimedia framework, able to decode, encode,
|
||||
transcode, mux, demux, stream, filter and play several formats
|
||||
that humans and machines have created.
|
||||
|
||||
This package contains some private headers for libavformat, libavcodec and
|
||||
libavutil which are needed by libav-tools to build. No other package apart
|
||||
from libav should depend on these private headers which are expected to
|
||||
break compatibility without any notice.
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n %_name-%version
|
||||
|
||||
%build
|
||||
%ifarch %ix86 %arm
|
||||
%define _lto_cflags %nil
|
||||
%endif
|
||||
%if "%_lto_cflags" != ""
|
||||
%global _lto_cflags %_lto_cflags -ffat-lto-objects
|
||||
%endif
|
||||
CFLAGS="%optflags" CXXFLAGS="%optflags" \
|
||||
%if %suse_version > 1500
|
||||
%ifarch %ix86
|
||||
%else
|
||||
LDFLAGS="%_lto_cflags" \
|
||||
%endif
|
||||
%endif
|
||||
./configure \
|
||||
--prefix="%_prefix" \
|
||||
--libdir="%_libdir" \
|
||||
--shlibdir="%_libdir" \
|
||||
--incdir="%_includedir/ffmpeg" \
|
||||
--extra-cflags="%optflags" \
|
||||
--optflags="%optflags" \
|
||||
--disable-htmlpages \
|
||||
--enable-pic \
|
||||
--disable-stripping \
|
||||
--enable-shared \
|
||||
--disable-static \
|
||||
--enable-gpl \
|
||||
--enable-version3 \
|
||||
%if %{with smbclient}
|
||||
--enable-libsmbclient \
|
||||
%endif
|
||||
--disable-openssl \
|
||||
--enable-avresample \
|
||||
--enable-gnutls \
|
||||
--enable-ladspa \
|
||||
%if %{with vulkan}
|
||||
--enable-vulkan \
|
||||
--enable-libglslang \
|
||||
%endif
|
||||
%if ! %{with cuda_sdk}
|
||||
--disable-cuda-sdk \
|
||||
%endif
|
||||
%if %{with libaom}
|
||||
--enable-libaom \
|
||||
%endif
|
||||
--enable-libass \
|
||||
--enable-libbluray \
|
||||
--enable-libbs2b \
|
||||
--enable-libcelt \
|
||||
--enable-libcdio \
|
||||
%if %{with codec2}
|
||||
--enable-libcodec2 \
|
||||
%endif
|
||||
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150200
|
||||
--enable-libdav1d \
|
||||
%endif
|
||||
--enable-libdc1394 \
|
||||
--enable-libdrm \
|
||||
--enable-libfontconfig \
|
||||
--enable-libfreetype \
|
||||
--enable-libfribidi \
|
||||
--enable-libgsm \
|
||||
--enable-libjack \
|
||||
--enable-libmp3lame \
|
||||
%if %{with mysofa}
|
||||
--enable-libmysofa \
|
||||
%endif
|
||||
--enable-libopenjpeg \
|
||||
%if %{with openmpt}
|
||||
--enable-libopenmpt \
|
||||
%endif
|
||||
--enable-libopus \
|
||||
--enable-libpulse \
|
||||
%if %{with librav1e}
|
||||
--enable-librav1e \
|
||||
%endif
|
||||
%if %{with rubberband}
|
||||
--enable-librubberband \
|
||||
%endif
|
||||
%ifarch x86_64
|
||||
%if 0%{?suse_version} >= 1550
|
||||
--enable-libsvtav1 \
|
||||
%endif
|
||||
%endif
|
||||
%if %{with soxr}
|
||||
--enable-libsoxr \
|
||||
%endif
|
||||
--enable-libspeex \
|
||||
--enable-libssh \
|
||||
%if %{with srt}
|
||||
--enable-libsrt \
|
||||
%endif
|
||||
--enable-libtheora \
|
||||
--enable-libtwolame \
|
||||
%if %{with vidstab}
|
||||
--enable-libvidstab \
|
||||
%endif
|
||||
--enable-libvorbis \
|
||||
--enable-libv4l2 \
|
||||
--enable-libvpx \
|
||||
--enable-libwebp \
|
||||
--enable-libxml2 \
|
||||
%if %{with zimg}
|
||||
--enable-libzimg \
|
||||
%endif
|
||||
%if %{with zmq}
|
||||
--enable-libzmq \
|
||||
%endif
|
||||
--enable-libzvbi \
|
||||
%if 0%{?suse_version} > 1500
|
||||
%ifarch %ix86
|
||||
%else
|
||||
--enable-lto \
|
||||
%endif
|
||||
%endif
|
||||
%if %{with lv2}
|
||||
--enable-lv2 \
|
||||
%endif
|
||||
%if 0%{?suse_version} >= 1550 || 0%{?sle_version} >= 150200
|
||||
%endif
|
||||
--enable-vaapi \
|
||||
--enable-vdpau \
|
||||
--enable-version3 \
|
||||
%if %{with fdk_aac_dlopen}
|
||||
--enable-libfdk-aac-dlopen \
|
||||
--enable-nonfree \
|
||||
%endif
|
||||
%if %{with opencore}
|
||||
--enable-libopencore-amrnb \
|
||||
--enable-libopencore-amrwb \
|
||||
%endif
|
||||
%if %{with amrwb}
|
||||
--enable-libvo-amrwbenc \
|
||||
%endif
|
||||
%if %{with x264}
|
||||
--enable-libx264 \
|
||||
%endif
|
||||
%if %{with x265}
|
||||
--enable-libx265 \
|
||||
%endif
|
||||
%if %{with librtmp}
|
||||
--enable-librtmp \
|
||||
%endif
|
||||
%if %{with xvid}
|
||||
--enable-libxvid \
|
||||
%endif
|
||||
%if !0%{?BUILD_ORIG}
|
||||
--enable-muxers \
|
||||
--enable-demuxers \
|
||||
--disable-encoders \
|
||||
--disable-decoders \
|
||||
--disable-decoder=h264,hevc,vc1 \
|
||||
--enable-encoder="$(perl -pe 's{^(\w*).*}{$1,}gs' <%_sourcedir/enable_encoders)" \
|
||||
--enable-decoder="$(perl -pe 's{^(\w*).*}{$1,}gs' <%_sourcedir/enable_decoders)" \
|
||||
|
||||
for i in H264 HEVC VC1; do
|
||||
grep -q "#define CONFIG_${i}_DECODER 0" config.h
|
||||
done
|
||||
%endif
|
||||
|
||||
cat config.h
|
||||
%make_build
|
||||
|
||||
%global extratools aviocat cws2fws ffescape ffeval ffhash fourcc2pixfmt graph2dot ismindex pktdumper probetest qt-faststart seek_print sidxindex trasher
|
||||
|
||||
for i in %extratools; do
|
||||
%make_build "tools/$i"
|
||||
done
|
||||
|
||||
%install
|
||||
b="%buildroot"
|
||||
%make_install install-man
|
||||
rm -Rf "$b/%_datadir/ffmpeg/examples"
|
||||
for i in %extratools; do
|
||||
cp -a "tools/$i" "$b/%_bindir/"
|
||||
done
|
||||
|
||||
# Install private headers required by libav-tools
|
||||
for i in libavformat/options_table.h libavformat/os_support.h \
|
||||
libavformat/internal.h libavcodec/options_table.h libavutil/libm.h \
|
||||
libavutil/internal.h libavutil/colorspace.h libavutil/timer.h \
|
||||
libavutil/x86/emms.h libavutil/aarch64/timer.h libavutil/arm/timer.h \
|
||||
libavutil/bfin/timer.h libavutil/ppc/timer.h libavutil/x86/timer.h; do
|
||||
mkdir -p "$b/%_includedir/ffmpeg/private/"`dirname $i`
|
||||
cp -a $i "$b/%_includedir/ffmpeg/private/$i"
|
||||
done
|
||||
|
||||
%ldconfig_scriptlets -n libavcodec58_134
|
||||
%ldconfig_scriptlets -n libavdevice58_13
|
||||
%ldconfig_scriptlets -n libavfilter7_110
|
||||
%ldconfig_scriptlets -n libavformat58_76
|
||||
%ldconfig_scriptlets -n libavresample4_0
|
||||
%ldconfig_scriptlets -n libavutil56_70
|
||||
%ldconfig_scriptlets -n libpostproc55_9
|
||||
%ldconfig_scriptlets -n libswresample3_9
|
||||
%ldconfig_scriptlets -n libswscale5_9
|
||||
|
||||
%files
|
||||
%doc Changelog CREDITS README.md
|
||||
%_bindir/aviocat
|
||||
%_bindir/cws2fws
|
||||
%_bindir/ffescape
|
||||
%_bindir/ffeval
|
||||
%_bindir/ffhash
|
||||
%_bindir/ffmpeg
|
||||
%_bindir/ffplay
|
||||
%_bindir/ffprobe
|
||||
%_bindir/fourcc2pixfmt
|
||||
%_bindir/graph2dot
|
||||
%_bindir/ismindex
|
||||
%_bindir/pktdumper
|
||||
%_bindir/probetest
|
||||
%_bindir/qt-faststart
|
||||
%_bindir/seek_print
|
||||
%_bindir/sidxindex
|
||||
%_bindir/trasher
|
||||
%_mandir/man1/ff*.1*
|
||||
%_datadir/ffmpeg/
|
||||
%_libdir/libavcodec.so.58
|
||||
%_libdir/libavdevice.so.58
|
||||
%_libdir/libavfilter.so.7
|
||||
%_libdir/libavformat.so.58
|
||||
%_libdir/libavresample.so.4
|
||||
%_libdir/libavutil.so.56
|
||||
%_libdir/libpostproc.so.55
|
||||
%_libdir/libswresample.so.3
|
||||
%_libdir/libswscale.so.5
|
||||
|
||||
%files -n libavcodec58_134
|
||||
%license COPYING.GPLv2 LICENSE.md
|
||||
%_libdir/libavcodec.so.58.134*
|
||||
|
||||
%files -n libavdevice58_13
|
||||
%license COPYING.GPLv2 LICENSE.md
|
||||
%_libdir/libavdevice.so.58.13*
|
||||
|
||||
%files -n libavfilter7_110
|
||||
%license COPYING.GPLv2 LICENSE.md
|
||||
%_libdir/libavfilter.so.7.110*
|
||||
|
||||
%files -n libavformat58_76
|
||||
%license COPYING.GPLv2 LICENSE.md
|
||||
%_libdir/libavformat.so.58.76*
|
||||
|
||||
%files -n libavresample4_0
|
||||
%license COPYING.GPLv2 LICENSE.md
|
||||
%_libdir/libavresample.so.4.0*
|
||||
|
||||
%files -n libavutil56_70
|
||||
%license COPYING.GPLv2 LICENSE.md
|
||||
%_libdir/libavutil.so.56.70*
|
||||
|
||||
%files -n libpostproc55_9
|
||||
%license COPYING.GPLv2 LICENSE.md
|
||||
%_libdir/libpostproc.so.55.9*
|
||||
|
||||
%files -n libswresample3_9
|
||||
%license COPYING.GPLv2 LICENSE.md
|
||||
%_libdir/libswresample.so.3.9*
|
||||
|
||||
%files -n libswscale5_9
|
||||
%license COPYING.GPLv2 LICENSE.md
|
||||
%_libdir/libswscale.so.5.9*
|
||||
|
||||
%files libavcodec-devel
|
||||
%dir %_includedir/ffmpeg/
|
||||
%_includedir/ffmpeg/libavcodec/
|
||||
%_libdir/libavcodec.so
|
||||
%_libdir/pkgconfig/libavcodec.pc
|
||||
%_mandir/man3/libavcodec.3*
|
||||
|
||||
%files libavdevice-devel
|
||||
%dir %_includedir/ffmpeg/
|
||||
%_includedir/ffmpeg/libavdevice/
|
||||
%_libdir/libavdevice.so
|
||||
%_libdir/pkgconfig/libavdevice.pc
|
||||
%_mandir/man3/libavdevice.3*
|
||||
|
||||
%files libavfilter-devel
|
||||
%dir %_includedir/ffmpeg/
|
||||
%_includedir/ffmpeg/libavfilter/
|
||||
%_libdir/libavfilter.so
|
||||
%_libdir/pkgconfig/libavfilter.pc
|
||||
%_mandir/man3/libavfilter.3*
|
||||
|
||||
%files libavformat-devel
|
||||
%dir %_includedir/ffmpeg/
|
||||
%_includedir/ffmpeg/libavformat/
|
||||
%_libdir/libavformat.so
|
||||
%_libdir/pkgconfig/libavformat.pc
|
||||
%_mandir/man3/libavformat.3*
|
||||
|
||||
%files libavresample-devel
|
||||
%dir %_includedir/ffmpeg/
|
||||
%_includedir/ffmpeg/libavresample/
|
||||
%_libdir/libavresample.so
|
||||
%_libdir/pkgconfig/libavresample.pc
|
||||
|
||||
%files libavutil-devel
|
||||
%dir %_includedir/ffmpeg/
|
||||
%_includedir/ffmpeg/libavutil/
|
||||
%_libdir/libavutil.so
|
||||
%_libdir/pkgconfig/libavutil.pc
|
||||
%_mandir/man3/libavutil.3*
|
||||
|
||||
%files libpostproc-devel
|
||||
%dir %_includedir/ffmpeg/
|
||||
%_includedir/ffmpeg/libpostproc/
|
||||
%_libdir/libpostproc.so
|
||||
%_libdir/pkgconfig/libpostproc.pc
|
||||
|
||||
%files libswresample-devel
|
||||
%dir %_includedir/ffmpeg/
|
||||
%_includedir/ffmpeg/libswresample/
|
||||
%_libdir/libswresample.so
|
||||
%_libdir/pkgconfig/libswresample.pc
|
||||
%_mandir/man3/libswresample.3*
|
||||
|
||||
%files libswscale-devel
|
||||
%dir %_includedir/ffmpeg/
|
||||
%_includedir/ffmpeg/libswscale/
|
||||
%_libdir/libswscale.so
|
||||
%_libdir/pkgconfig/libswscale.pc
|
||||
%_mandir/man3/libswscale.3*
|
||||
|
||||
%files private-devel
|
||||
%_includedir/ffmpeg/private/
|
||||
|
||||
%changelog
|
43
ffmpeg-CVE-2023-49502.patch
Normal file
43
ffmpeg-CVE-2023-49502.patch
Normal file
@ -0,0 +1,43 @@
|
||||
From 737ede405b11a37fdd61d19cf25df296a0cb0b75
|
||||
From: Cosmin Stejerean <cosmin@cosmin.at>
|
||||
Date: Wed Dec 6 18:39:32 2023 +0800
|
||||
Subject: avfilter/bwdif: account for chroma sub-sampling in min size calculation
|
||||
References: https://bugzilla.opensuse.org/1223235
|
||||
References: CVE-2023-49502
|
||||
|
||||
The current logic for detecting frames that are too small for the
|
||||
algorithm does not account for chroma sub-sampling, and so a sample
|
||||
where the luma plane is large enough, but the chroma planes are not
|
||||
will not be rejected. In that event, a heap overflow will occur.
|
||||
|
||||
This change adjusts the logic to consider the chroma planes and makes
|
||||
the change to all three bwdif implementations.
|
||||
|
||||
Fixes #10688
|
||||
|
||||
Signed-off-by: Cosmin Stejerean <cosmin@cosmin.at>
|
||||
Reviewed-by: Thomas Mundt <tmundt75@gmail.com>
|
||||
Signed-off-by: Philip Langdale <philipl@overt.org>
|
||||
|
||||
diff -Nura ffmpeg-4.4.4/libavfilter/vf_bwdif.c ffmpeg-4.4.4_new/libavfilter/vf_bwdif.c
|
||||
--- ffmpeg-4.4.4/libavfilter/vf_bwdif.c 2023-04-13 02:01:50.000000000 +0800
|
||||
+++ ffmpeg-4.4.4_new/libavfilter/vf_bwdif.c 2024-04-26 02:21:48.162806014 +0800
|
||||
@@ -343,13 +343,14 @@
|
||||
if(yadif->mode&1)
|
||||
link->frame_rate = av_mul_q(link->src->inputs[0]->frame_rate, (AVRational){2,1});
|
||||
|
||||
- if (link->w < 3 || link->h < 4) {
|
||||
- av_log(ctx, AV_LOG_ERROR, "Video of less than 3 columns or 4 lines is not supported\n");
|
||||
+ yadif->csp = av_pix_fmt_desc_get(link->format);
|
||||
+ yadif->filter = filter;
|
||||
+
|
||||
+ if (AV_CEIL_RSHIFT(link->w, yadif->csp->log2_chroma_w) < 3 || AV_CEIL_RSHIFT(link->h, yadif->csp->log2_chroma_h) < 4) {
|
||||
+ av_log(ctx, AV_LOG_ERROR, "Video with planes less than 3 columns or 4 lines is not supported\n");
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
- yadif->csp = av_pix_fmt_desc_get(link->format);
|
||||
- yadif->filter = filter;
|
||||
if (yadif->csp->comp[0].depth > 8) {
|
||||
s->filter_intra = filter_intra_16bit;
|
||||
s->filter_line = filter_line_c_16bit;
|
30
ffmpeg-CVE-2023-50010.patch
Normal file
30
ffmpeg-CVE-2023-50010.patch
Normal file
@ -0,0 +1,30 @@
|
||||
commit e4d2666bdc3dbd177a81bbf428654a5f2fa3787a (20231224_CVE-2023-50010_e4d2666bdc3dbd177a81bbf428654a5f2fa3787a)
|
||||
Author: Michael Niedermayer <michael@niedermayer.cc>
|
||||
Date: Sun Dec 24 20:50:51 2023 +0100
|
||||
References: CVE-2023-50010
|
||||
References: https://bugzilla.opensuse.org/1172424
|
||||
|
||||
avfilter/vf_gradfun: Do not overread last line
|
||||
|
||||
The code works in steps of 2 lines and lacks support for odd height
|
||||
Implementing odd height support is better but for now this fixes the
|
||||
out of array access
|
||||
|
||||
Fixes: out of array access
|
||||
Fixes: tickets/10702/poc6ffmpe
|
||||
|
||||
Found-by: Zeng Yunxiang
|
||||
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
|
||||
|
||||
diff -Nura ffmpeg-4.4.4/libavfilter/vf_gradfun.c ffmpeg-4.4.4_new/libavfilter/vf_gradfun.c
|
||||
--- ffmpeg-4.4.4/libavfilter/vf_gradfun.c 2023-04-13 02:01:50.000000000 +0800
|
||||
+++ ffmpeg-4.4.4_new/libavfilter/vf_gradfun.c 2024-05-07 19:32:05.287848683 +0800
|
||||
@@ -93,7 +93,7 @@
|
||||
for (y = 0; y < r; y++)
|
||||
ctx->blur_line(dc, buf + y * bstride, buf + (y - 1) * bstride, src + 2 * y * src_linesize, src_linesize, width / 2);
|
||||
for (;;) {
|
||||
- if (y < height - r) {
|
||||
+ if (y + 1 < height - r) {
|
||||
int mod = ((y + r) / 2) % r;
|
||||
uint16_t *buf0 = buf + mod * bstride;
|
||||
uint16_t *buf1 = buf + (mod ? mod - 1 : r - 1) * bstride;
|
57
ffmpeg-CVE-2023-51793.patch
Normal file
57
ffmpeg-CVE-2023-51793.patch
Normal file
@ -0,0 +1,57 @@
|
||||
From 0ecc1f0e48930723d7a467761b66850811c23e62
|
||||
From: Michael Niedermayer <michael@niedermayer.cc>
|
||||
Date: Fri Dec 22 12:31:35 2023 +0100
|
||||
Subject: avfilter/vf_weave: Fix odd height handling
|
||||
References: https://bugzilla.opensuse.org/1223272
|
||||
References: CVE-2023-51793
|
||||
|
||||
Fixes: out of array access
|
||||
Fixes: tickets/10743/poc10ffmpeg
|
||||
|
||||
Found-by: Zeng Yunxiang and Li Zeyuan
|
||||
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
|
||||
|
||||
diff -Nura ffmpeg-4.4.4/libavfilter/vf_weave.c ffmpeg-4.4.4_new/libavfilter/vf_weave.c
|
||||
--- ffmpeg-4.4.4/libavfilter/vf_weave.c 2023-04-13 02:01:50.000000000 +0800
|
||||
+++ ffmpeg-4.4.4_new/libavfilter/vf_weave.c 2024-04-26 02:30:07.113807721 +0800
|
||||
@@ -30,6 +30,7 @@
|
||||
int double_weave;
|
||||
int nb_planes;
|
||||
int planeheight[4];
|
||||
+ int outheight[4];
|
||||
int linesize[4];
|
||||
|
||||
AVFrame *prev;
|
||||
@@ -85,6 +86,9 @@
|
||||
s->planeheight[1] = s->planeheight[2] = AV_CEIL_RSHIFT(inlink->h, desc->log2_chroma_h);
|
||||
s->planeheight[0] = s->planeheight[3] = inlink->h;
|
||||
|
||||
+ s->outheight[1] = s->outheight[2] = AV_CEIL_RSHIFT(2*inlink->h, desc->log2_chroma_h);
|
||||
+ s->outheight[0] = s->outheight[3] = 2*inlink->h;
|
||||
+
|
||||
s->nb_planes = av_pix_fmt_count_planes(inlink->format);
|
||||
|
||||
return 0;
|
||||
@@ -110,19 +114,20 @@
|
||||
const int height = s->planeheight[i];
|
||||
const int start = (height * jobnr) / nb_jobs;
|
||||
const int end = (height * (jobnr+1)) / nb_jobs;
|
||||
+ const int compensation = 2*end > s->outheight[i];
|
||||
|
||||
av_image_copy_plane(out->data[i] + out->linesize[i] * field1 +
|
||||
out->linesize[i] * start * 2,
|
||||
out->linesize[i] * 2,
|
||||
in->data[i] + start * in->linesize[i],
|
||||
in->linesize[i],
|
||||
- s->linesize[i], end - start);
|
||||
+ s->linesize[i], end - start - compensation * field1);
|
||||
av_image_copy_plane(out->data[i] + out->linesize[i] * field2 +
|
||||
out->linesize[i] * start * 2,
|
||||
out->linesize[i] * 2,
|
||||
s->prev->data[i] + start * s->prev->linesize[i],
|
||||
s->prev->linesize[i],
|
||||
- s->linesize[i], end - start);
|
||||
+ s->linesize[i], end - start - compensation * field2);
|
||||
}
|
||||
|
||||
return 0;
|
17
ffmpeg-arm6l.diff
Normal file
17
ffmpeg-arm6l.diff
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
libavutil/arm/timer.h | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: ffmpeg-4.4.1/libavutil/arm/timer.h
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.1.orig/libavutil/arm/timer.h
|
||||
+++ ffmpeg-4.4.1/libavutil/arm/timer.h
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
#define AV_READ_TIME mach_absolute_time
|
||||
|
||||
-#elif HAVE_INLINE_ASM && defined(__ARM_ARCH_7A__)
|
||||
+#elif HAVE_INLINE_ASM && defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_6ZK__)
|
||||
|
||||
#define AV_READ_TIME read_time
|
||||
|
37
ffmpeg-c99.patch
Normal file
37
ffmpeg-c99.patch
Normal file
@ -0,0 +1,37 @@
|
||||
From: Filip Kastl <fkastl@opensuse.org>
|
||||
Date: Fri, 26 Jul 2024 14:39:42 +0000
|
||||
|
||||
I based the package patch on this bug report (there's a patch in
|
||||
the comments)
|
||||
https://bugs.gentoo.org/936433
|
||||
|
||||
and on these patches
|
||||
https://ffmpeg.org/pipermail/ffmpeg-devel/2023-December/318685.html
|
||||
http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=5860a966d2fffbbda1af0014f0a4d37a21c4f2ca
|
||||
|
||||
Index: ffmpeg-4.4.4/libavutil/hwcontext_vaapi.c
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.4.orig/libavutil/hwcontext_vaapi.c
|
||||
+++ ffmpeg-4.4.4/libavutil/hwcontext_vaapi.c
|
||||
@@ -1032,7 +1032,7 @@ static int vaapi_map_from_drm(AVHWFrames
|
||||
uint32_t va_fourcc;
|
||||
int err, i, j, k;
|
||||
|
||||
- unsigned long buffer_handle;
|
||||
+ uintptr_t buffer_handle;
|
||||
VASurfaceAttribExternalBuffers buffer_desc;
|
||||
VASurfaceAttrib attrs[2] = {
|
||||
{
|
||||
Index: ffmpeg-4.4.4/libavutil/hwcontext_vulkan.c
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.4.orig/libavutil/hwcontext_vulkan.c
|
||||
+++ ffmpeg-4.4.4/libavutil/hwcontext_vulkan.c
|
||||
@@ -862,7 +862,7 @@ static void free_exec_ctx(AVHWFramesCont
|
||||
|
||||
av_freep(&cmd->queues);
|
||||
av_freep(&cmd->bufs);
|
||||
- cmd->pool = NULL;
|
||||
+ cmd->pool = VK_NULL_HANDLE;
|
||||
}
|
||||
|
||||
static VkCommandBuffer get_buf_exec_ctx(AVHWFramesContext *hwfc, VulkanExecCtx *cmd)
|
41
ffmpeg-chromium.patch
Normal file
41
ffmpeg-chromium.patch
Normal file
@ -0,0 +1,41 @@
|
||||
commit 95aab0fd83619408995720ce53d7a74790580220
|
||||
author liberato@chromium.org <liberato@chromium.org> Thu Jul 08 02:01:22 2021
|
||||
committer liberato@chromium.org <liberato@chromium.org> Thu Jul 08 02:01:22 2021
|
||||
tree ac725b5e2c548c8142aa7096d8184d87d3876a49
|
||||
parent e073b7a22e4993e0a7cab80a42a21524e5349f95
|
||||
|
||||
Add av_stream_get_first_dts for Chromium
|
||||
|
||||
Index: ffmpeg-4.4.2/libavformat/avformat.h
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.2.orig/libavformat/avformat.h
|
||||
+++ ffmpeg-4.4.2/libavformat/avformat.h
|
||||
@@ -1141,6 +1141,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
|
||||
|
||||
/**
|
||||
Index: ffmpeg-4.4.2/libavformat/utils.c
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.2.orig/libavformat/utils.c
|
||||
+++ ffmpeg-4.4.2/libavformat/utils.c
|
||||
@@ -142,6 +142,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 st->first_dts;
|
||||
+}
|
||||
+// Chromium: We use the internal field first_dts ^^^
|
||||
+
|
||||
struct AVCodecParserContext *av_stream_get_parser(const AVStream *st)
|
||||
{
|
||||
return st->parser;
|
56
ffmpeg-codec-choice.diff
Normal file
56
ffmpeg-codec-choice.diff
Normal file
@ -0,0 +1,56 @@
|
||||
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 | 19 +++++++++++++------
|
||||
1 file changed, 13 insertions(+), 6 deletions(-)
|
||||
|
||||
Index: ffmpeg-4.4.1/libavformat/matroskaenc.c
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.1.orig/libavformat/matroskaenc.c
|
||||
+++ ffmpeg-4.4.1/libavformat/matroskaenc.c
|
||||
@@ -2835,16 +2835,24 @@ static const AVClass matroska_class = {
|
||||
.version = LIBAVUTIL_VERSION_INT,
|
||||
};
|
||||
|
||||
+#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
|
||||
AVOutputFormat ff_matroska_muxer = {
|
||||
.name = "matroska",
|
||||
.long_name = NULL_IF_CONFIG_SMALL("Matroska"),
|
||||
.mime_type = "video/x-matroska",
|
||||
.extensions = "mkv",
|
||||
.priv_data_size = sizeof(MatroskaMuxContext),
|
||||
- .audio_codec = CONFIG_LIBVORBIS_ENCODER ?
|
||||
- AV_CODEC_ID_VORBIS : AV_CODEC_ID_AC3,
|
||||
- .video_codec = CONFIG_LIBX264_ENCODER ?
|
||||
- AV_CODEC_ID_H264 : AV_CODEC_ID_MPEG4,
|
||||
+ .audio_codec = PREFAUDIO,
|
||||
+ .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,
|
||||
@@ -2906,8 +2914,7 @@ AVOutputFormat ff_matroska_audio_muxer =
|
||||
.mime_type = "audio/x-matroska",
|
||||
.extensions = "mka",
|
||||
.priv_data_size = sizeof(MatroskaMuxContext),
|
||||
- .audio_codec = CONFIG_LIBVORBIS_ENCODER ?
|
||||
- AV_CODEC_ID_VORBIS : AV_CODEC_ID_AC3,
|
||||
+ .audio_codec = PREFAUDIO,
|
||||
.video_codec = AV_CODEC_ID_NONE,
|
||||
.init = mkv_init,
|
||||
.deinit = mkv_deinit,
|
35
ffmpeg-glslang-cxx17.patch
Normal file
35
ffmpeg-glslang-cxx17.patch
Normal file
@ -0,0 +1,35 @@
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: 2023-10-30 12:10:03.273303565 +0100
|
||||
|
||||
glslang 13 needs C++17.
|
||||
|
||||
---
|
||||
configure | 2 +-
|
||||
libavfilter/glslang.cpp | 1 +
|
||||
2 files changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: ffmpeg-4.4.4/configure
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.4.orig/configure
|
||||
+++ ffmpeg-4.4.4/configure
|
||||
@@ -5267,7 +5267,7 @@ fi
|
||||
|
||||
add_cppflags -D_ISOC99_SOURCE
|
||||
add_cxxflags -D__STDC_CONSTANT_MACROS
|
||||
-check_cxxflags -std=c++11 || check_cxxflags -std=c++0x
|
||||
+check_cxxflags -std=c++17
|
||||
|
||||
# some compilers silently accept -std=c11, so we also need to check that the
|
||||
# version macro is defined properly
|
||||
Index: ffmpeg-4.4.4/libavfilter/glslang.cpp
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.4.orig/libavfilter/glslang.cpp
|
||||
+++ ffmpeg-4.4.4/libavfilter/glslang.cpp
|
||||
@@ -16,6 +16,7 @@
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
*/
|
||||
|
||||
+#include <cassert>
|
||||
#include <pthread.h>
|
||||
|
||||
extern "C" {
|
18
ffmpeg-libglslang-detection.patch
Normal file
18
ffmpeg-libglslang-detection.patch
Normal file
@ -0,0 +1,18 @@
|
||||
Index: ffmpeg-4.4.3/configure
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.3.orig/configure
|
||||
+++ ffmpeg-4.4.3/configure
|
||||
@@ -6377,7 +6377,12 @@ enabled fontconfig && enable libf
|
||||
enabled libfontconfig && require_pkg_config libfontconfig fontconfig "fontconfig/fontconfig.h" FcInit
|
||||
enabled libfreetype && require_pkg_config libfreetype freetype2 "ft2build.h FT_FREETYPE_H" FT_Init_FreeType
|
||||
enabled libfribidi && require_pkg_config libfribidi fribidi fribidi.h fribidi_version_info
|
||||
-enabled libglslang && require_cpp libglslang glslang/SPIRV/GlslangToSpv.h "glslang::TIntermediate*" -lglslang -lMachineIndependent -lOSDependent -lHLSL -lOGLCompiler -lGenericCodeGen -lSPVRemapper -lSPIRV -lSPIRV-Tools-opt -lSPIRV-Tools -lpthread -lstdc++
|
||||
+enabled libglslang && { check_lib libglslang glslang/Include/glslang_c_interface.h glslang_initialize_process \
|
||||
+ -lglslang -lMachineIndependent -lOSDependent -lHLSL -lOGLCompiler -lGenericCodeGen \
|
||||
+ -lSPVRemapper -lSPIRV -lSPIRV-Tools-opt -lSPIRV-Tools -lpthread -lstdc++ -lm ||
|
||||
+ require libglslang glslang/Include/glslang_c_interface.h glslang_initialize_process \
|
||||
+ -lglslang -lOSDependent -lHLSL -lOGLCompiler \
|
||||
+ -lSPVRemapper -lSPIRV -lSPIRV-Tools-opt -lSPIRV-Tools -lpthread -lstdc++ -lm; }
|
||||
enabled libgme && { check_pkg_config libgme libgme gme/gme.h gme_new_emu ||
|
||||
require libgme gme/gme.h gme_new_emu -lgme -lstdc++; }
|
||||
enabled libgsm && { for gsm_hdr in "gsm.h" "gsm/gsm.h"; do
|
60
ffmpeg-new-coder-errors.diff
Normal file
60
ffmpeg-new-coder-errors.diff
Normal file
@ -0,0 +1,60 @@
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: 2016-04-10 23:23:53.138440254 +0200
|
||||
|
||||
Improve the error messages a bit to say what's really going on
|
||||
(in light of openSUSE's reduced build).
|
||||
|
||||
---
|
||||
fftools/ffmpeg.c | 2 +-
|
||||
fftools/ffmpeg_filter.c | 4 ++--
|
||||
fftools/ffmpeg_opt.c | 2 +-
|
||||
3 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
Index: ffmpeg-4.4.1/fftools/ffmpeg.c
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.1.orig/fftools/ffmpeg.c
|
||||
+++ ffmpeg-4.4.1/fftools/ffmpeg.c
|
||||
@@ -2954,7 +2954,7 @@ static int init_input_stream(int ist_ind
|
||||
if (ist->decoding_needed) {
|
||||
const AVCodec *codec = ist->dec;
|
||||
if (!codec) {
|
||||
- snprintf(error, error_len, "Decoder (codec %s) not found for input stream #%d:%d",
|
||||
+ snprintf(error, error_len, "This build of ffmpeg does not include a \"%s\" decoder needed for input stream #%d:%d.",
|
||||
avcodec_get_name(ist->dec_ctx->codec_id), ist->file_index, ist->st->index);
|
||||
return AVERROR(EINVAL);
|
||||
}
|
||||
Index: ffmpeg-4.4.1/fftools/ffmpeg_filter.c
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.1.orig/fftools/ffmpeg_filter.c
|
||||
+++ ffmpeg-4.4.1/fftools/ffmpeg_filter.c
|
||||
@@ -959,7 +959,7 @@ static int configure_input_filter(Filter
|
||||
{
|
||||
if (!ifilter->ist->dec) {
|
||||
av_log(NULL, AV_LOG_ERROR,
|
||||
- "No decoder for stream #%d:%d, filtering impossible\n",
|
||||
+ "This build of ffmpeg does not have a suitable decoder for stream #%d:%d enabled, filtering impossible\n",
|
||||
ifilter->ist->file_index, ifilter->ist->st->index);
|
||||
return AVERROR_DECODER_NOT_FOUND;
|
||||
}
|
||||
@@ -1103,7 +1103,7 @@ int configure_filtergraph(FilterGraph *f
|
||||
if (!ost->enc) {
|
||||
/* identical to the same check in ffmpeg.c, needed because
|
||||
complex filter graphs are initialized earlier */
|
||||
- av_log(NULL, AV_LOG_ERROR, "Encoder (codec %s) not found for output stream #%d:%d\n",
|
||||
+ av_log(NULL, AV_LOG_ERROR, "This build of ffmpeg does not include a \"%s\" encoder needed for output stream #%d:%d.\n",
|
||||
avcodec_get_name(ost->st->codecpar->codec_id), ost->file_index, ost->index);
|
||||
ret = AVERROR(EINVAL);
|
||||
goto fail;
|
||||
Index: ffmpeg-4.4.1/fftools/ffmpeg_opt.c
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.1.orig/fftools/ffmpeg_opt.c
|
||||
+++ ffmpeg-4.4.1/fftools/ffmpeg_opt.c
|
||||
@@ -1400,7 +1400,7 @@ static int choose_encoder(OptionsContext
|
||||
if (!ost->enc) {
|
||||
av_log(NULL, AV_LOG_FATAL, "Automatic encoder selection failed for "
|
||||
"output stream #%d:%d. Default encoder for format %s (codec %s) is "
|
||||
- "probably disabled. Please choose an encoder manually.\n",
|
||||
+ "probably disabled or this build of ffmpeg does not include that codec. Please choose an encoder manually.\n",
|
||||
ost->file_index, ost->index, s->oformat->name,
|
||||
avcodec_get_name(ost->st->codecpar->codec_id));
|
||||
return AVERROR_ENCODER_NOT_FOUND;
|
43
soversion.patch
Normal file
43
soversion.patch
Normal file
@ -0,0 +1,43 @@
|
||||
From: Jan Engelhardt <jengelh@inai.de>
|
||||
Date: 2020-07-04 23:56:54.411950316 +0200
|
||||
|
||||
User frispete wrote on 2020-6-26 22:13+0000 at
|
||||
https://build.opensuse.org/package/show/multimedia:libs/ffmpeg-4#comment-1257440
|
||||
: """Unfortunately, this version is binary incompatible to 4.2.3 in some
|
||||
aspects. [...]"""
|
||||
|
||||
Further discussion on the mailing list explored this topic, and
|
||||
revealed that ELF symbol versioning is lacklusterly implemented in
|
||||
ffmpeg, which can cause inadvertent mixing of library versions on
|
||||
openSUSE, and precompiled Linux distributions in general. It is
|
||||
unclear when upstream will have implemented a solution. Until then,
|
||||
we will need to tighten the requirements between packages, to which
|
||||
end we stretch the SOVERSION to include MINOR.
|
||||
|
||||
Programs linking to libavcodec get the right DT_NEEDED field with value
|
||||
libavcodec.so.58.91, and so they do not request libavcodec.so.58 (which could
|
||||
potentially lead to libavcodec.so.58.54).
|
||||
Programs dlopening libavcodec.so.58 will get something random, that's
|
||||
what dlopening programs have to deal with.
|
||||
|
||||
---
|
||||
configure | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
Index: ffmpeg-4.4.1/configure
|
||||
===================================================================
|
||||
--- ffmpeg-4.4.1.orig/configure
|
||||
+++ ffmpeg-4.4.1/configure
|
||||
@@ -3834,10 +3834,10 @@ SLIBPREF="lib"
|
||||
SLIBSUF=".so"
|
||||
SLIBNAME='$(SLIBPREF)$(FULLNAME)$(SLIBSUF)'
|
||||
SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
|
||||
-SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
|
||||
+SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR).$(LIBMINOR)'
|
||||
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
|
||||
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
|
||||
-SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
|
||||
+SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME) $(SLIBNAME).$(LIBMAJOR)'
|
||||
VERSION_SCRIPT_POSTPROCESS_CMD="cat"
|
||||
|
||||
asflags_filter=echo
|
Loading…
Reference in New Issue
Block a user