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

Ronald S. Bultje rsbultje
Thu Feb 10 03:16:04 CET 2011


Hi,

2011/2/9 M?ns Rullg?rd <mans at mansr.com>:
> "Ronald S. Bultje" <rsbultje at gmail.com> writes:
>> 2011/2/9 M?ns Rullg?rd <mans at mansr.com>:
>>> "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.
>>
>> This never happens in ffmpeg, it checks it before setting. This
>> happens in applications setting sample_fmt unconditionally. It's
>> basically a programming error, sort-of.
>
> It would still help the author/user of such apps fix the problem. ?If
> the name is not readily available, forget I said anything.

I don't think it is, but we could consider adding a
SampleFmtDescription[] including human-readable strings similar to
what I believe we have for PixFmtDescription[].

Ronald



More information about the ffmpeg-devel mailing list