diff options
Diffstat (limited to 'video')
-rw-r--r-- | video/out/vo.c | 6 | ||||
-rw-r--r-- | video/out/vo.h | 14 | ||||
-rw-r--r-- | video/out/vo_vdpau.c | 30 |
3 files changed, 11 insertions, 39 deletions
diff --git a/video/out/vo.c b/video/out/vo.c index 2a640d8ea3..3962ed6135 100644 --- a/video/out/vo.c +++ b/video/out/vo.c @@ -288,12 +288,6 @@ void vo_queue_image(struct vo *vo, struct mp_image *mpi) if (!vo->config_ok) return; assert(mp_image_params_equal(vo->params, &mpi->params)); - if (vo->driver->filter_image && mpi) - mpi = vo->driver->filter_image(vo, mpi); - if (!mpi) { - MP_ERR(vo, "Could not upload image.\n"); - return; - } assert(vo->max_video_queue <= VO_MAX_QUEUE); assert(vo->num_video_queue < vo->max_video_queue); vo->video_queue[vo->num_video_queue++] = mpi; diff --git a/video/out/vo.h b/video/out/vo.h index 409ee926dc..7fbaa8e431 100644 --- a/video/out/vo.h +++ b/video/out/vo.h @@ -164,20 +164,6 @@ struct vo_driver { int (*query_format)(struct vo *vo, uint32_t format); /* - * Optional. Can be used to convert the input image into something VO - * internal, such as GPU surfaces. Ownership of mpi is passed to the - * function, and the returned image is owned by the caller. - * The following guarantees are given: - * - mpi has the format with which the VO was configured - * - the returned image can be arbitrary, and the VO merely manages its - * lifetime - * - images passed to draw_image are always passed through this function - * - the maximum number of images kept alive is not over vo->max_video_queue - * - if vo->max_video_queue is large enough, some images may be buffered ahead - */ - struct mp_image *(*filter_image)(struct vo *vo, struct mp_image *mpi); - - /* * Initialize or reconfigure the display driver. * params: video parameters, like pixel format and frame size * flags: combination of VOFLAG_ values 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), |