[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