Mercurial > libavcodec.hg
changeset 1228:d63e0185a90f libavcodec
release buffer cleanup
author | michaelni |
---|---|
date | Tue, 06 May 2003 20:43:37 +0000 |
parents | 184c480cefc3 |
children | cefec170ee46 |
files | cyuv.c dv.c huffyuv.c indeo3.c mpegvideo.c |
diffstat | 5 files changed, 27 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/cyuv.c Tue May 06 03:11:20 2003 +0000 +++ b/cyuv.c Tue May 06 20:43:37 2003 +0000 @@ -98,6 +98,9 @@ /* pixel data starts 48 bytes in, after 3x16-byte tables */ stream_ptr = 48; + if(s->frame.data[0]) + avctx->release_buffer(avctx, &s->frame); + s->frame.reference = 0; if(avctx->get_buffer(avctx, &s->frame) < 0) { fprintf(stderr, "get_buffer() failed\n"); @@ -159,8 +162,6 @@ *data_size=sizeof(AVFrame); *(AVFrame*)data= s->frame; - avctx->release_buffer(avctx, &s->frame); - return buf_size; }
--- a/dv.c Tue May 06 03:11:20 2003 +0000 +++ b/dv.c Tue May 06 20:43:37 2003 +0000 @@ -580,6 +580,9 @@ else avctx->aspect_ratio = 4.0 / 3.0; + if(s->picture.data[0]) + avctx->release_buffer(avctx, &s->picture); + s->picture.reference= 0; if(avctx->get_buffer(avctx, &s->picture) < 0) { fprintf(stderr, "get_buffer() failed\n"); @@ -617,8 +620,6 @@ *data_size = sizeof(AVFrame); *(AVFrame*)data= s->picture; - avctx->release_buffer(avctx, &s->picture); - return packet_size; }
--- a/huffyuv.c Tue May 06 03:11:20 2003 +0000 +++ b/huffyuv.c Tue May 06 20:43:37 2003 +0000 @@ -737,6 +737,9 @@ init_get_bits(&s->gb, s->bitstream_buffer, buf_size*8); + if(p->data[0]) + avctx->release_buffer(avctx, p); + p->reference= 0; if(avctx->get_buffer(avctx, p) < 0){ fprintf(stderr, "get_buffer() failed\n"); @@ -943,9 +946,6 @@ emms_c(); *picture= *p; - - avctx->release_buffer(avctx, p); - *data_size = sizeof(AVFrame); return (get_bits_count(&s->gb)+31)/32*4;
--- a/indeo3.c Tue May 06 03:11:20 2003 +0000 +++ b/indeo3.c Tue May 06 20:43:37 2003 +0000 @@ -1056,6 +1056,9 @@ iv_decode_frame(s, buf, buf_size); + if(s->frame.data[0]) + avctx->release_buffer(avctx, &s->frame); + s->frame.reference = 0; if(avctx->get_buffer(avctx, &s->frame) < 0) { fprintf(stderr, "get_buffer() failed\n"); @@ -1089,8 +1092,6 @@ *data_size=sizeof(AVFrame); *(AVFrame*)data= s->frame; - avctx->release_buffer(avctx, &s->frame); - return buf_size; }
--- a/mpegvideo.c Tue May 06 03:11:20 2003 +0000 +++ b/mpegvideo.c Tue May 06 20:43:37 2003 +0000 @@ -929,7 +929,7 @@ s->mb_skiped = 0; assert(s->last_picture_ptr==NULL || s->out_format != FMT_H264); - + /* mark&release old frames */ if (s->pict_type != B_TYPE && s->last_picture_ptr) { avctx->release_buffer(avctx, (AVFrame*)s->last_picture_ptr); @@ -945,9 +945,15 @@ } } } - alloc: if(!s->encoding){ + /* release non refernce frames */ + for(i=0; i<MAX_PICTURE_COUNT; i++){ + if(s->picture[i].data[0] && !s->picture[i].reference /*&& s->picture[i].type!=FF_BUFFER_TYPE_SHARED*/){ + s->avctx->release_buffer(s->avctx, (AVFrame*)&s->picture[i]); + } + } + i= find_unused_picture(s, 0); pic= (AVFrame*)&s->picture[i]; @@ -1041,12 +1047,14 @@ assert(i<MAX_PICTURE_COUNT); #endif - /* release non refernce frames */ - for(i=0; i<MAX_PICTURE_COUNT; i++){ - if(s->picture[i].data[0] && !s->picture[i].reference /*&& s->picture[i].type!=FF_BUFFER_TYPE_SHARED*/) - s->avctx->release_buffer(s->avctx, (AVFrame*)&s->picture[i]); + if(s->encoding){ + /* release non refernce frames */ + for(i=0; i<MAX_PICTURE_COUNT; i++){ + if(s->picture[i].data[0] && !s->picture[i].reference /*&& s->picture[i].type!=FF_BUFFER_TYPE_SHARED*/){ + s->avctx->release_buffer(s->avctx, (AVFrame*)&s->picture[i]); + } + } } - // clear copies, to avoid confusion #if 0 memset(&s->last_picture, 0, sizeof(Picture));