|
|
@@ -196,14 +196,6 @@ static av_cold int vble_decode_close(AVCodecContext *avctx) |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
static av_always_inline int vble_error_close(AVCodecContext *avctx, |
|
|
|
const char *message) |
|
|
|
{ |
|
|
|
av_log(avctx, AV_LOG_ERROR, message); |
|
|
|
vble_decode_close(avctx); |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
} |
|
|
|
|
|
|
|
static av_cold int vble_decode_init(AVCodecContext *avctx) |
|
|
|
{ |
|
|
|
VBLEContext *ctx = avctx->priv_data; |
|
|
@@ -216,21 +208,29 @@ static av_cold int vble_decode_init(AVCodecContext *avctx) |
|
|
|
avctx->bits_per_raw_sample = 8; |
|
|
|
avctx->coded_frame = avcodec_alloc_frame(); |
|
|
|
|
|
|
|
if (!avctx->coded_frame) |
|
|
|
return vble_error_close(avctx, "Could not allocate frame.\n"); |
|
|
|
if (!avctx->coded_frame) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "Could not allocate frame.\n"); |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
} |
|
|
|
|
|
|
|
ctx->size = avpicture_get_size(avctx->pix_fmt, |
|
|
|
avctx->width, avctx->height); |
|
|
|
|
|
|
|
ctx->len = av_malloc(ctx->size * sizeof(*ctx->len)); |
|
|
|
|
|
|
|
if (!ctx->len) |
|
|
|
return vble_error_close(avctx, "Could not allocate lengths buffer.\n"); |
|
|
|
if (!ctx->len) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "Could not allocate lengths buffer.\n"); |
|
|
|
vble_decode_close(avctx); |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
} |
|
|
|
|
|
|
|
ctx->val = av_malloc(ctx->size * sizeof(*ctx->val)); |
|
|
|
|
|
|
|
if (!ctx->val) |
|
|
|
return vble_error_close(avctx, "Could not allocate values buffer.\n"); |
|
|
|
if (!ctx->val) { |
|
|
|
av_log(avctx, AV_LOG_ERROR, "Could not allocate values buffer.\n"); |
|
|
|
vble_decode_close(avctx); |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
} |
|
|
|
|
|
|
|
return 0; |
|
|
|
} |
|
|
|