diff --git a/ffserver.c b/ffserver.c index fdb504f84ad3b50ff85f4d66a0c6bfb7e2bf10a2..23665a1e22c8b1b0625feb629e35314b25a43bce 100644 --- a/ffserver.c +++ b/ffserver.c @@ -3731,6 +3731,25 @@ static int ffserver_opt_default(const char *opt, const char *arg, return ret; } +static AVOutputFormat *ffserver_guess_format(const char *short_name, const char *filename, + const char *mime_type) +{ + AVOutputFormat *fmt = guess_format(short_name, filename, mime_type); + + if (fmt) { + AVOutputFormat *stream_fmt; + char stream_format_name[64]; + + snprintf(stream_format_name, sizeof(stream_format_name), "%s_stream", fmt->name); + stream_fmt = guess_format(stream_format_name, NULL, NULL); + + if (stream_fmt) + fmt = stream_fmt; + } + + return fmt; +} + static int parse_ffconfig(const char *filename) { FILE *f; @@ -3972,7 +3991,7 @@ static int parse_ffconfig(const char *filename) } } - stream->fmt = guess_stream_format(NULL, stream->filename, NULL); + stream->fmt = ffserver_guess_format(NULL, stream->filename, NULL); /* fetch avclass so AVOption works * FIXME try to use avcodec_get_context_defaults2 * without changing defaults too much */ @@ -4020,7 +4039,7 @@ static int parse_ffconfig(const char *filename) /* jpeg cannot be used here, so use single frame jpeg */ if (!strcmp(arg, "jpeg")) strcpy(arg, "mjpeg"); - stream->fmt = guess_stream_format(arg, NULL, NULL); + stream->fmt = ffserver_guess_format(arg, NULL, NULL); if (!stream->fmt) { fprintf(stderr, "%s:%d: Unknown Format: %s\n", filename, line_num, arg); diff --git a/libavformat/avformat.h b/libavformat/avformat.h index 8e8ab91b2d0dbc12790122d983624a0496e5fa64..a71993708f65dd2cbaa2492768b9992e151b304a 100644 --- a/libavformat/avformat.h +++ b/libavformat/avformat.h @@ -712,9 +712,11 @@ enum CodecID av_guess_image2_codec(const char *filename); /* utils.c */ void av_register_input_format(AVInputFormat *format); void av_register_output_format(AVOutputFormat *format); -AVOutputFormat *guess_stream_format(const char *short_name, +#if LIBAVFORMAT_VERSION_MAJOR < 53 +attribute_deprecated AVOutputFormat *guess_stream_format(const char *short_name, const char *filename, const char *mime_type); +#endif AVOutputFormat *guess_format(const char *short_name, const char *filename, const char *mime_type); diff --git a/libavformat/utils.c b/libavformat/utils.c index d7241f59a7390ecb64a06145696cd7ff7b22d6bf..5eb360c2293f97e29dbfaae3a5a87befcdd8604f 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -219,6 +219,7 @@ AVOutputFormat *guess_format(const char *short_name, const char *filename, return fmt_found; } +#if LIBAVFORMAT_VERSION_MAJOR < 53 AVOutputFormat *guess_stream_format(const char *short_name, const char *filename, const char *mime_type) { @@ -237,6 +238,7 @@ AVOutputFormat *guess_stream_format(const char *short_name, const char *filename return fmt; } +#endif enum CodecID av_guess_codec(AVOutputFormat *fmt, const char *short_name, const char *filename, const char *mime_type, enum CodecType type){