ref: bb9511684f70a735b3b909712666021e178c93e7
parent: 75b0abefd8ead6954cadf8e5bab498f39f25c846
parent: c06a917501294f8845df580b114a13fce7269b2f
author: Jerome Jiang <jianj@google.com>
date: Fri Jun 14 20:34:40 EDT 2019
Merge "Fix memory leak for vp8 multi-res encoder."
--- a/vpx/src/vpx_encoder.c
+++ b/vpx/src/vpx_encoder.c
@@ -82,6 +82,9 @@
res = VPX_CODEC_INCAPABLE;
else {
int i;
+#if CONFIG_MULTI_RES_ENCODING
+ int mem_loc_owned = 0;
+#endif
void *mem_loc = NULL;
if (iface->enc.mr_get_mem_loc == NULL) return VPX_CODEC_INCAPABLE;
@@ -129,13 +132,17 @@
i--;
}
#if CONFIG_MULTI_RES_ENCODING
- assert(mem_loc);
- free(((LOWER_RES_FRAME_INFO *)mem_loc)->mb_info);
- free(mem_loc);
+ if (!mem_loc_owned) {
+ assert(mem_loc);
+ free(((LOWER_RES_FRAME_INFO *)mem_loc)->mb_info);
+ free(mem_loc);
+ }
#endif
return SAVE_STATUS(ctx, res);
}
-
+#if CONFIG_MULTI_RES_ENCODING
+ mem_loc_owned = 1;
+#endif
ctx++;
cfg++;
dsf++;