Browse Source

hwcontext_vaapi: add a quirk for the missing MemoryType attribute

The Intel binary iHD driver does not support the
VASurfaceAttribMemoryType, so surface allocation will fail when using
it.

(cherry picked from commit 2124711b95)
tags/n3.3
Anton Khirnov Mark Thompson 8 years ago
parent
commit
775a8477b7
4 changed files with 17 additions and 2 deletions
  1. +3
    -0
      doc/APIchanges
  2. +7
    -1
      libavutil/hwcontext_vaapi.c
  3. +6
    -0
      libavutil/hwcontext_vaapi.h
  4. +1
    -1
      libavutil/version.h

+ 3
- 0
doc/APIchanges View File

@@ -15,6 +15,9 @@ libavutil: 2015-08-28

API changes, most recent first:

2016-xx-xx - xxxxxxx - lavu 55.39.100 - hwcontext_vaapi.h
Add AV_VAAPI_DRIVER_QUIRK_ATTRIB_MEMTYPE.

2016-xx-xx - xxxxxxx - lavu 55.38.100 - hwcontext_vaapi.h
Add driver quirks field to VAAPI-specific hwdevice and enum with
members AV_VAAPI_DRIVER_QUIRK_* to represent its values.


+ 7
- 1
libavutil/hwcontext_vaapi.c View File

@@ -275,6 +275,11 @@ static const struct {
"i965",
AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS,
},
{
"Intel iHD",
"ubit",
AV_VAAPI_DRIVER_QUIRK_ATTRIB_MEMTYPE,
},
};

static int vaapi_device_init(AVHWDeviceContext *hwdev)
@@ -449,7 +454,8 @@ static int vaapi_frames_init(AVHWFramesContext *hwfc)
}

if (!hwfc->pool) {
int need_memory_type = 1, need_pixel_format = 1;
int need_memory_type = !(hwctx->driver_quirks & AV_VAAPI_DRIVER_QUIRK_ATTRIB_MEMTYPE);
int need_pixel_format = 1;
for (i = 0; i < avfc->nb_attributes; i++) {
if (ctx->attributes[i].type == VASurfaceAttribMemoryType)
need_memory_type = 0;


+ 6
- 0
libavutil/hwcontext_vaapi.h View File

@@ -45,6 +45,12 @@ enum {
* separately afterwards.
*/
AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS = (1 << 1),

/**
* The driver does not support the VASurfaceAttribMemoryType attribute,
* so the surface allocation code will not try to use it.
*/
AV_VAAPI_DRIVER_QUIRK_ATTRIB_MEMTYPE = (1 << 2),
};

/**


+ 1
- 1
libavutil/version.h View File

@@ -79,7 +79,7 @@
*/

#define LIBAVUTIL_VERSION_MAJOR 55
#define LIBAVUTIL_VERSION_MINOR 38
#define LIBAVUTIL_VERSION_MINOR 39
#define LIBAVUTIL_VERSION_MICRO 100

#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \


Loading…
Cancel
Save