summaryrefslogtreecommitdiffstats
path: root/video
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-11-04 22:26:31 +0100
committerwm4 <wm4@nowhere>2014-11-05 01:41:34 +0100
commitffe9c0350259efa81bc5500226c65315cd8b936d (patch)
treec59af3382c2458735f9f7d089d3f589bb78cc8cf /video
parent5e9dfe932f8319c89cff0e0d93a2d3fe723b0429 (diff)
downloadmpv-ffe9c0350259efa81bc5500226c65315cd8b936d.tar.bz2
mpv-ffe9c0350259efa81bc5500226c65315cd8b936d.tar.xz
video: get hwaccel flag from pixdesc
Diffstat (limited to 'video')
-rw-r--r--video/img_format.c6
-rw-r--r--video/img_format.h7
2 files changed, 8 insertions, 5 deletions
diff --git a/video/img_format.c b/video/img_format.c
index e838b5ca55..2f45787c5a 100644
--- a/video/img_format.c
+++ b/video/img_format.c
@@ -121,7 +121,8 @@ static struct mp_imgfmt_desc mp_only_imgfmt_desc(int mpfmt)
return (struct mp_imgfmt_desc) {
.id = mpfmt,
.avformat = AV_PIX_FMT_NONE,
- .flags = MP_IMGFLAG_BE | MP_IMGFLAG_LE | MP_IMGFLAG_RGB,
+ .flags = MP_IMGFLAG_BE | MP_IMGFLAG_LE | MP_IMGFLAG_RGB |
+ MP_IMGFLAG_HWACCEL,
};
}
return (struct mp_imgfmt_desc) {0};
@@ -224,6 +225,9 @@ struct mp_imgfmt_desc mp_imgfmt_get_desc(int mpfmt)
if ((desc.bpp[0] % 8) != 0)
desc.align_x = 8 / desc.bpp[0]; // expect power of 2
+ if (pd->flags & AV_PIX_FMT_FLAG_HWACCEL)
+ desc.flags |= MP_IMGFLAG_HWACCEL;
+
return desc;
}
diff --git a/video/img_format.h b/video/img_format.h
index 1db317b5dd..1645bd3ab9 100644
--- a/video/img_format.h
+++ b/video/img_format.h
@@ -64,6 +64,8 @@
// The only real paletted format we support is IMGFMT_PAL8, so check for that
// format directly if you want an actual paletted format.
#define MP_IMGFLAG_PAL 0x8000
+// planes don't contain real data; planes[3] contains an API-specific pointer
+#define MP_IMGFLAG_HWACCEL 0x10000
// Exactly one of these bits is set in mp_imgfmt_desc.flags
#define MP_IMGFLAG_COLOR_CLASS_MASK \
@@ -330,10 +332,7 @@ static inline bool IMGFMT_IS_RGB(int fmt)
}
#define IMGFMT_RGB_DEPTH(fmt) (mp_imgfmt_get_desc(fmt).plane_bits)
-
-#define IMGFMT_IS_HWACCEL(fmt) \
- ((fmt) == IMGFMT_VDPAU || (fmt) == IMGFMT_VDPAU_OUTPUT || \
- (fmt) == IMGFMT_VAAPI || (fmt) == IMGFMT_VDA || (fmt) == IMGFMT_DXVA2)
+#define IMGFMT_IS_HWACCEL(fmt) (mp_imgfmt_get_desc(fmt).flags & MP_IMGFLAG_HWACCEL)
int mp_imgfmt_from_name(bstr name, bool allow_hwaccel);
char *mp_imgfmt_to_name_buf(char *buf, size_t buf_size, int fmt);