mirror of
https://github.com/mpv-player/mpv.git
synced 2026-10-29 15:11:09 +08:00
vdpau: always let decoder output IMGFMT_VDPAU
The old ffmpeg vdpau support code uses separate vdpau pixel formats for each decoder (pretty much because mplayer's architecture sucked), which just gets into the way. Force the old decoder's output to IMGFMT_VDPAU, and remove IMGFMT_IS_VDPAU() where we can remove it. This should completely remove the differences betwene the old and new vdpau decoder outside of the decoder.
This commit is contained in:
@@ -255,6 +255,7 @@ static struct mp_image *process_image(struct lavc_ctx *ctx, struct mp_image *img
|
||||
struct vdpau_render_state *rndr = (void *)img->planes[0];
|
||||
img->planes[0] = (void *)"dummy"; // must be non-NULL, otherwise arbitrary
|
||||
img->planes[3] = (void *)(intptr_t)rndr->surface;
|
||||
mp_image_setfmt(img, IMGFMT_VDPAU);
|
||||
return img;
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ struct priv {
|
||||
|
||||
static bool query_format(int imgfmt)
|
||||
{
|
||||
return IMGFMT_IS_VDPAU(imgfmt);
|
||||
return imgfmt == IMGFMT_VDPAU;
|
||||
}
|
||||
|
||||
static void mark_vdpau_objects_uninitialized(struct gl_hwdec *hw)
|
||||
@@ -221,7 +221,7 @@ static int map_image(struct gl_hwdec *hw, struct mp_image *hw_image,
|
||||
struct vdp_functions *vdp = p->ctx->vdp;
|
||||
VdpStatus vdp_st;
|
||||
|
||||
assert(hw_image && IMGFMT_IS_VDPAU(hw_image->imgfmt));
|
||||
assert(hw_image && hw_image->imgfmt == IMGFMT_VDPAU);
|
||||
VdpVideoSurface video_surface = (intptr_t)hw_image->planes[3];
|
||||
|
||||
if (handle_preemption(hw) < 0)
|
||||
|
||||
@@ -1169,7 +1169,7 @@ static void draw_image(struct vo *vo, mp_image_t *mpi)
|
||||
// Forget previous frames, as we can display a new one now.
|
||||
vc->prev_deint_queue_pos = -1001;
|
||||
|
||||
if (IMGFMT_IS_VDPAU(vc->image_format)) {
|
||||
if (vc->image_format == IMGFMT_VDPAU) {
|
||||
surface = (VdpVideoSurface)(intptr_t)mpi->planes[3];
|
||||
reserved_mpi = mp_image_new_ref(mpi);
|
||||
} else if (vc->rgb_mode) {
|
||||
|
||||
Reference in New Issue
Block a user