(ffmpeg) Fix memory leak/struct member issue

This commit is contained in:
jdgleaver 2020-08-05 16:46:06 +01:00
parent cd329a259c
commit 0fcc5a784e
2 changed files with 9 additions and 7 deletions

View File

@ -73,11 +73,8 @@ video_buffer_t *video_buffer_create(
b->buffer[i].hw_source = av_frame_alloc(); b->buffer[i].hw_source = av_frame_alloc();
#endif #endif
b->buffer[i].target = av_frame_alloc(); b->buffer[i].target = av_frame_alloc();
b->buffer[i].frame_buf = (uint8_t*)av_malloc(frame_size);
avpicture_fill((AVPicture*) avpicture_alloc((AVPicture*)b->buffer[i].target,
b->buffer[i].target,
(const uint8_t*)b->buffer[i].frame_buf,
PIX_FMT_RGB32, width, height); PIX_FMT_RGB32, width, height);
if (!b->buffer[i].sws || if (!b->buffer[i].sws ||
@ -85,8 +82,7 @@ video_buffer_t *video_buffer_create(
#if LIBAVUTIL_VERSION_MAJOR > 55 #if LIBAVUTIL_VERSION_MAJOR > 55
!b->buffer[i].hw_source || !b->buffer[i].hw_source ||
#endif #endif
!b->buffer[i].target || !b->buffer[i].target)
!b->buffer[i].frame_buf)
goto fail; goto fail;
} }
return b; return b;
@ -114,8 +110,8 @@ void video_buffer_destroy(video_buffer_t *video_buffer)
av_frame_free(&video_buffer->buffer[i].hw_source); av_frame_free(&video_buffer->buffer[i].hw_source);
#endif #endif
av_frame_free(&video_buffer->buffer[i].source); av_frame_free(&video_buffer->buffer[i].source);
avpicture_free((AVPicture*)video_buffer->buffer[i].target);
av_frame_free(&video_buffer->buffer[i].target); av_frame_free(&video_buffer->buffer[i].target);
av_freep(&video_buffer->buffer[i].frame_buf);
sws_freeContext(video_buffer->buffer[i].sws); sws_freeContext(video_buffer->buffer[i].sws);
} }
} }

View File

@ -6,6 +6,12 @@
#include <boolean.h> #include <boolean.h>
#include <stdint.h> #include <stdint.h>
#ifdef RARCH_INTERNAL
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#endif
#ifdef HAVE_SSA #ifdef HAVE_SSA
#include <ass/ass.h> #include <ass/ass.h>
#endif #endif