From 3b34f0078da0a946d68f964b214412de261ebdc2 Mon Sep 17 00:00:00 2001 From: wm4 Date: Sun, 26 Oct 2014 02:36:15 +0200 Subject: vo_direct3d: support nv12/nv21 directly --- video/out/vo_direct3d.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/video/out/vo_direct3d.c b/video/out/vo_direct3d.c index c942c964f5..4b81026e35 100644 --- a/video/out/vo_direct3d.c +++ b/video/out/vo_direct3d.c @@ -201,6 +201,8 @@ static const struct fmt_entry fmt_table[] = { {IMGFMT_420P, MAKEFOURCC('I','4','2','0')}, {IMGFMT_420P, MAKEFOURCC('I','Y','U','V')}, {IMGFMT_410P, MAKEFOURCC('Y','V','U','9')}, + {IMGFMT_NV12, MAKEFOURCC('N','V','1','2')}, + {IMGFMT_NV21, MAKEFOURCC('N','V','2','1')}, // packed YUV {IMGFMT_YUYV, D3DFMT_YUY2}, {IMGFMT_UYVY, D3DFMT_UYVY}, @@ -1379,6 +1381,12 @@ static bool get_video_buffer(d3d_priv *priv, struct mp_image *out) out->planes[0] = base; out->stride[0] = stride; + if (out->num_planes == 2) { + // NV12, NV21 + out->planes[1] = base + stride * out->h; + out->stride[1] = stride; + } + if (out->num_planes == 3) { bool swap = priv->movie_src_fmt == MAKEFOURCC('Y','V','1','2'); -- cgit v1.2.3