On Sun, 8 Sep 2024, James Almer wrote:
It's non-standard C.
Signed-off-by: James Almer <jamr...@gmail.com>
---
libavcodec/avcodec.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c
index cb89236549..78153d12f1 100644
--- a/libavcodec/avcodec.c
+++ b/libavcodec/avcodec.c
@@ -708,9 +708,9 @@ int attribute_align_arg
avcodec_receive_frame(AVCodecContext *avctx, AVFrame *fr
return ff_encode_receive_frame(avctx, frame);
}
-#define WRAP_CONFIG(allowed_type, field, terminator) \
+#define WRAP_CONFIG(allowed_type, field, field_type, terminator) \
do { \
- static const __typeof__(*(field)) end = terminator; \
+ static const field_type end = terminator; \
if (codec->type != (allowed_type)) \
return AVERROR(EINVAL); \
*out_configs = (field); \
@@ -753,15 +753,15 @@ int ff_default_get_supported_config(const AVCodecContext
*avctx,
switch (config) {
FF_DISABLE_DEPRECATION_WARNINGS
case AV_CODEC_CONFIG_PIX_FORMAT:
- WRAP_CONFIG(AVMEDIA_TYPE_VIDEO, codec->pix_fmts, AV_PIX_FMT_NONE);
+ WRAP_CONFIG(AVMEDIA_TYPE_VIDEO, codec->pix_fmts, enum AVPixelFormat,
AV_PIX_FMT_NONE);
case AV_CODEC_CONFIG_FRAME_RATE:
- WRAP_CONFIG(AVMEDIA_TYPE_VIDEO, codec->supported_framerates,
(AVRational){0});
+ WRAP_CONFIG(AVMEDIA_TYPE_VIDEO, codec->supported_framerates,
AVRational, (AVRational){0});
case AV_CODEC_CONFIG_SAMPLE_RATE:
- WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, codec->supported_samplerates, 0);
+ WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, codec->supported_samplerates, int, 0);
case AV_CODEC_CONFIG_SAMPLE_FORMAT:
- WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, codec->sample_fmts,
AV_SAMPLE_FMT_NONE);
+ WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, codec->sample_fmts, enum
AVSampleFormat, AV_SAMPLE_FMT_NONE);
case AV_CODEC_CONFIG_CHANNEL_LAYOUT:
- WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, codec->ch_layouts,
(AVChannelLayout){0});
+ WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, codec->ch_layouts, AVChannelLayout,
(AVChannelLayout){0});
FF_ENABLE_DEPRECATION_WARNINGS
case AV_CODEC_CONFIG_COLOR_RANGE:
--
2.46.0
Actually, this isn't quite enough to fix compilation with all compilers:
src/libavcodec/avcodec.c: In function 'ff_default_get_supported_config':
src/libavcodec/avcodec.c:758:9: error: initializer element is not constant
WRAP_CONFIG(AVMEDIA_TYPE_VIDEO, codec->supported_framerates,
AVRational, (AVRational){0});
^
src/libavcodec/avcodec.c:764:9: error: initializer element is not constant
WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, codec->ch_layouts,
AVChannelLayout, (AVChannelLayout){0});
^
Since we're not using typeof here, we can drop the casts here and just use
plain {0}:
diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c
index 78153d12f1..8d1a280323 100644
--- a/libavcodec/avcodec.c
+++ b/libavcodec/avcodec.c
@@ -755,13 +755,13 @@ FF_DISABLE_DEPRECATION_WARNINGS
case AV_CODEC_CONFIG_PIX_FORMAT:
WRAP_CONFIG(AVMEDIA_TYPE_VIDEO, codec->pix_fmts, enum AVPixelFormat,
AV_PIX_FMT_NONE);
case AV_CODEC_CONFIG_FRAME_RATE:
- WRAP_CONFIG(AVMEDIA_TYPE_VIDEO, codec->supported_framerates,
AVRational, (AVRational){0});
+ WRAP_CONFIG(AVMEDIA_TYPE_VIDEO, codec->supported_framerates,
AVRational, {0});
case AV_CODEC_CONFIG_SAMPLE_RATE:
WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, codec->supported_samplerates, int, 0);
case AV_CODEC_CONFIG_SAMPLE_FORMAT:
WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, codec->sample_fmts, enum
AVSampleFormat, AV_SAMPLE_FMT_NONE);
case AV_CODEC_CONFIG_CHANNEL_LAYOUT:
- WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, codec->ch_layouts, AVChannelLayout,
(AVChannelLayout){0});
+ WRAP_CONFIG(AVMEDIA_TYPE_AUDIO, codec->ch_layouts, AVChannelLayout,
{0});
FF_ENABLE_DEPRECATION_WARNINGS
// Martin
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".