void uninit_video(sh_video_t *sh_video){ if(!sh_video->initialized) return; mp_msg(MSGT_DECVIDEO,MSGL_V,MSGTR_UninitVideoStr,sh_video->codec->drv); mpvdec->uninit(sh_video); #ifdef CONFIG_DYNAMIC_PLUGINS if (sh_video->dec_handle) dlclose(sh_video->dec_handle); #endif vf_uninit_filter_chain(sh_video->vfilter); sh_video->initialized=0; }
void uninit_video(sh_video_t *sh_video) { if (!sh_video->initialized) return; mp_msg(MSGT_DECVIDEO, MSGL_V, "Uninit video: %s\n", codec_idx2str(sh_video->codec->drv_idx)); mpvdec->uninit(sh_video); mpvdec = NULL; #ifdef CONFIG_DYNAMIC_PLUGINS if (sh_video->dec_handle) dlclose(sh_video->dec_handle); #endif vf_uninit_filter_chain(sh_video->vfilter); eosd_uninit(); sh_video->initialized = 0; }
static void recreate_video_filters(struct MPContext *mpctx) { struct MPOpts *opts = mpctx->opts; struct sh_video *sh_video = mpctx->sh_video; assert(sh_video); vf_uninit_filter_chain(sh_video->vfilter); char *vf_arg[] = { "_oldargs_", (char *)mpctx->video_out, NULL }; sh_video->vfilter = vf_open_filter(opts, NULL, "vo", vf_arg); sh_video->vfilter = append_filters(sh_video->vfilter, opts->vf_settings); struct vf_instance *vf = sh_video->vfilter; mpctx->osd->render_subs_in_filter = vf->control(vf, VFCTRL_INIT_OSD, NULL) == VO_TRUE; }