Module: libav Branch: master Commit: 15ec0450b4ae891f3e6ababa03c777a4443b94ca
Author: Anton Khirnov <[email protected]> Committer: Anton Khirnov <[email protected]> Date: Mon Feb 11 08:09:02 2013 +0100 lavc: allow decoders to override frame parameters. --- libavcodec/utils.c | 21 ++++++++++++++------- 1 files changed, 14 insertions(+), 7 deletions(-) diff --git a/libavcodec/utils.c b/libavcodec/utils.c index 7e451bf..90f2537 100644 --- a/libavcodec/utils.c +++ b/libavcodec/utils.c @@ -552,18 +552,25 @@ int ff_get_buffer(AVCodecContext *avctx, AVFrame *frame, int flags) switch (avctx->codec_type) { case AVMEDIA_TYPE_VIDEO: - frame->width = avctx->width; - frame->height = avctx->height; - frame->format = avctx->pix_fmt; - frame->sample_aspect_ratio = avctx->sample_aspect_ratio; + if (!frame->width) + frame->width = avctx->width; + if (!frame->height) + frame->height = avctx->height; + if (frame->format < 0) + frame->format = avctx->pix_fmt; + if (!frame->sample_aspect_ratio.num) + frame->sample_aspect_ratio = avctx->sample_aspect_ratio; if ((ret = av_image_check_size(avctx->width, avctx->height, 0, avctx)) < 0) return ret; break; case AVMEDIA_TYPE_AUDIO: - frame->sample_rate = avctx->sample_rate; - frame->format = avctx->sample_fmt; - frame->channel_layout = avctx->channel_layout; + if (!frame->sample_rate) + frame->sample_rate = avctx->sample_rate; + if (frame->format < 0) + frame->format = avctx->sample_fmt; + if (!frame->channel_layout) + frame->channel_layout = avctx->channel_layout; break; default: return AVERROR(EINVAL); } _______________________________________________ libav-commits mailing list [email protected] https://lists.libav.org/mailman/listinfo/libav-commits
