[MPlayer-dev-eng] [PATCH 1/2] libvo/vo_png: Fix AVFrame creation.
Michael Niedermayer
michaelni at gmx.at
Wed Jul 15 16:56:28 CEST 2015
From: Michael Niedermayer <michael at niedermayer.cc>
The previous code used uninitialized memory and could randomly crash
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
---
libvo/vo_png.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/libvo/vo_png.c b/libvo/vo_png.c
index 06d4a88..109ff4f 100644
--- a/libvo/vo_png.c
+++ b/libvo/vo_png.c
@@ -147,7 +147,7 @@ config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uin
static uint32_t draw_image(mp_image_t* mpi){
- AVFrame pic;
+ AVFrame *pic;
int buffersize;
int res, got_pkt;
char buf[100];
@@ -164,10 +164,11 @@ static uint32_t draw_image(mp_image_t* mpi){
return 1;
}
+ pic = av_frame_alloc();
avctx->width = mpi->w;
avctx->height = mpi->h;
- pic.data[0] = mpi->planes[0];
- pic.linesize[0] = mpi->stride[0];
+ pic->data[0] = mpi->planes[0];
+ pic->linesize[0] = mpi->stride[0];
buffersize = mpi->w * mpi->h * 8;
if (outbuffer_size < buffersize) {
av_freep(&outbuffer);
@@ -177,7 +178,8 @@ static uint32_t draw_image(mp_image_t* mpi){
av_init_packet(&pkt);
pkt.data = outbuffer;
pkt.size = outbuffer_size;
- res = avcodec_encode_video2(avctx, &pkt, &pic, &got_pkt);
+ res = avcodec_encode_video2(avctx, &pkt, pic, &got_pkt);
+ av_frame_free(&pic);
if (res < 0 || !got_pkt) {
mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_PNG_ErrorInCreatePng);
--
1.7.9.5
More information about the MPlayer-dev-eng
mailing list