diff options
author | Justin Ruggles <justin.ruggles@gmail.com> | 2012-09-20 01:04:15 -0400 |
---|---|---|
committer | Justin Ruggles <justin.ruggles@gmail.com> | 2012-10-07 16:45:50 -0400 |
commit | 37f701f1c3967e7e2e3e6d67b4280bdcf13fdee1 (patch) | |
tree | 2d76afcf32cf910e0464bea30f4f5d4d86968b66 /libavcodec | |
parent | 5364327186fb90d67c860968a76bb0ec075308d4 (diff) | |
download | ffmpeg-37f701f1c3967e7e2e3e6d67b4280bdcf13fdee1.tar.gz |
avcodec: allow either planar or interleaved sample format when encoding mono
When there is only 1 channel, the planar and interleaved formats of the same
data type should be treated as identical.
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/utils.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libavcodec/utils.c b/libavcodec/utils.c index a72c434d00..d1b9d0a3ee 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -792,9 +792,16 @@ int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *code if (av_codec_is_encoder(avctx->codec)) { int i; if (avctx->codec->sample_fmts) { - for (i = 0; avctx->codec->sample_fmts[i] != AV_SAMPLE_FMT_NONE; 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->channels == 1 && + av_get_planar_sample_fmt(avctx->sample_fmt) == + av_get_planar_sample_fmt(avctx->codec->sample_fmts[i])) { + 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"); ret = AVERROR(EINVAL); |