ffmpeg | branch: master | Andreas Rheinhardt <[email protected]> | Fri Sep 24 05:15:02 2021 +0200| [0d97317429520b97d5817d713d6ffe7de78d0068] | committer: Andreas Rheinhardt
avcodec/tests/avcodec: Add basic sanity checks for AVCodec properties Reviewed-by: Michael Niedermayer <[email protected]> Signed-off-by: Andreas Rheinhardt <[email protected]> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0d97317429520b97d5817d713d6ffe7de78d0068 --- libavcodec/tests/avcodec.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/libavcodec/tests/avcodec.c b/libavcodec/tests/avcodec.c index 9232647ff0..2b8a9a5d0f 100644 --- a/libavcodec/tests/avcodec.c +++ b/libavcodec/tests/avcodec.c @@ -18,12 +18,48 @@ #include "libavcodec/avcodec.h" +static const char *get_type_string(enum AVMediaType type) +{ + const char *ret = av_get_media_type_string(type); + return ret ? ret : "unknown"; +} + +#define AV_LOG(...) av_log(NULL, AV_LOG_FATAL, __VA_ARGS__) +#define ERR_INTERNAL(msg, ...) \ +do { \ + AV_LOG(msg, codec->name __VA_ARGS__); \ + ret = 1; \ +} while (0) +#define ERR(msg) ERR_INTERNAL(msg, ) +#define ERR_EXT(msg, ...) ERR_INTERNAL(msg, , __VA_ARGS__) + int main(void){ void *iter = NULL; const AVCodec *codec = NULL; int ret = 0; while (codec = av_codec_iterate(&iter)) { + if (!codec->name) { + AV_LOG("Codec for format %s has no name\n", + avcodec_get_name(codec->id)); + ret = 1; + continue; + } + if (codec->type != AVMEDIA_TYPE_VIDEO && + codec->type != AVMEDIA_TYPE_AUDIO && + codec->type != AVMEDIA_TYPE_SUBTITLE) + ERR_EXT("Codec %s has unsupported type %s\n", + get_type_string(codec->type)); + if (codec->type != AVMEDIA_TYPE_AUDIO) { + if (codec->channel_layouts || codec->sample_fmts || + codec->supported_samplerates) + ERR("Non-audio codec %s has audio-only fields set\n"); + } + if (codec->type != AVMEDIA_TYPE_VIDEO) { + if (codec->pix_fmts || codec->supported_framerates) + ERR("Non-video codec %s has video-only fields set\n"); + } + if (av_codec_is_encoder(codec)) { if (codec->type == AVMEDIA_TYPE_AUDIO) { if (!codec->sample_fmts) { _______________________________________________ ffmpeg-cvslog mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
