From 5ef64bf256cef6a776688e560270bbd5b60dfd48 Mon Sep 17 00:00:00 2001 From: Isaac Connor Date: Wed, 26 Sep 2018 16:20:29 -0400 Subject: [PATCH] fix memleak on old libav distros --- src/zm_ffmpeg.cpp | 5 ++--- src/zm_ffmpeg.h | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/zm_ffmpeg.cpp b/src/zm_ffmpeg.cpp index 3b3a5060e..d4e9cb9ec 100644 --- a/src/zm_ffmpeg.cpp +++ b/src/zm_ffmpeg.cpp @@ -356,9 +356,8 @@ int check_sample_fmt(AVCodec *codec, enum AVSampleFormat sample_fmt) { #if LIBAVCODEC_VERSION_CHECK(56, 8, 0, 60, 100) #else unsigned int zm_av_packet_ref( AVPacket *dst, AVPacket *src ) { - dst->size = (src->size + FF_INPUT_BUFFER_PADDING_SIZE)/sizeof(uint64_t) + 1; - dst->data = reinterpret_cast(new uint64_t[dst->size]); - memcpy(dst->data, src->data, src->size ); + av_new_packet(dst,src->size); + memcpy(dst->data, src->data, src->size); dst->flags = src->flags; return 0; } diff --git a/src/zm_ffmpeg.h b/src/zm_ffmpeg.h index 7e3cf9651..a3a88519c 100644 --- a/src/zm_ffmpeg.h +++ b/src/zm_ffmpeg.h @@ -303,8 +303,8 @@ void zm_dump_codecpar ( const AVCodecParameters *par ); #define zm_av_packet_unref( packet ) av_packet_unref( packet ) #define zm_av_packet_ref( dst, src ) av_packet_ref( dst, src ) #else + unsigned int zm_av_packet_ref( AVPacket *dst, AVPacket *src ); #define zm_av_packet_unref( packet ) av_free_packet( packet ) -unsigned int zm_av_packet_ref( AVPacket *dst, AVPacket *src ); #endif #if LIBAVCODEC_VERSION_CHECK(52, 23, 0, 23, 0) #define zm_avcodec_decode_video( context, rawFrame, frameComplete, packet ) avcodec_decode_video2( context, rawFrame, frameComplete, packet )