summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorArttu Ylä-Outinen <arttu.yla-outinen@tut.fi>2015-09-28 11:08:19 +0300
committerArttu Ylä-Outinen <arttu.yla-outinen@tut.fi>2015-10-07 17:09:02 +0300
commitc09419ca80f1b1de4ceb3b9c06f708914150fa45 (patch)
tree1eefb018573ffaee601cadb0487d6822c253ac64 /libavcodec
parent425d6134ed88f00927fe7fc225f940cfc43f2d76 (diff)
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')
-rw-r--r--libavcodec/libkvazaar.c24
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);