summaryrefslogtreecommitdiffstats
path: root/mpvcore
diff options
context:
space:
mode:
Diffstat (limited to 'mpvcore')
-rw-r--r--mpvcore/player/command.c6
-rw-r--r--mpvcore/player/sub.c7
-rw-r--r--mpvcore/player/video.c7
3 files changed, 9 insertions, 11 deletions
diff --git a/mpvcore/player/command.c b/mpvcore/player/command.c
index c09a046cd2..d3d99c4b02 100644
--- a/mpvcore/player/command.c
+++ b/mpvcore/player/command.c
@@ -1439,7 +1439,7 @@ static int mp_property_width(m_option_t *prop, int action, void *arg,
return M_PROPERTY_UNAVAILABLE;
struct sh_video *sh = vd->header->video;
return m_property_int_ro(prop, action, arg,
- vd->vf_input ? vd->vf_input->w : sh->disp_w);
+ vd->vf_input.w ? vd->vf_input.w : sh->disp_w);
}
/// Video display height (RO)
@@ -1451,7 +1451,7 @@ static int mp_property_height(m_option_t *prop, int action, void *arg,
return M_PROPERTY_UNAVAILABLE;
struct sh_video *sh = vd->header->video;
return m_property_int_ro(prop, action, arg,
- vd->vf_input ? vd->vf_input->h : sh->disp_h);
+ vd->vf_input.h ? vd->vf_input.h : sh->disp_h);
}
static int property_vo_wh(m_option_t *prop, int action, void *arg,
@@ -1554,7 +1554,7 @@ static int mp_property_aspect(m_option_t *prop, int action, void *arg,
}
case M_PROPERTY_GET: {
float aspect = -1;
- struct mp_image_params *params = d_video->vf_input;
+ struct mp_image_params *params = &d_video->vf_input;
if (params && params->d_w && params->d_h) {
aspect = (float)params->d_w / params->d_h;
} else if (sh_video->disp_w && sh_video->disp_h) {
diff --git a/mpvcore/player/sub.c b/mpvcore/player/sub.c
index bdcb9def09..2c6ec1dfc5 100644
--- a/mpvcore/player/sub.c
+++ b/mpvcore/player/sub.c
@@ -83,9 +83,10 @@ void update_subtitles(struct MPContext *mpctx)
struct dec_sub *dec_sub = mpctx->d_sub;
assert(track && dec_sub);
- if (mpctx->d_video && mpctx->d_video->vf_input) {
- struct mp_image_params params = *mpctx->d_video->vf_input;
- sub_control(dec_sub, SD_CTRL_SET_VIDEO_PARAMS, &params);
+ if (mpctx->d_video) {
+ struct mp_image_params params = mpctx->d_video->vf_input;
+ if (params.imgfmt)
+ sub_control(dec_sub, SD_CTRL_SET_VIDEO_PARAMS, &params);
}
mpctx->osd->video_offset = track->under_timeline ? mpctx->video_offset : 0;
diff --git a/mpvcore/player/video.c b/mpvcore/player/video.c
index dea00585c4..0c0199dd7d 100644
--- a/mpvcore/player/video.c
+++ b/mpvcore/player/video.c
@@ -131,10 +131,7 @@ int reinit_video_chain(struct MPContext *mpctx)
d_video->header = sh;
mpctx->initialized_flags |= INITIALIZED_VCODEC;
- // dynamic allocation only to make stheader.h lighter
- talloc_free(d_video->hwdec_info);
- d_video->hwdec_info = talloc_zero(d_video, struct mp_hwdec_info);
- vo_control(mpctx->video_out, VOCTRL_GET_HWDEC_INFO, d_video->hwdec_info);
+ vo_control(mpctx->video_out, VOCTRL_GET_HWDEC_INFO, &d_video->hwdec_info);
if (stream_control(sh->demuxer->stream, STREAM_CTRL_GET_ASPECT_RATIO, &ar)
!= STREAM_UNSUPPORTED)
@@ -236,7 +233,7 @@ static void filter_video(struct MPContext *mpctx, struct mp_image *frame)
init_filter_params(mpctx);
frame->pts = d_video->pts;
- mp_image_set_params(frame, d_video->vf_input);
+ mp_image_set_params(frame, &d_video->vf_input); // force csp/aspect overrides
vf_filter_frame(d_video->vfilter, frame);
filter_output_queued_frame(mpctx);
}