commit: 9b4962ff1c89d5c3babd45e14542dba97d4ae74f
parent a91cb6432e5f24ba52c616846500fcea6ab2e8b6
Author: Michael Forney <mforney@mforney.org>
Date: Tue, 7 Sep 2021 02:09:18 -0700
ffmpeg: Various portability fixes
Diffstat:
7 files changed, 356 insertions(+), 1 deletion(-)
diff --git a/pkg/ffmpeg/patch/0002-libavutil-Remove-last-use-of-long-double.patch b/pkg/ffmpeg/patch/0002-libavutil-Remove-last-use-of-long-double.patch
@@ -0,0 +1,27 @@
+From ac61188ac8c177bceb48dd2b373caaf7a639f266 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Tue, 7 Sep 2021 01:39:36 -0700
+Subject: [PATCH] libavutil: Remove last use of long double
+
+The commit that introduced this file mentioned converting all long
+double to double, so presumably this one was just missed.
+---
+ libavutil/avsscanf.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libavutil/avsscanf.c b/libavutil/avsscanf.c
+index b7f0f71c2d..31530dde67 100644
+--- a/libavutil/avsscanf.c
++++ b/libavutil/avsscanf.c
+@@ -440,7 +440,7 @@ static double decfloat(FFFILE *f, int c, int bits, int emin, int sign, int pok)
+ /* Assemble desired bits into floating point variable */
+ for (y=i=0; i<LD_B1B_DIG; i++) {
+ if ((a+i & MASK)==z) x[(z=(z+1 & MASK))-1] = 0;
+- y = 1000000000.0L * y + x[a+i & MASK];
++ y = 1000000000.0 * y + x[a+i & MASK];
+ }
+
+ y *= sign;
+--
+2.32.0
+
diff --git a/pkg/ffmpeg/patch/0003-libavcodec-Prevent-stray-semicolon-at-top-level.patch b/pkg/ffmpeg/patch/0003-libavcodec-Prevent-stray-semicolon-at-top-level.patch
@@ -0,0 +1,114 @@
+From 0f75976c934056c63100b9c13abbf8ac3caa1007 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Tue, 7 Sep 2021 01:41:48 -0700
+Subject: [PATCH] libavcodec: Prevent stray semicolon at top-level
+
+If any of these codecs are disabled, we end up with a stray semicolon,
+which is not allowed in ISO C.
+
+Instead, move the semicolon to the macro definition, so that there
+is no problem if it expands to an empty token sequence.
+---
+ libavcodec/pcm.c | 72 ++++++++++++++++++++++++------------------------
+ 1 file changed, 36 insertions(+), 36 deletions(-)
+
+diff --git a/libavcodec/pcm.c b/libavcodec/pcm.c
+index 19d04e9181..3ab2d4555c 100644
+--- a/libavcodec/pcm.c
++++ b/libavcodec/pcm.c
+@@ -561,7 +561,7 @@ AVCodec ff_ ## name_ ## _encoder = { \
+ .sample_fmts = (const enum AVSampleFormat[]){ sample_fmt_, \
+ AV_SAMPLE_FMT_NONE }, \
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, \
+-}
++};
+
+ #define PCM_ENCODER_2(cf, id, sample_fmt, name, long_name) \
+ PCM_ENCODER_ ## cf(id, sample_fmt, name, long_name)
+@@ -584,7 +584,7 @@ AVCodec ff_ ## name_ ## _decoder = { \
+ .sample_fmts = (const enum AVSampleFormat[]){ sample_fmt_, \
+ AV_SAMPLE_FMT_NONE }, \
+ .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, \
+-}
++};
+
+ #define PCM_DECODER_2(cf, id, sample_fmt, name, long_name) \
+ PCM_DECODER_ ## cf(id, sample_fmt, name, long_name)
+@@ -594,40 +594,40 @@ AVCodec ff_ ## name_ ## _decoder = { \
+ PCM_DECODER_3(CONFIG_ ## id ## _DECODER, id, sample_fmt, name, long_name)
+
+ #define PCM_CODEC(id, sample_fmt_, name, long_name_) \
+- PCM_ENCODER(id, sample_fmt_, name, long_name_); \
++ PCM_ENCODER(id, sample_fmt_, name, long_name_) \
+ PCM_DECODER(id, sample_fmt_, name, long_name_)
+
+ /* Note: Do not forget to add new entries to the Makefile as well. */
+-PCM_CODEC (PCM_ALAW, AV_SAMPLE_FMT_S16, pcm_alaw, "PCM A-law / G.711 A-law");
+-PCM_DECODER(PCM_F16LE, AV_SAMPLE_FMT_FLT, pcm_f16le, "PCM 16.8 floating point little-endian");
+-PCM_DECODER(PCM_F24LE, AV_SAMPLE_FMT_FLT, pcm_f24le, "PCM 24.0 floating point little-endian");
+-PCM_CODEC (PCM_F32BE, AV_SAMPLE_FMT_FLT, pcm_f32be, "PCM 32-bit floating point big-endian");
+-PCM_CODEC (PCM_F32LE, AV_SAMPLE_FMT_FLT, pcm_f32le, "PCM 32-bit floating point little-endian");
+-PCM_CODEC (PCM_F64BE, AV_SAMPLE_FMT_DBL, pcm_f64be, "PCM 64-bit floating point big-endian");
+-PCM_CODEC (PCM_F64LE, AV_SAMPLE_FMT_DBL, pcm_f64le, "PCM 64-bit floating point little-endian");
+-PCM_DECODER(PCM_LXF, AV_SAMPLE_FMT_S32P,pcm_lxf, "PCM signed 20-bit little-endian planar");
+-PCM_CODEC (PCM_MULAW, AV_SAMPLE_FMT_S16, pcm_mulaw, "PCM mu-law / G.711 mu-law");
+-PCM_CODEC (PCM_S8, AV_SAMPLE_FMT_U8, pcm_s8, "PCM signed 8-bit");
+-PCM_CODEC (PCM_S8_PLANAR, AV_SAMPLE_FMT_U8P, pcm_s8_planar, "PCM signed 8-bit planar");
+-PCM_CODEC (PCM_S16BE, AV_SAMPLE_FMT_S16, pcm_s16be, "PCM signed 16-bit big-endian");
+-PCM_CODEC (PCM_S16BE_PLANAR, AV_SAMPLE_FMT_S16P,pcm_s16be_planar, "PCM signed 16-bit big-endian planar");
+-PCM_CODEC (PCM_S16LE, AV_SAMPLE_FMT_S16, pcm_s16le, "PCM signed 16-bit little-endian");
+-PCM_CODEC (PCM_S16LE_PLANAR, AV_SAMPLE_FMT_S16P,pcm_s16le_planar, "PCM signed 16-bit little-endian planar");
+-PCM_CODEC (PCM_S24BE, AV_SAMPLE_FMT_S32, pcm_s24be, "PCM signed 24-bit big-endian");
+-PCM_CODEC (PCM_S24DAUD, AV_SAMPLE_FMT_S16, pcm_s24daud, "PCM D-Cinema audio signed 24-bit");
+-PCM_CODEC (PCM_S24LE, AV_SAMPLE_FMT_S32, pcm_s24le, "PCM signed 24-bit little-endian");
+-PCM_CODEC (PCM_S24LE_PLANAR, AV_SAMPLE_FMT_S32P,pcm_s24le_planar, "PCM signed 24-bit little-endian planar");
+-PCM_CODEC (PCM_S32BE, AV_SAMPLE_FMT_S32, pcm_s32be, "PCM signed 32-bit big-endian");
+-PCM_CODEC (PCM_S32LE, AV_SAMPLE_FMT_S32, pcm_s32le, "PCM signed 32-bit little-endian");
+-PCM_CODEC (PCM_S32LE_PLANAR, AV_SAMPLE_FMT_S32P,pcm_s32le_planar, "PCM signed 32-bit little-endian planar");
+-PCM_CODEC (PCM_U8, AV_SAMPLE_FMT_U8, pcm_u8, "PCM unsigned 8-bit");
+-PCM_CODEC (PCM_U16BE, AV_SAMPLE_FMT_S16, pcm_u16be, "PCM unsigned 16-bit big-endian");
+-PCM_CODEC (PCM_U16LE, AV_SAMPLE_FMT_S16, pcm_u16le, "PCM unsigned 16-bit little-endian");
+-PCM_CODEC (PCM_U24BE, AV_SAMPLE_FMT_S32, pcm_u24be, "PCM unsigned 24-bit big-endian");
+-PCM_CODEC (PCM_U24LE, AV_SAMPLE_FMT_S32, pcm_u24le, "PCM unsigned 24-bit little-endian");
+-PCM_CODEC (PCM_U32BE, AV_SAMPLE_FMT_S32, pcm_u32be, "PCM unsigned 32-bit big-endian");
+-PCM_CODEC (PCM_U32LE, AV_SAMPLE_FMT_S32, pcm_u32le, "PCM unsigned 32-bit little-endian");
+-PCM_CODEC (PCM_S64BE, AV_SAMPLE_FMT_S64, pcm_s64be, "PCM signed 64-bit big-endian");
+-PCM_CODEC (PCM_S64LE, AV_SAMPLE_FMT_S64, pcm_s64le, "PCM signed 64-bit little-endian");
+-PCM_CODEC (PCM_VIDC, AV_SAMPLE_FMT_S16, pcm_vidc, "PCM Archimedes VIDC");
+-PCM_DECODER(PCM_SGA, AV_SAMPLE_FMT_U8, pcm_sga, "PCM SGA");
++PCM_CODEC (PCM_ALAW, AV_SAMPLE_FMT_S16, pcm_alaw, "PCM A-law / G.711 A-law")
++PCM_DECODER(PCM_F16LE, AV_SAMPLE_FMT_FLT, pcm_f16le, "PCM 16.8 floating point little-endian")
++PCM_DECODER(PCM_F24LE, AV_SAMPLE_FMT_FLT, pcm_f24le, "PCM 24.0 floating point little-endian")
++PCM_CODEC (PCM_F32BE, AV_SAMPLE_FMT_FLT, pcm_f32be, "PCM 32-bit floating point big-endian")
++PCM_CODEC (PCM_F32LE, AV_SAMPLE_FMT_FLT, pcm_f32le, "PCM 32-bit floating point little-endian")
++PCM_CODEC (PCM_F64BE, AV_SAMPLE_FMT_DBL, pcm_f64be, "PCM 64-bit floating point big-endian")
++PCM_CODEC (PCM_F64LE, AV_SAMPLE_FMT_DBL, pcm_f64le, "PCM 64-bit floating point little-endian")
++PCM_DECODER(PCM_LXF, AV_SAMPLE_FMT_S32P,pcm_lxf, "PCM signed 20-bit little-endian planar")
++PCM_CODEC (PCM_MULAW, AV_SAMPLE_FMT_S16, pcm_mulaw, "PCM mu-law / G.711 mu-law")
++PCM_CODEC (PCM_S8, AV_SAMPLE_FMT_U8, pcm_s8, "PCM signed 8-bit")
++PCM_CODEC (PCM_S8_PLANAR, AV_SAMPLE_FMT_U8P, pcm_s8_planar, "PCM signed 8-bit planar")
++PCM_CODEC (PCM_S16BE, AV_SAMPLE_FMT_S16, pcm_s16be, "PCM signed 16-bit big-endian")
++PCM_CODEC (PCM_S16BE_PLANAR, AV_SAMPLE_FMT_S16P,pcm_s16be_planar, "PCM signed 16-bit big-endian planar")
++PCM_CODEC (PCM_S16LE, AV_SAMPLE_FMT_S16, pcm_s16le, "PCM signed 16-bit little-endian")
++PCM_CODEC (PCM_S16LE_PLANAR, AV_SAMPLE_FMT_S16P,pcm_s16le_planar, "PCM signed 16-bit little-endian planar")
++PCM_CODEC (PCM_S24BE, AV_SAMPLE_FMT_S32, pcm_s24be, "PCM signed 24-bit big-endian")
++PCM_CODEC (PCM_S24DAUD, AV_SAMPLE_FMT_S16, pcm_s24daud, "PCM D-Cinema audio signed 24-bit")
++PCM_CODEC (PCM_S24LE, AV_SAMPLE_FMT_S32, pcm_s24le, "PCM signed 24-bit little-endian")
++PCM_CODEC (PCM_S24LE_PLANAR, AV_SAMPLE_FMT_S32P,pcm_s24le_planar, "PCM signed 24-bit little-endian planar")
++PCM_CODEC (PCM_S32BE, AV_SAMPLE_FMT_S32, pcm_s32be, "PCM signed 32-bit big-endian")
++PCM_CODEC (PCM_S32LE, AV_SAMPLE_FMT_S32, pcm_s32le, "PCM signed 32-bit little-endian")
++PCM_CODEC (PCM_S32LE_PLANAR, AV_SAMPLE_FMT_S32P,pcm_s32le_planar, "PCM signed 32-bit little-endian planar")
++PCM_CODEC (PCM_U8, AV_SAMPLE_FMT_U8, pcm_u8, "PCM unsigned 8-bit")
++PCM_CODEC (PCM_U16BE, AV_SAMPLE_FMT_S16, pcm_u16be, "PCM unsigned 16-bit big-endian")
++PCM_CODEC (PCM_U16LE, AV_SAMPLE_FMT_S16, pcm_u16le, "PCM unsigned 16-bit little-endian")
++PCM_CODEC (PCM_U24BE, AV_SAMPLE_FMT_S32, pcm_u24be, "PCM unsigned 24-bit big-endian")
++PCM_CODEC (PCM_U24LE, AV_SAMPLE_FMT_S32, pcm_u24le, "PCM unsigned 24-bit little-endian")
++PCM_CODEC (PCM_U32BE, AV_SAMPLE_FMT_S32, pcm_u32be, "PCM unsigned 32-bit big-endian")
++PCM_CODEC (PCM_U32LE, AV_SAMPLE_FMT_S32, pcm_u32le, "PCM unsigned 32-bit little-endian")
++PCM_CODEC (PCM_S64BE, AV_SAMPLE_FMT_S64, pcm_s64be, "PCM signed 64-bit big-endian")
++PCM_CODEC (PCM_S64LE, AV_SAMPLE_FMT_S64, pcm_s64le, "PCM signed 64-bit little-endian")
++PCM_CODEC (PCM_VIDC, AV_SAMPLE_FMT_S16, pcm_vidc, "PCM Archimedes VIDC")
++PCM_DECODER(PCM_SGA, AV_SAMPLE_FMT_U8, pcm_sga, "PCM SGA")
+--
+2.32.0
+
diff --git a/pkg/ffmpeg/patch/0004-libavformat-Use-C99-__func__-instead-of-non-standard.patch b/pkg/ffmpeg/patch/0004-libavformat-Use-C99-__func__-instead-of-non-standard.patch
@@ -0,0 +1,58 @@
+From f3b0469079853d304fe583f9849f3f75138ee980 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Tue, 7 Sep 2021 01:43:25 -0700
+Subject: [PATCH] libavformat: Use C99 __func__ instead of non-standard
+ __FUNCTION__
+
+---
+ libavformat/mux.c | 2 +-
+ libavformat/utils.c | 6 +++---
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/libavformat/mux.c b/libavformat/mux.c
+index 6a557d294e..23eda49eb6 100644
+--- a/libavformat/mux.c
++++ b/libavformat/mux.c
+@@ -1135,7 +1135,7 @@ static int write_packet_common(AVFormatContext *s, AVStream *st, AVPacket *pkt,
+ int ret;
+
+ if (s->debug & FF_FDEBUG_TS)
+- av_log(s, AV_LOG_DEBUG, "%s size:%d dts:%s pts:%s\n", __FUNCTION__,
++ av_log(s, AV_LOG_DEBUG, "%s size:%d dts:%s pts:%s\n", __func__,
+ pkt->size, av_ts2str(pkt->dts), av_ts2str(pkt->pts));
+
+ guess_pkt_duration(s, st, pkt);
+diff --git a/libavformat/utils.c b/libavformat/utils.c
+index 1384b56771..05a3e0221f 100644
+--- a/libavformat/utils.c
++++ b/libavformat/utils.c
+@@ -3702,7 +3702,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
+ && codec && !avctx->codec) {
+ if (avcodec_open2(avctx, codec, options ? &options[i] : &thread_opt) < 0)
+ av_log(ic, AV_LOG_WARNING,
+- "Failed to open codec in %s\n",__FUNCTION__);
++ "Failed to open codec in %s\n", __func__);
+ }
+
+ // Try to just open decoders, in case this is enough to get parameters.
+@@ -3710,7 +3710,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
+ if (codec && !avctx->codec)
+ if (avcodec_open2(avctx, codec, options ? &options[i] : &thread_opt) < 0)
+ av_log(ic, AV_LOG_WARNING,
+- "Failed to open codec in %s\n",__FUNCTION__);
++ "Failed to open codec in %s\n", __func__);
+ }
+ if (!options)
+ av_dict_free(&thread_opt);
+@@ -3965,7 +3965,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
+ av_dict_set(&opts, "codec_whitelist", ic->codec_whitelist, 0);
+ if (avcodec_open2(avctx, codec, (options && stream_index < orig_nb_streams) ? &options[stream_index] : &opts) < 0)
+ av_log(ic, AV_LOG_WARNING,
+- "Failed to open codec in %s\n",__FUNCTION__);
++ "Failed to open codec in %s\n", __func__);
+ av_dict_free(&opts);
+ }
+ }
+--
+2.32.0
+
diff --git a/pkg/ffmpeg/patch/0005-libavcodec-Use-if-to-prevent-some-unintended-depende.patch b/pkg/ffmpeg/patch/0005-libavcodec-Use-if-to-prevent-some-unintended-depende.patch
@@ -0,0 +1,65 @@
+From 0785a7f2102a9c8f50f19c7b4addbd849e071abc Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Tue, 7 Sep 2021 01:44:53 -0700
+Subject: [PATCH] libavcodec: Use #if to prevent some unintended dependencies
+
+---
+ libavcodec/h263.h | 2 ++
+ libavcodec/mpegvideo_motion.c | 10 ++++++----
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/libavcodec/h263.h b/libavcodec/h263.h
+index 998f7d0d59..4d867d7bf2 100644
+--- a/libavcodec/h263.h
++++ b/libavcodec/h263.h
+@@ -98,6 +98,7 @@ int ff_h263_resync(MpegEncContext *s);
+ void ff_h263_encode_motion(PutBitContext *pb, int val, int f_code);
+
+
++#if CONFIG_H263_ENCODER
+ static inline int h263_get_motion_length(int val, int f_code){
+ int l, bit_size, code;
+
+@@ -182,5 +183,6 @@ static inline int get_p_cbp(MpegEncContext * s,
+ }
+ return cbp;
+ }
++#endif
+
+ #endif /* AVCODEC_H263_H */
+diff --git a/libavcodec/mpegvideo_motion.c b/libavcodec/mpegvideo_motion.c
+index 427bc96887..081c251d11 100644
+--- a/libavcodec/mpegvideo_motion.c
++++ b/libavcodec/mpegvideo_motion.c
+@@ -359,10 +359,11 @@ void mpeg_motion_internal(MpegEncContext *s,
+ pix_op[s->chroma_x_shift][uvdxy]
+ (dest_cr, ptr_cr, uvlinesize, h >> s->chroma_y_shift);
+ }
+- if (!is_mpeg12 && (CONFIG_H261_ENCODER || CONFIG_H261_DECODER) &&
+- s->out_format == FMT_H261) {
++#if CONFIG_H261_ENCODER || CONFIG_H261_DECODER
++ if (!is_mpeg12 && s->out_format == FMT_H261) {
+ ff_h261_loop_filter(s);
+ }
++#endif
+ }
+ /* apply one mpeg motion vector to the three components */
+ static void mpeg_motion(MpegEncContext *s,
+@@ -861,11 +862,12 @@ static av_always_inline void mpv_motion_internal(MpegEncContext *s,
+ 0, 0, 0,
+ ref_picture, pix_op, qpix_op,
+ s->mv[dir][0][0], s->mv[dir][0][1], 16);
+- } else if (!is_mpeg12 && (CONFIG_WMV2_DECODER || CONFIG_WMV2_ENCODER) &&
+- s->mspel && s->codec_id == AV_CODEC_ID_WMV2) {
++#if CONFIG_WMV2_DECODER || CONFIG_WMV2_ENCODER
++ } else if (!is_mpeg12 && s->mspel && s->codec_id == AV_CODEC_ID_WMV2) {
+ ff_mspel_motion(s, dest_y, dest_cb, dest_cr,
+ ref_picture, pix_op,
+ s->mv[dir][0][0], s->mv[dir][0][1], 16);
++#endif
+ } else {
+ mpeg_motion(s, dest_y, dest_cb, dest_cr, 0,
+ ref_picture, pix_op,
+--
+2.32.0
+
diff --git a/pkg/ffmpeg/patch/0006-libavutil-Use-config-instead-of-compiler-to-determin.patch b/pkg/ffmpeg/patch/0006-libavutil-Use-config-instead-of-compiler-to-determin.patch
@@ -0,0 +1,61 @@
+From 638e9a0d00cf2154224eb6f48e5c90a99ad4fdf1 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Tue, 7 Sep 2021 01:46:57 -0700
+Subject: [PATCH] libavutil: Use config instead of compiler to determine
+ support for inline asm
+
+---
+ libavutil/x86/intreadwrite.h | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/libavutil/x86/intreadwrite.h b/libavutil/x86/intreadwrite.h
+index 4061d19231..b7d19ed8a3 100644
+--- a/libavutil/x86/intreadwrite.h
++++ b/libavutil/x86/intreadwrite.h
+@@ -25,9 +25,9 @@
+ #include "config.h"
+ #include "libavutil/attributes.h"
+
+-#if HAVE_MMX
++#if HAVE_MMX_INLINE
+
+-#if !HAVE_FAST_64BIT && defined(__MMX__)
++#if !HAVE_FAST_64BIT
+
+ #define AV_COPY64 AV_COPY64
+ static av_always_inline void AV_COPY64(void *d, const void *s)
+@@ -59,9 +59,9 @@ static av_always_inline void AV_ZERO64(void *d)
+ :: "mm0");
+ }
+
+-#endif /* !HAVE_FAST_64BIT && defined(__MMX__) */
++#endif /* !HAVE_FAST_64BIT */
+
+-#ifdef __SSE__
++#if HAVE_SSE_INLINE
+
+ #define AV_COPY128 AV_COPY128
+ static av_always_inline void AV_COPY128(void *d, const void *s)
+@@ -77,7 +77,7 @@ static av_always_inline void AV_COPY128(void *d, const void *s)
+
+ #endif /* __SSE__ */
+
+-#ifdef __SSE2__
++#if HAVE_SSE2_INLINE
+
+ #define AV_ZERO128 AV_ZERO128
+ static av_always_inline void AV_ZERO128(void *d)
+@@ -90,8 +90,8 @@ static av_always_inline void AV_ZERO128(void *d)
+ :: "xmm0");
+ }
+
+-#endif /* __SSE2__ */
++#endif /* HAVE_SSE2_INLINE */
+
+-#endif /* HAVE_MMX */
++#endif /* HAVE_MMX_INLINE */
+
+ #endif /* AVUTIL_X86_INTREADWRITE_H */
+--
+2.32.0
+
diff --git a/pkg/ffmpeg/patch/0007-HACK-Disable-__has_builtin-for-now.patch b/pkg/ffmpeg/patch/0007-HACK-Disable-__has_builtin-for-now.patch
@@ -0,0 +1,30 @@
+From 9caa1ecbdf94a9bd5bedc83c602b30821f7fdd23 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Tue, 7 Sep 2021 02:01:31 -0700
+Subject: [PATCH] [HACK] Disable __has_builtin for now
+
+This is only used for detecting __builtin_add_overflow, but since
+we use gcc as a preprocessor for cproc, we have no way to tell it
+we don't support that feature. Since the built-in is used regardless
+of __has_builtin on gcc 5.1 or newer, just disable it for now until
+the cproc preprocessor is complete.
+---
+ libavutil/attributes.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libavutil/attributes.h b/libavutil/attributes.h
+index 5cb9fe3452..d70d98abb1 100644
+--- a/libavutil/attributes.h
++++ b/libavutil/attributes.h
+@@ -34,7 +34,7 @@
+ # define AV_GCC_VERSION_AT_MOST(x,y) 0
+ #endif
+
+-#ifdef __has_builtin
++#if 0
+ # define AV_HAS_BUILTIN(x) __has_builtin(x)
+ #else
+ # define AV_HAS_BUILTIN(x) 0
+--
+2.32.0
+
diff --git a/pkg/ffmpeg/ver b/pkg/ffmpeg/ver
@@ -1 +1 @@
-4.4 r0
+4.4 r1