diff options
Diffstat (limited to 'video/vaapi.h')
-rw-r--r-- | video/vaapi.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/video/vaapi.h b/video/vaapi.h new file mode 100644 index 0000000000..2fc149d524 --- /dev/null +++ b/video/vaapi.h @@ -0,0 +1,73 @@ +#ifndef MPV_VDPAU_H +#define MPV_VDPAU_H + +#include <stdbool.h> +#include <inttypes.h> + +#include <va/va.h> + +/* Compatibility glue with VA-API >= 0.31 */ +#if defined VA_CHECK_VERSION +#if VA_CHECK_VERSION(0,31,0) +#define vaPutImage2 vaPutImage +#define vaAssociateSubpicture2 vaAssociateSubpicture +#endif +#endif + +/* Compatibility glue with VA-API >= 0.34 */ +#if VA_CHECK_VERSION(0,34,0) +#include <va/va_compat.h> +#endif + +/* Compatibility glue with upstream libva */ +#ifndef VA_SDS_VERSION +#define VA_SDS_VERSION 0 +#endif + +/* Compatibility glue with VA-API >= 0.30 */ +#ifndef VA_INVALID_ID +#define VA_INVALID_ID 0xffffffff +#endif +#ifndef VA_FOURCC +#define VA_FOURCC(ch0, ch1, ch2, ch3) \ + ((uint32_t)(uint8_t)(ch0) | \ + ((uint32_t)(uint8_t)(ch1) << 8) | \ + ((uint32_t)(uint8_t)(ch2) << 16) | \ + ((uint32_t)(uint8_t)(ch3) << 24 )) +#endif +#if defined VA_SRC_BT601 && defined VA_SRC_BT709 +# define USE_VAAPI_COLORSPACE 1 +#else +# define USE_VAAPI_COLORSPACE 0 +#endif + +/* Compatibility glue with VA-API >= 0.31.1 */ +#ifndef VA_SRC_SMPTE_240 +#define VA_SRC_SMPTE_240 0x00000040 +#endif +#if defined VA_FILTER_SCALING_MASK +# define USE_VAAPI_SCALING 1 +#else +# define USE_VAAPI_SCALING 0 +#endif + +#include "mpvcore/mp_msg.h" + +static inline bool check_va_status(VAStatus status, const char *msg) +{ + if (status != VA_STATUS_SUCCESS) { + mp_msg(MSGT_VO, MSGL_ERR, "[vaapi] %s: %s\n", msg, vaErrorStr(status)); + return false; + } + return true; +} + +struct mp_vaapi_ctx { + VADisplay display; + struct mp_image *(*get_surface)(struct mp_vaapi_ctx *ctx, int va_format, + int mp_format, int w, int h); + void (*flush)(struct mp_vaapi_ctx *ctx); + void *priv; // for VO +}; + +#endif |