summaryrefslogtreecommitdiff
path: root/libavcodec/roqvideoenc.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2015-02-23 19:05:56 +0100
committerMichael Niedermayer <michaelni@gmx.at>2015-02-23 19:45:23 +0100
commit96e7c9cbfc9aeef26ab96956230e9b3fe981c234 (patch)
tree9f1c09ec70abd8cc53608e3fc317c3d2def4e7f7 /libavcodec/roqvideoenc.c
parent6c9537b807e587960d4dd73fa6f68d0280a49f92 (diff)
downloadffmpeg-96e7c9cbfc9aeef26ab96956230e9b3fe981c234.tar.gz
avcodec/roqvideoenc: Allocate and reference coded_frame correctly
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/roqvideoenc.c')
-rw-r--r--libavcodec/roqvideoenc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/libavcodec/roqvideoenc.c b/libavcodec/roqvideoenc.c
index ecad8b245b..3215f0a51c 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);
}