Mercurial > libavcodec.hg
changeset 10855:423410fc29b1 libavcodec
Reduce stack usage in svq1_encode_plane(). Reuse context scratch buffer
instead. Avoid a crash on MinGW.
author | zuxy |
---|---|
date | Tue, 12 Jan 2010 09:13:32 +0000 |
parents | f6fc6ace95e3 |
children | d1ddb9a28c47 |
files | svq1enc.c |
diffstat | 1 files changed, 2 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/svq1enc.c Tue Jan 12 06:01:55 2010 +0000 +++ b/svq1enc.c Tue Jan 12 09:13:32 2010 +0000 @@ -269,6 +269,7 @@ int block_width, block_height; int level; int threshold[6]; + uint8_t *src = s->scratchbuf + stride * 16; const int lambda= (s->picture.quality*s->picture.quality) >> (2*FF_LAMBDA_SHIFT); /* figure out the acceptable level thresholds in advance */ @@ -327,8 +328,6 @@ s->m.me.dia_size= s->avctx->dia_size; s->m.first_slice_line=1; for (y = 0; y < block_height; y++) { - uint8_t src[stride*16]; - s->m.new_picture.data[0]= src - y*16*stride; //ugly s->m.mb_y= y; @@ -356,8 +355,6 @@ s->m.first_slice_line=1; for (y = 0; y < block_height; y++) { - uint8_t src[stride*16]; - for(i=0; i<16 && i + 16*y<height; i++){ memcpy(&src[i*stride], &src_plane[(i+16*y)*src_stride], width); for(x=width; x<16*block_width; x++) @@ -521,7 +518,7 @@ if(!s->current_picture.data[0]){ avctx->get_buffer(avctx, &s->current_picture); avctx->get_buffer(avctx, &s->last_picture); - s->scratchbuf = av_malloc(s->current_picture.linesize[0] * 16); + s->scratchbuf = av_malloc(s->current_picture.linesize[0] * 16 * 2); } temp= s->current_picture;