summaryrefslogtreecommitdiff
path: root/libavcodec/snow.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2009-04-09 20:44:18 +0000
committerMichael Niedermayer <michaelni@gmx.at>2009-04-09 20:44:18 +0000
commit0a08b5735be6995e8aa23113377064ba19156892 (patch)
treec9d200a73a39251716ddd98c098786be6de6809e /libavcodec/snow.c
parenteebbb33abfe82bb3b044ff1f1cb0b263bde9402b (diff)
Factorize release_buffer()
Originally committed as revision 18397 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/snow.c')
-rw-r--r--libavcodec/snow.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/libavcodec/snow.c b/libavcodec/snow.c
index ee0ae33a13..cb04982cb3 100644
--- a/libavcodec/snow.c
+++ b/libavcodec/snow.c
@@ -4167,6 +4167,18 @@ static int frame_start(SnowContext *s){
return 0;
}
+static void release_buffer(AVCodecContext *avctx){
+ SnowContext *s = avctx->priv_data;
+ int i;
+
+ if(s->last_picture[s->max_ref_frames-1].data[0]){
+ avctx->release_buffer(avctx, &s->last_picture[s->max_ref_frames-1]);
+ for(i=0; i<9; i++)
+ if(s->halfpel_plane[s->max_ref_frames-1][1+i/3][i%3])
+ av_free(s->halfpel_plane[s->max_ref_frames-1][1+i/3][i%3] - EDGE_WIDTH*(1+s->current_picture.linesize[i%3]));
+ }
+}
+
static int encode_frame(AVCodecContext *avctx, unsigned char *buf, int buf_size, void *data){
SnowContext *s = avctx->priv_data;
RangeCoder * const c= &s->c;
@@ -4415,12 +4427,7 @@ redo_frame:
update_last_header_values(s);
- if(s->last_picture[s->max_ref_frames-1].data[0]){
- avctx->release_buffer(avctx, &s->last_picture[s->max_ref_frames-1]);
- for(i=0; i<9; i++)
- if(s->halfpel_plane[s->max_ref_frames-1][1+i/3][i%3])
- av_free(s->halfpel_plane[s->max_ref_frames-1][1+i/3][i%3] - EDGE_WIDTH*(1+s->current_picture.linesize[i%3]));
- }
+ release_buffer(avctx);
s->current_picture.coded_picture_number = avctx->frame_number;
s->current_picture.pict_type = pict->pict_type;
@@ -4506,7 +4513,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
RangeCoder * const c= &s->c;
int bytes_read;
AVFrame *picture = data;
- int level, orientation, plane_index, i;
+ int level, orientation, plane_index;
ff_init_range_decoder(c, buf, buf_size);
ff_build_rac_states(c, 0.05*(1LL<<32), 256-8);
@@ -4645,12 +4652,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, AVPac
emms_c();
- if(s->last_picture[s->max_ref_frames-1].data[0]){
- avctx->release_buffer(avctx, &s->last_picture[s->max_ref_frames-1]);
- for(i=0; i<9; i++)
- if(s->halfpel_plane[s->max_ref_frames-1][1+i/3][i%3])
- av_free(s->halfpel_plane[s->max_ref_frames-1][1+i/3][i%3] - EDGE_WIDTH*(1+s->current_picture.linesize[i%3]));
- }
+ release_buffer(avctx);
if(!(s->avctx->debug&2048))
*picture= s->current_picture;