mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-11 17:55:21 +00:00
avcodec/tests/avcodec: Add basic sanity checks for AVCodec properties
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
parent
136865413c
commit
0d97317429
@ -18,12 +18,48 @@
|
|||||||
|
|
||||||
#include "libavcodec/avcodec.h"
|
#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){
|
int main(void){
|
||||||
void *iter = NULL;
|
void *iter = NULL;
|
||||||
const AVCodec *codec = NULL;
|
const AVCodec *codec = NULL;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
while (codec = av_codec_iterate(&iter)) {
|
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 (av_codec_is_encoder(codec)) {
|
||||||
if (codec->type == AVMEDIA_TYPE_AUDIO) {
|
if (codec->type == AVMEDIA_TYPE_AUDIO) {
|
||||||
if (!codec->sample_fmts) {
|
if (!codec->sample_fmts) {
|
||||||
|
Loading…
Reference in New Issue
Block a user