Commit d31dbec3 authored by Ramiro Polla's avatar Ramiro Polla

Rename CHECKED_ALLOC(Z) to FF_ALLOC(Z)_OR_GOTO and add context and label

parameters.

Originally committed as revision 19776 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 9cf484d0
...@@ -55,10 +55,10 @@ static int dnxhd_init_vlc(DNXHDEncContext *ctx) ...@@ -55,10 +55,10 @@ static int dnxhd_init_vlc(DNXHDEncContext *ctx)
int i, j, level, run; int i, j, level, run;
int max_level = 1<<(ctx->cid_table->bit_depth+2); int max_level = 1<<(ctx->cid_table->bit_depth+2);
CHECKED_ALLOCZ(ctx->vlc_codes, max_level*4*sizeof(*ctx->vlc_codes)); FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->vlc_codes, max_level*4*sizeof(*ctx->vlc_codes), fail);
CHECKED_ALLOCZ(ctx->vlc_bits, max_level*4*sizeof(*ctx->vlc_bits)); FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->vlc_bits , max_level*4*sizeof(*ctx->vlc_bits ), fail);
CHECKED_ALLOCZ(ctx->run_codes, 63*2); FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->run_codes, 63*2 , fail);
CHECKED_ALLOCZ(ctx->run_bits, 63); FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->run_bits , 63 , fail);
ctx->vlc_codes += max_level*2; ctx->vlc_codes += max_level*2;
ctx->vlc_bits += max_level*2; ctx->vlc_bits += max_level*2;
...@@ -111,10 +111,10 @@ static int dnxhd_init_qmat(DNXHDEncContext *ctx, int lbias, int cbias) ...@@ -111,10 +111,10 @@ static int dnxhd_init_qmat(DNXHDEncContext *ctx, int lbias, int cbias)
uint16_t weight_matrix[64] = {1,}; // convert_matrix needs uint16_t* uint16_t weight_matrix[64] = {1,}; // convert_matrix needs uint16_t*
int qscale, i; int qscale, i;
CHECKED_ALLOCZ(ctx->qmatrix_l, (ctx->m.avctx->qmax+1) * 64 * sizeof(int)); FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->qmatrix_l, (ctx->m.avctx->qmax+1) * 64 * sizeof(int) , fail);
CHECKED_ALLOCZ(ctx->qmatrix_c, (ctx->m.avctx->qmax+1) * 64 * sizeof(int)); FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->qmatrix_c, (ctx->m.avctx->qmax+1) * 64 * sizeof(int) , fail);
CHECKED_ALLOCZ(ctx->qmatrix_l16, (ctx->m.avctx->qmax+1) * 64 * 2 * sizeof(uint16_t)); FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->qmatrix_l16, (ctx->m.avctx->qmax+1) * 64 * 2 * sizeof(uint16_t), fail);
CHECKED_ALLOCZ(ctx->qmatrix_c16, (ctx->m.avctx->qmax+1) * 64 * 2 * sizeof(uint16_t)); FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->qmatrix_c16, (ctx->m.avctx->qmax+1) * 64 * 2 * sizeof(uint16_t), fail);
for (i = 1; i < 64; i++) { for (i = 1; i < 64; i++) {
int j = ctx->m.dsp.idct_permutation[ff_zigzag_direct[i]]; int j = ctx->m.dsp.idct_permutation[ff_zigzag_direct[i]];
...@@ -142,9 +142,9 @@ static int dnxhd_init_qmat(DNXHDEncContext *ctx, int lbias, int cbias) ...@@ -142,9 +142,9 @@ static int dnxhd_init_qmat(DNXHDEncContext *ctx, int lbias, int cbias)
static int dnxhd_init_rc(DNXHDEncContext *ctx) static int dnxhd_init_rc(DNXHDEncContext *ctx)
{ {
CHECKED_ALLOCZ(ctx->mb_rc, 8160*ctx->m.avctx->qmax*sizeof(RCEntry)); FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->mb_rc, 8160*ctx->m.avctx->qmax*sizeof(RCEntry), fail);
if (ctx->m.avctx->mb_decision != FF_MB_DECISION_RD) if (ctx->m.avctx->mb_decision != FF_MB_DECISION_RD)
CHECKED_ALLOCZ(ctx->mb_cmp, ctx->m.mb_num*sizeof(RCCMPEntry)); FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->mb_cmp, ctx->m.mb_num*sizeof(RCCMPEntry), fail);
ctx->frame_bits = (ctx->cid_table->coding_unit_size - 640 - 4) * 8; ctx->frame_bits = (ctx->cid_table->coding_unit_size - 640 - 4) * 8;
ctx->qscale = 1; ctx->qscale = 1;
...@@ -203,9 +203,9 @@ static int dnxhd_encode_init(AVCodecContext *avctx) ...@@ -203,9 +203,9 @@ static int dnxhd_encode_init(AVCodecContext *avctx)
if (dnxhd_init_rc(ctx) < 0) if (dnxhd_init_rc(ctx) < 0)
return -1; return -1;
CHECKED_ALLOCZ(ctx->slice_size, ctx->m.mb_height*sizeof(uint32_t)); FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->slice_size, ctx->m.mb_height*sizeof(uint32_t), fail);
CHECKED_ALLOCZ(ctx->mb_bits, ctx->m.mb_num *sizeof(uint16_t)); FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->mb_bits, ctx->m.mb_num *sizeof(uint16_t), fail);
CHECKED_ALLOCZ(ctx->mb_qscale, ctx->m.mb_num *sizeof(uint8_t)); FF_ALLOCZ_OR_GOTO(ctx->m.avctx, ctx->mb_qscale, ctx->m.mb_num *sizeof(uint8_t) , fail);
ctx->frame.key_frame = 1; ctx->frame.key_frame = 1;
ctx->frame.pict_type = FF_I_TYPE; ctx->frame.pict_type = FF_I_TYPE;
...@@ -228,7 +228,7 @@ static int dnxhd_encode_init(AVCodecContext *avctx) ...@@ -228,7 +228,7 @@ static int dnxhd_encode_init(AVCodecContext *avctx)
} }
return 0; return 0;
fail: //for CHECKED_ALLOCZ fail: //for FF_ALLOCZ_OR_GOTO
return -1; return -1;
} }
......
...@@ -2077,22 +2077,22 @@ static int alloc_tables(H264Context *h){ ...@@ -2077,22 +2077,22 @@ static int alloc_tables(H264Context *h){
const int big_mb_num= s->mb_stride * (s->mb_height+1); const int big_mb_num= s->mb_stride * (s->mb_height+1);
int x,y; int x,y;
CHECKED_ALLOCZ(h->intra4x4_pred_mode, big_mb_num * 8 * sizeof(uint8_t)) FF_ALLOCZ_OR_GOTO(h->s.avctx, h->intra4x4_pred_mode, big_mb_num * 8 * sizeof(uint8_t), fail)
CHECKED_ALLOCZ(h->non_zero_count , big_mb_num * 16 * sizeof(uint8_t)) FF_ALLOCZ_OR_GOTO(h->s.avctx, h->non_zero_count , big_mb_num * 16 * sizeof(uint8_t), fail)
CHECKED_ALLOCZ(h->slice_table_base , (big_mb_num+s->mb_stride) * sizeof(*h->slice_table_base)) FF_ALLOCZ_OR_GOTO(h->s.avctx, h->slice_table_base , (big_mb_num+s->mb_stride) * sizeof(*h->slice_table_base), fail)
CHECKED_ALLOCZ(h->cbp_table, big_mb_num * sizeof(uint16_t)) FF_ALLOCZ_OR_GOTO(h->s.avctx, h->cbp_table, big_mb_num * sizeof(uint16_t), fail)
CHECKED_ALLOCZ(h->chroma_pred_mode_table, big_mb_num * sizeof(uint8_t)) FF_ALLOCZ_OR_GOTO(h->s.avctx, h->chroma_pred_mode_table, big_mb_num * sizeof(uint8_t), fail)
CHECKED_ALLOCZ(h->mvd_table[0], 32*big_mb_num * sizeof(uint16_t)); FF_ALLOCZ_OR_GOTO(h->s.avctx, h->mvd_table[0], 32*big_mb_num * sizeof(uint16_t), fail);
CHECKED_ALLOCZ(h->mvd_table[1], 32*big_mb_num * sizeof(uint16_t)); FF_ALLOCZ_OR_GOTO(h->s.avctx, h->mvd_table[1], 32*big_mb_num * sizeof(uint16_t), fail);
CHECKED_ALLOCZ(h->direct_table, 32*big_mb_num * sizeof(uint8_t)); FF_ALLOCZ_OR_GOTO(h->s.avctx, h->direct_table, 32*big_mb_num * sizeof(uint8_t) , fail);
memset(h->slice_table_base, -1, (big_mb_num+s->mb_stride) * sizeof(*h->slice_table_base)); memset(h->slice_table_base, -1, (big_mb_num+s->mb_stride) * sizeof(*h->slice_table_base));
h->slice_table= h->slice_table_base + s->mb_stride*2 + 1; h->slice_table= h->slice_table_base + s->mb_stride*2 + 1;
CHECKED_ALLOCZ(h->mb2b_xy , big_mb_num * sizeof(uint32_t)); FF_ALLOCZ_OR_GOTO(h->s.avctx, h->mb2b_xy , big_mb_num * sizeof(uint32_t), fail);
CHECKED_ALLOCZ(h->mb2b8_xy , big_mb_num * sizeof(uint32_t)); FF_ALLOCZ_OR_GOTO(h->s.avctx, h->mb2b8_xy , big_mb_num * sizeof(uint32_t), fail);
for(y=0; y<s->mb_height; y++){ for(y=0; y<s->mb_height; y++){
for(x=0; x<s->mb_width; x++){ for(x=0; x<s->mb_width; x++){
const int mb_xy= x + y*s->mb_stride; const int mb_xy= x + y*s->mb_stride;
...@@ -2139,8 +2139,8 @@ static void clone_tables(H264Context *dst, H264Context *src){ ...@@ -2139,8 +2139,8 @@ static void clone_tables(H264Context *dst, H264Context *src){
* Allocate buffers which are not shared amongst multiple threads. * Allocate buffers which are not shared amongst multiple threads.
*/ */
static int context_init(H264Context *h){ static int context_init(H264Context *h){
CHECKED_ALLOCZ(h->top_borders[0], h->s.mb_width * (16+8+8) * sizeof(uint8_t)) FF_ALLOCZ_OR_GOTO(h->s.avctx, h->top_borders[0], h->s.mb_width * (16+8+8) * sizeof(uint8_t), fail)
CHECKED_ALLOCZ(h->top_borders[1], h->s.mb_width * (16+8+8) * sizeof(uint8_t)) FF_ALLOCZ_OR_GOTO(h->s.avctx, h->top_borders[1], h->s.mb_width * (16+8+8) * sizeof(uint8_t), fail)
return 0; return 0;
fail: fail:
......
This diff is collapsed.
...@@ -249,21 +249,21 @@ if ((y) < (x)) {\ ...@@ -249,21 +249,21 @@ if ((y) < (x)) {\
#define perror please_use_av_log_instead_of_perror #define perror please_use_av_log_instead_of_perror
#endif #endif
#define CHECKED_ALLOC(p, size)\ #define FF_ALLOC_OR_GOTO(ctx, p, size, label)\
{\ {\
p = av_malloc(size);\ p = av_malloc(size);\
if (p == NULL && (size) != 0) {\ if (p == NULL && (size) != 0) {\
av_log(NULL, AV_LOG_ERROR, "Cannot allocate memory.\n");\ av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n");\
goto fail;\ goto label;\
}\ }\
} }
#define CHECKED_ALLOCZ(p, size)\ #define FF_ALLOCZ_OR_GOTO(ctx, p, size, label)\
{\ {\
p = av_mallocz(size);\ p = av_mallocz(size);\
if (p == NULL && (size) != 0) {\ if (p == NULL && (size) != 0) {\
av_log(NULL, AV_LOG_ERROR, "Cannot allocate memory.\n");\ av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n");\
goto fail;\ goto label;\
}\ }\
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment