Mercurial > libavcodec.hg
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); |