static OMX_ERRORTYPE vid_dec_Destructor(OMX_COMPONENTTYPE *comp) { vid_dec_PrivateType* priv = comp->pComponentPrivate; int i; if (priv->ports) { for (i = 0; i < priv->sPortTypesParam[OMX_PortDomainVideo].nPorts; ++i) { if(priv->ports[i]) priv->ports[i]->PortDestructor(priv->ports[i]); } FREE(priv->ports); priv->ports=NULL; } if (priv->pipe) { vl_compositor_cleanup_state(&priv->cstate); vl_compositor_cleanup(&priv->compositor); priv->pipe->destroy(priv->pipe); } if (priv->screen) omx_put_screen(); return omx_workaround_Destructor(comp); }
static OMX_ERRORTYPE h264d_prc_deallocate_resources(void *ap_obj) { vid_dec_PrivateType*priv = ap_obj; assert(priv); /* Clear hash table */ util_hash_table_foreach(priv->video_buffer_map, &hash_table_clear_item_callback, NULL); util_hash_table_destroy(priv->video_buffer_map); if (priv->pipe) { vl_compositor_cleanup_state(&priv->cstate); vl_compositor_cleanup(&priv->compositor); priv->pipe->destroy(priv->pipe); } if (priv->screen) omx_put_screen(); return OMX_ErrorNone; }