From 239dc2851a9001ff3c69c613d621125c9a95e8ae Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 30 Mar 2014 19:21:54 +0200 Subject: command: allow changing filters before video chain initialization Apparently this is more intuitive. Somewhat tricky, because of the odd state after loading a file but before initializing the VO. --- player/video.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'player/video.c') diff --git a/player/video.c b/player/video.c index 39a5b55a2a..8119c40c98 100644 --- a/player/video.c +++ b/player/video.c @@ -140,13 +140,19 @@ int reinit_video_filters(struct MPContext *mpctx) { struct dec_video *d_video = mpctx->d_video; - if (!d_video || !d_video->decoder_output.imgfmt) - return -2; + if (!d_video) + return 0; + bool need_reconfig = d_video->vfilter->initialized != 0; recreate_video_filters(mpctx); - reconfig_video(mpctx, &d_video->decoder_output, true); - return d_video->vfilter && d_video->vfilter->initialized > 0 ? 0 : -1; + if (need_reconfig) + reconfig_video(mpctx, &d_video->decoder_output, true); + + if (!d_video->vfilter) + return 0; + + return d_video->vfilter->initialized; } int reinit_video_chain(struct MPContext *mpctx) @@ -246,6 +252,10 @@ no_video: void mp_force_video_refresh(struct MPContext *mpctx) { struct MPOpts *opts = mpctx->opts; + struct dec_video *d_video = mpctx->d_video; + + if (!d_video || !d_video->decoder_output.imgfmt) + return; // If not paused, the next frame should come soon enough. if (opts->pause && mpctx->last_vo_pts != MP_NOPTS_VALUE) -- cgit v1.2.3