summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRudolf Tammekivi <rtammekivi@gmail.com>2014-02-08 23:42:56 +0200
committerSteve Kondik <shade@chemlab.org>2014-11-19 05:16:02 +0000
commita755a9e946b33965e4d2c63cb40d4b286c709d86 (patch)
tree653c1d87a1bc29903b9c5585c7cffd323442bb5a
parent5038d532daa4b4dd39c9a28f38a07c2326742c05 (diff)
downloadandroid_hardware_qcom_media-a755a9e946b33965e4d2c63cb40d4b286c709d86.tar.gz
android_hardware_qcom_media-a755a9e946b33965e4d2c63cb40d4b286c709d86.tar.bz2
android_hardware_qcom_media-a755a9e946b33965e4d2c63cb40d4b286c709d86.zip
mm-video: vdec: Fix memory leak in color converter.
When OMX is deinitialized, the color converter buffers stay intact, causing the available memory pool to have less continuous space available. Change-Id: Icc2d730d540bae153c9fde36a6f4267ff3f9f088
-rw-r--r--mm-video/vidc/vdec/inc/omx_vdec.h4
-rw-r--r--mm-video/vidc/vdec/src/omx_vdec.cpp1
2 files changed, 3 insertions, 2 deletions
diff --git a/mm-video/vidc/vdec/inc/omx_vdec.h b/mm-video/vidc/vdec/inc/omx_vdec.h
index 416161d5..bde02481 100644
--- a/mm-video/vidc/vdec/inc/omx_vdec.h
+++ b/mm-video/vidc/vdec/inc/omx_vdec.h
@@ -874,8 +874,9 @@ private:
OMX_BUFFERHEADERTYPE **bufferHdr,OMX_U32 port,OMX_PTR appData,
OMX_U32 bytes);
OMX_ERRORTYPE free_output_buffer(OMX_BUFFERHEADERTYPE *bufferHdr);
- private:
#define MAX_COUNT 32
+ OMX_BUFFERHEADERTYPE m_out_mem_ptr_client[MAX_COUNT];
+ private:
omx_vdec *omx;
bool enabled;
OMX_COLOR_FORMATTYPE ColorFormat;
@@ -889,7 +890,6 @@ private:
OMX_QCOM_PLATFORM_PRIVATE_LIST m_platform_list_client[MAX_COUNT];
OMX_QCOM_PLATFORM_PRIVATE_ENTRY m_platform_entry_client[MAX_COUNT];
OMX_QCOM_PLATFORM_PRIVATE_PMEM_INFO m_pmem_info_client[MAX_COUNT];
- OMX_BUFFERHEADERTYPE m_out_mem_ptr_client[MAX_COUNT];
struct vdec_ion op_buf_ion_info[MAX_COUNT];
unsigned char *pmem_baseaddress[MAX_COUNT];
int pmem_fd[MAX_COUNT];
diff --git a/mm-video/vidc/vdec/src/omx_vdec.cpp b/mm-video/vidc/vdec/src/omx_vdec.cpp
index 55ac1bbb..9ccdc6b8 100644
--- a/mm-video/vidc/vdec/src/omx_vdec.cpp
+++ b/mm-video/vidc/vdec/src/omx_vdec.cpp
@@ -6407,6 +6407,7 @@ OMX_ERRORTYPE omx_vdec::component_deinit(OMX_IN OMX_HANDLETYPE hComp)
for (i=0; i < drv_ctx.op_buf.actualcount; i++ )
{
free_output_buffer (&m_out_mem_ptr[i]);
+ client_buffers.free_output_buffer (&client_buffers.m_out_mem_ptr_client[i]);
#ifdef _ANDROID_ICS_
if (m_enable_android_native_buffers)
{