diff options
author | Arttu Ylä-Outinen <arttu.yla-outinen@tut.fi> | 2015-09-28 11:08:19 +0300 |
---|---|---|
committer | Arttu Ylä-Outinen <arttu.yla-outinen@tut.fi> | 2015-10-07 17:09:02 +0300 |
commit | c09419ca80f1b1de4ceb3b9c06f708914150fa45 (patch) | |
tree | 1eefb018573ffaee601cadb0487d6822c253ac64 /libavcodec/libkvazaar.c | |
parent | 425d6134ed88f00927fe7fc225f940cfc43f2d76 (diff) | |
download | ffmpeg-c09419ca80f1b1de4ceb3b9c06f708914150fa45.tar.gz |
libkvazaar: Replace asserts with proper errors
Changes function libkvazaar_encode to return proper error codes instead
of crashing when the video dimensions or pixel format change in the
middle of encoding.
Signed-off-by: Arttu Ylä-Outinen <arttu.yla-outinen@tut.fi>
Diffstat (limited to 'libavcodec/libkvazaar.c')
-rw-r--r-- | libavcodec/libkvazaar.c | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/libavcodec/libkvazaar.c b/libavcodec/libkvazaar.c index aaaf1f73f1..a15700a813 100644 --- a/libavcodec/libkvazaar.c +++ b/libavcodec/libkvazaar.c @@ -26,6 +26,7 @@ #include "libavutil/avassert.h" #include "libavutil/dict.h" #include "libavutil/opt.h" +#include "libavutil/pixdesc.h" #include "avcodec.h" #include "internal.h" @@ -149,9 +150,26 @@ static int libkvazaar_encode(AVCodecContext *avctx, if (frame) { int i = 0; - av_assert0(frame->width == ctx->config->width); - av_assert0(frame->height == ctx->config->height); - av_assert0(frame->format == avctx->pix_fmt); + if (frame->width != ctx->config->width || + frame->height != ctx->config->height) { + av_log(avctx, AV_LOG_ERROR, + "Changing video dimensions during encoding is not supported. " + "(changed from %dx%d to %dx%d)\n", + ctx->config->width, ctx->config->height, + frame->width, frame->height); + retval = AVERROR_INVALIDDATA; + goto done; + } + + if (frame->format != avctx->pix_fmt) { + av_log(avctx, AV_LOG_ERROR, + "Changing pixel format during encoding is not supported. " + "(changed from %s to %s)\n", + av_get_pix_fmt_name(avctx->pix_fmt), + av_get_pix_fmt_name(frame->format)); + retval = AVERROR_INVALIDDATA; + goto done; + } // Allocate input picture for kvazaar. img_in = ctx->api->picture_alloc(frame->width, frame->height); |