comparison msrle.c @ 1592:63009885ca88 libavcodec

100l: free previous frame, not current one! Set reference flag for frames.
author rtognimp
date Fri, 31 Oct 2003 22:56:16 +0000
parents 776dec60c40c
children b2fecae88e84
comparison
equal deleted inserted replaced
1591:776dec60c40c 1592:63009885ca88
169 MsrleContext *s = (MsrleContext *)avctx->priv_data; 169 MsrleContext *s = (MsrleContext *)avctx->priv_data;
170 170
171 s->buf = buf; 171 s->buf = buf;
172 s->size = buf_size; 172 s->size = buf_size;
173 173
174 s->frame.reference = 1;
174 if (avctx->get_buffer(avctx, &s->frame)) { 175 if (avctx->get_buffer(avctx, &s->frame)) {
175 printf (" MS RLE: get_buffer() failed\n"); 176 printf (" MS RLE: get_buffer() failed\n");
176 return -1; 177 return -1;
177 } 178 }
178 179
181 memcpy(s->frame.data[0], s->prev_frame.data[0], 182 memcpy(s->frame.data[0], s->prev_frame.data[0],
182 s->frame.linesize[0] * s->avctx->height); 183 s->frame.linesize[0] * s->avctx->height);
183 184
184 msrle_decode_pal8(s); 185 msrle_decode_pal8(s);
185 186
186 if (s->frame.data[0]) 187 if (s->prev_frame.data[0])
187 avctx->release_buffer(avctx, &s->frame); 188 avctx->release_buffer(avctx, &s->prev_frame);
188 189
189 /* shuffle frames */ 190 /* shuffle frames */
190 s->prev_frame = s->frame; 191 s->prev_frame = s->frame;
191 192
192 *data_size = sizeof(AVFrame); 193 *data_size = sizeof(AVFrame);