mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +02:00
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>
This commit is contained in:
parent
425d6134ed
commit
c09419ca80
@ -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…
Reference in New Issue
Block a user