[FFmpeg-devel] [PATCH] avcodec/avcodec: remove usage of __typeof__()

Rémi Denis-Courmont remi at remlab.net
Mon Sep 9 10:41:59 EEST 2024



Le 8 septembre 2024 22:22:01 GMT+03:00, James Almer <jamrial at gmail.com> a écrit :
>It's non-standard C.

The description is a little bit misleading. `typeof` is standard C (as of last year). Sure, technically `__typeof__` is not standard but this is easily misinterpreted.

Also TBH, this change seems highly error prone.

>
>Signed-off-by: James Almer <jamrial at 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:


More information about the ffmpeg-devel mailing list