diff options
Diffstat (limited to 'vpx/src/vpx_encoder.c')
-rw-r--r-- | vpx/src/vpx_encoder.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/vpx/src/vpx_encoder.c b/vpx/src/vpx_encoder.c index 3385c22c0..f38577de6 100644 --- a/vpx/src/vpx_encoder.c +++ b/vpx/src/vpx_encoder.c @@ -82,6 +82,9 @@ vpx_codec_err_t vpx_codec_enc_init_multi_ver( 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 @@ vpx_codec_err_t vpx_codec_enc_init_multi_ver( 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++; |