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".

Reply via email to