[FFmpeg-cvslog] avcodec/roqvideoenc: Allocate and reference coded_frame correctly

Michael Niedermayer git at videolan.org
Mon Feb 23 19:48:26 CET 2015


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Mon Feb 23 19:05:56 2015 +0100| [96e7c9cbfc9aeef26ab96956230e9b3fe981c234] | committer: Michael Niedermayer

avcodec/roqvideoenc: Allocate and reference coded_frame correctly

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=96e7c9cbfc9aeef26ab96956230e9b3fe981c234
---

 libavcodec/roqvideoenc.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/libavcodec/roqvideoenc.c b/libavcodec/roqvideoenc.c
index ecad8b2..3215f0a 100644
--- a/libavcodec/roqvideoenc.c
+++ b/libavcodec/roqvideoenc.c
@@ -960,7 +960,8 @@ static int roq_encode_video(RoqContext *enc)
     reconstruct_and_encode_image(enc, tempData, enc->width, enc->height,
                                  enc->width*enc->height/64);
 
-    enc->avctx->coded_frame = enc->current_frame;
+    av_frame_unref(enc->avctx->coded_frame);
+    av_frame_ref(enc->avctx->coded_frame, enc->current_frame);
 
     /* Rotate frame history */
     FFSWAP(AVFrame *, enc->current_frame, enc->last_frame);
@@ -981,6 +982,7 @@ static av_cold int roq_encode_end(AVCodecContext *avctx)
 
     av_frame_free(&enc->current_frame);
     av_frame_free(&enc->last_frame);
+    av_frame_free(&enc->avctx->coded_frame);
 
     av_freep(&enc->tmpData);
     av_freep(&enc->this_motion4);
@@ -1019,7 +1021,8 @@ static av_cold int roq_encode_init(AVCodecContext *avctx)
 
     enc->last_frame    = av_frame_alloc();
     enc->current_frame = av_frame_alloc();
-    if (!enc->last_frame || !enc->current_frame) {
+    avctx->coded_frame = av_frame_alloc();
+    if (!enc->last_frame || !enc->current_frame || !avctx->coded_frame) {
         roq_encode_end(avctx);
         return AVERROR(ENOMEM);
     }



More information about the ffmpeg-cvslog mailing list