diff --git a/src/buffer.c b/src/buffer.c index d558726..6627294 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -85,6 +85,9 @@ VAStatus RequestCreateBuffer(VADriverContextP context, VAContextID context_id, buffer_object->data = buffer_data; buffer_object->size = size; + buffer_object->derived_surface_id = VA_INVALID_ID; + buffer_object->info.handle = (uintptr_t) -1; + *buffer_id = id; status = VA_STATUS_SUCCESS; diff --git a/src/buffer.h b/src/buffer.h index f790c5b..9a2ac35 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -44,6 +44,9 @@ struct object_buffer { void *data; unsigned int size; + + VASurfaceID derived_surface_id; + VABufferInfo info; }; VAStatus RequestCreateBuffer(VADriverContextP context, VAContextID context_id, diff --git a/src/image.c b/src/image.c index 30d21e8..6223c0a 100644 --- a/src/image.c +++ b/src/image.c @@ -122,8 +122,8 @@ VAStatus RequestDeriveImage(VADriverContextP context, VASurfaceID surface_id, struct request_data *driver_data = context->pDriverData; struct object_surface *surface_object; struct object_buffer *buffer_object; - unsigned int i; VAImageFormat format; + unsigned int i; VAStatus status; surface_object = SURFACE(driver_data, surface_id); @@ -134,8 +134,6 @@ VAStatus RequestDeriveImage(VADriverContextP context, VASurfaceID surface_id, status = RequestSyncSurface(context, surface_id); if (status != VA_STATUS_SUCCESS) return status; - } else if (surface_object->status == VASurfaceReady) { - return VA_STATUS_SUCCESS; } format.fourcc = VA_FOURCC_NV12; @@ -164,6 +162,8 @@ VAStatus RequestDeriveImage(VADriverContextP context, VASurfaceID surface_id, surface_object->status = VASurfaceReady; + buffer_object->derived_surface_id = surface_id; + return VA_STATUS_SUCCESS; }