ffserver: factorize opt_audio/video_codec

Simplify.
This commit is contained in:
Stefano Sabatini 2013-11-27 13:55:11 +01:00
parent f13f139feb
commit 8adaee56c4

View File

@ -3942,24 +3942,13 @@ static void add_codec(FFStream *stream, AVCodecContext *av)
memcpy(st->codec, av, sizeof(AVCodecContext)); memcpy(st->codec, av, sizeof(AVCodecContext));
} }
static enum AVCodecID opt_audio_codec(const char *arg) static enum AVCodecID opt_codec(const char *name, enum AVMediaType type)
{ {
AVCodec *p= avcodec_find_encoder_by_name(arg); AVCodec *codec = avcodec_find_encoder_by_name(name);
if (p == NULL || p->type != AVMEDIA_TYPE_AUDIO) if (!codec || codec->type != type)
return AV_CODEC_ID_NONE; return AV_CODEC_ID_NONE;
return codec->id;
return p->id;
}
static enum AVCodecID opt_video_codec(const char *arg)
{
AVCodec *p= avcodec_find_encoder_by_name(arg);
if (p == NULL || p->type != AVMEDIA_TYPE_VIDEO)
return AV_CODEC_ID_NONE;
return p->id;
} }
static int ffserver_opt_default(const char *opt, const char *arg, static int ffserver_opt_default(const char *opt, const char *arg,
@ -3998,9 +3987,9 @@ static int ffserver_opt_preset(const char *arg,
break; break;
} }
if(!strcmp(tmp, "acodec")){ if(!strcmp(tmp, "acodec")){
*audio_id = opt_audio_codec(tmp2); *audio_id = opt_codec(tmp2, AVMEDIA_TYPE_AUDIO);
}else if(!strcmp(tmp, "vcodec")){ }else if(!strcmp(tmp, "vcodec")){
*video_id = opt_video_codec(tmp2); *video_id = opt_codec(tmp2, AVMEDIA_TYPE_VIDEO);
}else if(!strcmp(tmp, "scodec")){ }else if(!strcmp(tmp, "scodec")){
/* opt_subtitle_codec(tmp2); */ /* opt_subtitle_codec(tmp2); */
}else if(ffserver_opt_default(tmp, tmp2, avctx, type) < 0){ }else if(ffserver_opt_default(tmp, tmp2, avctx, type) < 0){
@ -4346,13 +4335,13 @@ static int parse_ffconfig(const char *filename)
stream->send_on_key = 1; stream->send_on_key = 1;
} else if (!av_strcasecmp(cmd, "AudioCodec")) { } else if (!av_strcasecmp(cmd, "AudioCodec")) {
get_arg(arg, sizeof(arg), &p); get_arg(arg, sizeof(arg), &p);
audio_id = opt_audio_codec(arg); audio_id = opt_codec(arg, AVMEDIA_TYPE_AUDIO);
if (audio_id == AV_CODEC_ID_NONE) { if (audio_id == AV_CODEC_ID_NONE) {
ERROR("Unknown AudioCodec: %s\n", arg); ERROR("Unknown AudioCodec: %s\n", arg);
} }
} else if (!av_strcasecmp(cmd, "VideoCodec")) { } else if (!av_strcasecmp(cmd, "VideoCodec")) {
get_arg(arg, sizeof(arg), &p); get_arg(arg, sizeof(arg), &p);
video_id = opt_video_codec(arg); video_id = opt_codec(arg, AVMEDIA_TYPE_VIDEO);
if (video_id == AV_CODEC_ID_NONE) { if (video_id == AV_CODEC_ID_NONE) {
ERROR("Unknown VideoCodec: %s\n", arg); ERROR("Unknown VideoCodec: %s\n", arg);
} }