void vp9_remove_decompressor(VP9D_PTR ptr) { int i; VP9D_COMP *const pbi = (VP9D_COMP *)ptr; if (!pbi) return; vp9_remove_common(&pbi->common); vp9_worker_end(&pbi->lf_worker); vpx_free(pbi->lf_worker.data1); for (i = 0; i < pbi->num_tile_workers; ++i) { VP9Worker *const worker = &pbi->tile_workers[i]; vp9_worker_end(worker); vpx_free(worker->data1); vpx_free(worker->data2); } vpx_free(pbi->tile_workers); vpx_free(pbi->mi_streams); vpx_free(pbi->above_context[0]); vpx_free(pbi->above_seg_context); vpx_free(pbi); }
void vp9_decoder_remove(VP9Decoder *pbi) { VP9_COMMON *const cm = &pbi->common; int i; vp9_remove_common(cm); vp9_worker_end(&pbi->lf_worker); vpx_free(pbi->lf_worker.data1); for (i = 0; i < pbi->num_tile_workers; ++i) { VP9Worker *const worker = &pbi->tile_workers[i]; vp9_worker_end(worker); vpx_free(worker->data1); vpx_free(worker->data2); } vpx_free(pbi->tile_workers); if (pbi->num_tile_workers) { const int sb_rows = mi_cols_aligned_to_sb(cm->mi_rows) >> MI_BLOCK_SIZE_LOG2; vp9_loop_filter_dealloc(&pbi->lf_row_sync, sb_rows); } vpx_free(pbi); }