indeo3: check return values of av_malloc()

Signed-off-by: Paul B Mahol <onemda@gmail.com>
This commit is contained in:
Paul B Mahol 2013-06-30 16:58:13 +00:00
parent b00e56bec5
commit 84343dd9d3
1 changed files with 19 additions and 16 deletions

View File

@ -148,6 +148,20 @@ static av_cold void build_requant_tab(void)
}
static av_cold void free_frame_buffers(Indeo3DecodeContext *ctx)
{
int p;
ctx->width = ctx->height = 0;
for (p = 0; p < 3; p++) {
av_freep(&ctx->planes[p].buffers[0]);
av_freep(&ctx->planes[p].buffers[1]);
ctx->planes[p].pixels[0] = ctx->planes[p].pixels[1] = 0;
}
}
static av_cold int allocate_frame_buffers(Indeo3DecodeContext *ctx,
AVCodecContext *avctx, int luma_width, int luma_height)
{
@ -188,6 +202,11 @@ static av_cold int allocate_frame_buffers(Indeo3DecodeContext *ctx,
ctx->planes[p].buffers[0] = av_malloc(!p ? luma_size : chroma_size);
ctx->planes[p].buffers[1] = av_malloc(!p ? luma_size : chroma_size);
if (!ctx->planes[p].buffers[0] || !ctx->planes[p].buffers[1]) {
free_frame_buffers(ctx);
return AVERROR(ENOMEM);
}
/* fill the INTRA prediction lines with the middle pixel value = 64 */
memset(ctx->planes[p].buffers[0], 0x40, ctx->planes[p].pitch);
memset(ctx->planes[p].buffers[1], 0x40, ctx->planes[p].pitch);
@ -202,22 +221,6 @@ static av_cold int allocate_frame_buffers(Indeo3DecodeContext *ctx,
return 0;
}
static av_cold void free_frame_buffers(Indeo3DecodeContext *ctx)
{
int p;
ctx->width=
ctx->height= 0;
for (p = 0; p < 3; p++) {
av_freep(&ctx->planes[p].buffers[0]);
av_freep(&ctx->planes[p].buffers[1]);
ctx->planes[p].pixels[0] = ctx->planes[p].pixels[1] = 0;
}
}
/**
* Copy pixels of the cell(x + mv_x, y + mv_y) from the previous frame into
* the cell(x, y) in the current frame.