diff options
author | wm4 <wm4@nowhere> | 2013-11-23 21:39:07 +0100 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2013-11-23 21:39:07 +0100 |
commit | 4c2fb8f3a2dbe4d9411007f169326d646943d216 (patch) | |
tree | b623eeadcbb32ca7c8f7ba64e7d18d39dd9723b3 /mpvcore | |
parent | 02f96efc509021d3dccea635044580199ddd0665 (diff) |
dec_video: make vf_input and hwdec_info statically allocated
The only reason why these structs were dynamically allocated was to
avoid recursive includes in stheader.h, which is (or was) a very central
file included by almost all other files. (If a struct is referenced via
a pointer type only, it can be forward referenced, and the definition of
the struct is not needed.) Now that they're out of stheader.h, this
difference doesn't matter anymore, and the code can be simplified.
Also sneak in some sanity checks.
Diffstat (limited to 'mpvcore')
-rw-r--r-- | mpvcore/player/command.c | 6 | ||||
-rw-r--r-- | mpvcore/player/sub.c | 7 | ||||
-rw-r--r-- | mpvcore/player/video.c | 7 |
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, ¶ms); + 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, ¶ms); } 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); } |