Fix a memory leak problem in encoder
Deallocating the buffers before re-allocating them. The fix passed James Berry's test program for memory leak check. Change-Id: I18c3cf665412c0e313a523e3d435106c03ca438d
This commit is contained in:
parent
d283d9bb30
commit
9520f4b3cc
@ -324,8 +324,15 @@ void vp8_dealloc_compressor_data(VP8_COMP *cpi)
|
|||||||
|
|
||||||
cpi->mb.pip = 0;
|
cpi->mb.pip = 0;
|
||||||
|
|
||||||
vpx_free(cpi->total_stats);
|
if(cpi->total_stats)
|
||||||
vpx_free(cpi->this_frame_stats);
|
vpx_free(cpi->total_stats);
|
||||||
|
|
||||||
|
cpi->total_stats = 0;
|
||||||
|
|
||||||
|
if(cpi->this_frame_stats)
|
||||||
|
vpx_free(cpi->this_frame_stats);
|
||||||
|
|
||||||
|
cpi->this_frame_stats = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void enable_segmentation(VP8_PTR ptr)
|
static void enable_segmentation(VP8_PTR ptr)
|
||||||
@ -1326,6 +1333,9 @@ static void alloc_raw_frame_buffers(VP8_COMP *cpi)
|
|||||||
|
|
||||||
static int vp8_alloc_partition_data(VP8_COMP *cpi)
|
static int vp8_alloc_partition_data(VP8_COMP *cpi)
|
||||||
{
|
{
|
||||||
|
if(cpi->mb.pip)
|
||||||
|
vpx_free(cpi->mb.pip);
|
||||||
|
|
||||||
cpi->mb.pip = vpx_calloc((cpi->common.mb_cols + 1) *
|
cpi->mb.pip = vpx_calloc((cpi->common.mb_cols + 1) *
|
||||||
(cpi->common.mb_rows + 1),
|
(cpi->common.mb_rows + 1),
|
||||||
sizeof(PARTITION_INFO));
|
sizeof(PARTITION_INFO));
|
||||||
@ -1393,8 +1403,16 @@ void vp8_alloc_compressor_data(VP8_COMP *cpi)
|
|||||||
|
|
||||||
cpi->gf_active_count = cm->mb_rows * cm->mb_cols;
|
cpi->gf_active_count = cm->mb_rows * cm->mb_cols;
|
||||||
|
|
||||||
|
if(cpi->total_stats)
|
||||||
|
vpx_free(cpi->total_stats);
|
||||||
|
|
||||||
cpi->total_stats = vpx_calloc(1, vp8_firstpass_stats_sz(cpi->common.MBs));
|
cpi->total_stats = vpx_calloc(1, vp8_firstpass_stats_sz(cpi->common.MBs));
|
||||||
|
|
||||||
|
if(cpi->this_frame_stats)
|
||||||
|
vpx_free(cpi->this_frame_stats);
|
||||||
|
|
||||||
cpi->this_frame_stats = vpx_calloc(1, vp8_firstpass_stats_sz(cpi->common.MBs));
|
cpi->this_frame_stats = vpx_calloc(1, vp8_firstpass_stats_sz(cpi->common.MBs));
|
||||||
|
|
||||||
if(!cpi->total_stats || !cpi->this_frame_stats)
|
if(!cpi->total_stats || !cpi->this_frame_stats)
|
||||||
vpx_internal_error(&cpi->common.error, VPX_CODEC_MEM_ERROR,
|
vpx_internal_error(&cpi->common.error, VPX_CODEC_MEM_ERROR,
|
||||||
"Failed to allocate firstpass stats");
|
"Failed to allocate firstpass stats");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user