summaryrefslogtreecommitdiff
path: root/src/i965_drv_video.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/i965_drv_video.c')
-rw-r--r--src/i965_drv_video.c28
1 files changed, 23 insertions, 5 deletions
diff --git a/src/i965_drv_video.c b/src/i965_drv_video.c
index 9b54597c..0582741e 100644
--- a/src/i965_drv_video.c
+++ b/src/i965_drv_video.c
@@ -2508,12 +2508,16 @@ i965_CreateContext(VADriverContextP ctx,
int i;
int max_width;
int max_height;
+ int min_width_height = I965_MIN_CODEC_ENC_RESOLUTION_WIDTH_HEIGHT;
if (NULL == obj_config) {
vaStatus = VA_STATUS_ERROR_INVALID_CONFIG;
return vaStatus;
}
+ if (obj_config->profile == VAProfileJPEGBaseline)
+ min_width_height = 1;
+
max_resolution(i965, obj_config, &max_width, &max_height);
if (picture_width > max_width ||
@@ -2522,6 +2526,17 @@ i965_CreateContext(VADriverContextP ctx,
return vaStatus;
}
+ if ((VAEntrypointEncSlice == obj_config->entrypoint) ||
+ (VAEntrypointEncPicture == obj_config->entrypoint) ||
+ (VAEntrypointEncSliceLP == obj_config->entrypoint) ||
+ (VAEntrypointFEI == obj_config->entrypoint)) {
+ if (picture_width < min_width_height ||
+ picture_height < min_width_height) {
+ vaStatus = VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED;
+ return vaStatus;
+ }
+ }
+
/* Validate flag */
/* Validate picture dimensions */
contextID = NEW_CONTEXT_ID();
@@ -2666,6 +2681,7 @@ i965_CreateContext(VADriverContextP ctx,
if (vaStatus == VA_STATUS_SUCCESS)
obj_context->wrapper_context = wrapper_context;
}
+
/* Error recovery */
if (VA_STATUS_SUCCESS != vaStatus) {
i965_destroy_context(&i965->context_heap, (struct object_base *)obj_context);
@@ -6438,21 +6454,23 @@ i965_QuerySurfaceAttributes(VADriverContextP ctx,
i++;
if (obj_config->entrypoint == VAEntrypointEncSlice ||
- obj_config->entrypoint == VAEntrypointEncSliceLP) {
+ obj_config->entrypoint == VAEntrypointEncSliceLP ||
+ obj_config->entrypoint == VAEntrypointEncPicture ||
+ obj_config->entrypoint == VAEntrypointFEI) {
attribs[i].type = VASurfaceAttribMinWidth;
attribs[i].value.type = VAGenericValueTypeInteger;
attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE;
- attribs[i].value.value.i = 32;
+ attribs[i].value.value.i = I965_MIN_CODEC_ENC_RESOLUTION_WIDTH_HEIGHT;
if (obj_config->profile == VAProfileJPEGBaseline)
- attribs[i].value.value.i = 16;
+ attribs[i].value.value.i = 1;
i++;
attribs[i].type = VASurfaceAttribMinHeight;
attribs[i].value.type = VAGenericValueTypeInteger;
attribs[i].flags = VA_SURFACE_ATTRIB_GETTABLE;
- attribs[i].value.value.i = 32;
+ attribs[i].value.value.i = I965_MIN_CODEC_ENC_RESOLUTION_WIDTH_HEIGHT;
if (obj_config->profile == VAProfileJPEGBaseline)
- attribs[i].value.value.i = 16;
+ attribs[i].value.value.i = 1;
i++;
}