static void recreate_video_filters(struct MPContext *mpctx) { struct MPOpts *opts = mpctx->opts; struct dec_video *d_video = mpctx->d_video; assert(d_video); vf_destroy(d_video->vfilter); d_video->vfilter = vf_new(mpctx->global); d_video->vfilter->hwdec = &d_video->hwdec_info; vf_append_filter_list(d_video->vfilter, opts->vf_settings); // for vf_sub vf_control_any(d_video->vfilter, VFCTRL_SET_OSD_OBJ, mpctx->osd); osd_set_render_subs_in_filter(mpctx->osd, vf_control_any(d_video->vfilter, VFCTRL_INIT_OSD, NULL) == CONTROL_OK); set_allowed_vo_formats(d_video->vfilter, mpctx->video_out); }
static void recreate_video_filters(struct MPContext *mpctx) { struct MPOpts *opts = mpctx->opts; struct dec_video *d_video = mpctx->d_video; assert(d_video); vf_destroy(d_video->vfilter); d_video->vfilter = vf_new(mpctx->global); d_video->vfilter->hwdec = d_video->hwdec_info; d_video->vfilter->wakeup_callback = wakeup_playloop; d_video->vfilter->wakeup_callback_ctx = mpctx; d_video->vfilter->container_fps = d_video->fps; vo_control(mpctx->video_out, VOCTRL_GET_DISPLAY_FPS, &d_video->vfilter->display_fps); vf_append_filter_list(d_video->vfilter, opts->vf_settings); // for vf_sub osd_set_render_subs_in_filter(mpctx->osd, vf_control_any(d_video->vfilter, VFCTRL_INIT_OSD, mpctx->osd) > 0); set_allowed_vo_formats(d_video->vfilter, mpctx->video_out); }