[FFmpeg-cvslog] mpegvideo_enc: do not unreference frames before the code is done with them
Michael Niedermayer
git at videolan.org
Sat May 25 20:45:50 CEST 2013
ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sat May 25 20:29:17 2013 +0200| [5f44f47b7256659b45ae5e3edd558521fbf962e8] | committer: Michael Niedermayer
mpegvideo_enc: do not unreference frames before the code is done with them
Fixes Ticket2592
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=5f44f47b7256659b45ae5e3edd558521fbf962e8
---
libavcodec/mpegvideo.c | 8 --------
libavcodec/mpegvideo_enc.c | 7 +++++++
2 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index a713099..e76fc34 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -1714,7 +1714,6 @@ int ff_MPV_frame_start(MpegEncContext *s, AVCodecContext *avctx)
* frame has been coded/decoded. */
void ff_MPV_frame_end(MpegEncContext *s)
{
- int i;
/* redraw edges for the frame if decoding didn't complete */
// just to make sure that all data is rendered.
if (CONFIG_MPEG_XVMC_DECODER && s->avctx->xvmc_acceleration) {
@@ -1763,13 +1762,6 @@ void ff_MPV_frame_end(MpegEncContext *s)
assert(i < MAX_PICTURE_COUNT);
#endif
- if (s->encoding) {
- /* release non-reference frames */
- for (i = 0; i < MAX_PICTURE_COUNT; i++) {
- if (!s->picture[i].reference)
- ff_mpeg_unref_picture(s, &s->picture[i]);
- }
- }
// clear copies, to avoid confusion
#if 0
memset(&s->last_picture, 0, sizeof(Picture));
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index 0db2f83..6a0f3b5 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -1632,6 +1632,13 @@ vbv_retry:
} else {
s->frame_bits = 0;
}
+
+ /* release non-reference frames */
+ for (i = 0; i < MAX_PICTURE_COUNT; i++) {
+ if (!s->picture[i].reference)
+ ff_mpeg_unref_picture(s, &s->picture[i]);
+ }
+
assert((s->frame_bits & 7) == 0);
pkt->size = s->frame_bits / 8;
More information about the ffmpeg-cvslog
mailing list