[FFmpeg-devel] [PATCH] check sample_fmt in avcodec_open

Måns Rullgård mans
Wed Feb 9 17:08:55 CET 2011


"Ronald S. Bultje" <rsbultje at gmail.com> writes:

> From: Reimar D?ffinger <Reimar.Doeffinger at gmx.de>
>
> check AVCodecContext->sample_fmt against AVCodec->sample_fmts[] to ensure
> that the encoder supports the specified sample format. Error out if it doesn't.
> Previously, it would continue and output garbage.
> ---
>  libavcodec/utils.c |   10 ++++++++++
>  1 files changed, 10 insertions(+), 0 deletions(-)
>
> diff --git a/libavcodec/utils.c b/libavcodec/utils.c
> index eede431..0816b39 100644
> --- a/libavcodec/utils.c
> +++ b/libavcodec/utils.c
> @@ -551,6 +551,16 @@ int attribute_align_arg avcodec_open(AVCodecContext *avctx, AVCodec *codec)
>                 avctx->codec->max_lowres);
>          goto free_and_end;
>      }
> +    if (avctx->codec->sample_fmts && avctx->codec->encode) {
> +        int i;
> +        for (i = 0; avctx->codec->sample_fmts[i] != AV_SAMPLE_FMT_NONE; i++)
> +            if (avctx->sample_fmt == avctx->codec->sample_fmts[i])
> +                break;
> +        if (avctx->codec->sample_fmts[i] == AV_SAMPLE_FMT_NONE) {
> +            av_log(avctx, AV_LOG_ERROR, "Specified sample_fmt is not supported.\n");

Is there an easy way to print the name of problematic sample format?
That would aid the user in resolving the problem.

-- 
M?ns Rullg?rd
mans at mansr.com



More information about the ffmpeg-devel mailing list