static void hb_qsv_filter_pre_close( hb_filter_object_t * filter ){ int i = 0; mfxStatus sts = MFX_ERR_NONE; hb_filter_private_t * pv = filter->private_data; if ( !pv ) { return; } sws_freeContext(pv->sws_context_to_nv12); sws_freeContext(pv->sws_context_from_nv12); av_qsv_context* qsv = pv->job->qsv; if(qsv && qsv->vpp_space && av_qsv_list_count(qsv->vpp_space) > 0 ){ if(pv->qsv_user && qsv->mfx_session){ sts=MFXVideoUSER_Unregister(qsv->mfx_session,0); AV_QSV_CHECK_RESULT(sts, MFX_ERR_NONE, sts); for(i=hb_list_count(pv->qsv_user);i>0;i--){ qsv_filter_t *plugin = hb_list_item(pv->qsv_user,i-1); hb_list_rem(pv->qsv_user,plugin); plugin_close(plugin); } hb_list_close(&pv->qsv_user); } // closing local stuff qsv_filter_close(qsv,AV_QSV_VPP_USER); // closing the commong stuff av_qsv_context_clean(qsv); } hb_cond_close(&pv->pre.frame_completed); hb_lock_close(&pv->pre.frame_completed_lock); hb_cond_close(&pv->post.frame_completed); hb_lock_close(&pv->post.frame_completed_lock); hb_cond_close(&pv->pre_busy.frame_completed); hb_lock_close(&pv->pre_busy.frame_completed_lock); hb_cond_close(&pv->post_busy.frame_completed); hb_lock_close(&pv->post_busy.frame_completed_lock); hb_list_close( &pv->list ); free( pv ); filter->private_data = NULL; }
void MFX::MFXPluginFactory::DestroyPlugin( FactoryRecord & record) { mfxStatus sts; if (record.plgParams.Type == MFX_PLUGINTYPE_AUDIO_DECODE || record.plgParams.Type == MFX_PLUGINTYPE_AUDIO_ENCODE) { sts = MFXAudioUSER_Unregister(mSession, record.plgParams.Type); TRACE_PLUGIN_INFO(" MFXAudioUSER_Unregister for Type=%d, returned %d\n", record.plgParams.Type, sts); } else { sts = MFXVideoUSER_Unregister(mSession, record.plgParams.Type); TRACE_PLUGIN_INFO(" MFXVideoUSER_Unregister for Type=%d, returned %d\n", record.plgParams.Type, sts); } }
void MFX::MFXPluginFactory::DestroyPlugin( FactoryRecord & record) { mfxStatus sts = MFXVideoUSER_Unregister(mSession, record.plgParams.Type); sts; TRACE_PLUGIN_INFO(" MFXVideoUSER_Unregister for Type=%d, returned %d\n", record.plgParams.Type, sts); }