diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2015-02-23 19:05:56 +0100 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-02-23 19:45:23 +0100 |
commit | 96e7c9cbfc9aeef26ab96956230e9b3fe981c234 (patch) | |
tree | 9f1c09ec70abd8cc53608e3fc317c3d2def4e7f7 /libavcodec/roqvideoenc.c | |
parent | 6c9537b807e587960d4dd73fa6f68d0280a49f92 (diff) | |
download | ffmpeg-streaming-96e7c9cbfc9aeef26ab96956230e9b3fe981c234.zip ffmpeg-streaming-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.c | 7 |
1 files 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); } |