diff options
Diffstat (limited to 'video/out/vo_vdpau.c')
-rw-r--r-- | video/out/vo_vdpau.c | 30 |
1 files changed, 11 insertions, 19 deletions
diff --git a/video/out/vo_vdpau.c b/video/out/vo_vdpau.c index 56a52d613f..949d149a55 100644 --- a/video/out/vo_vdpau.c +++ b/video/out/vo_vdpau.c @@ -847,28 +847,21 @@ static void draw_image(struct vo *vo, struct mp_image *mpi) { struct vdpctx *vc = vo->priv; - talloc_free(vc->current_image); - vc->current_image = mpi; - - if (status_ok(vo)) - video_to_output_surface(vo); -} - -static struct mp_image *filter_image(struct vo *vo, struct mp_image *mpi) -{ - struct vdpctx *vc = vo->priv; - check_preemption(vo); - struct mp_image *reserved_mpi = mp_vdpau_upload_video_surface(vc->mpvdp, mpi); - if (!reserved_mpi) - goto end; + struct mp_image *vdp_mpi = mp_vdpau_upload_video_surface(vc->mpvdp, mpi); + if (vdp_mpi) { + mp_image_copy_attributes(vdp_mpi, mpi); + } else { + MP_ERR(vo, "Could not upload image.\n"); + } + talloc_free(mpi); - mp_image_copy_attributes(reserved_mpi, mpi); + talloc_free(vc->current_image); + vc->current_image = vdp_mpi; -end: - talloc_free(mpi); - return reserved_mpi; + if (status_ok(vo)) + video_to_output_surface(vo); } // warning: the size and pixel format of surface must match that of the @@ -1148,7 +1141,6 @@ const struct vo_driver video_out_vdpau = { .reconfig = reconfig, .control = control, .draw_image = draw_image, - .filter_image = filter_image, .flip_page_timed = flip_page_timed, .uninit = uninit, .priv_size = sizeof(struct vdpctx), |