Browse Source

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>
tags/n3.0
Arttu Ylä-Outinen 9 years ago
parent
commit
c09419ca80
1 changed files with 21 additions and 3 deletions
  1. +21
    -3
      libavcodec/libkvazaar.c

+ 21
- 3
libavcodec/libkvazaar.c View File

@@ -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);


Loading…
Cancel
Save