diff options
Diffstat (limited to 'dummy_drv_video/dummy_drv_video.c')
-rw-r--r-- | dummy_drv_video/dummy_drv_video.c | 1232 |
1 files changed, 0 insertions, 1232 deletions
diff --git a/dummy_drv_video/dummy_drv_video.c b/dummy_drv_video/dummy_drv_video.c deleted file mode 100644 index 282f208..0000000 --- a/dummy_drv_video/dummy_drv_video.c +++ /dev/null @@ -1,1232 +0,0 @@ -/* - * Copyright (c) 2007 Intel Corporation. All Rights Reserved. - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the - * "Software"), to deal in the Software without restriction, including - * without limitation the rights to use, copy, modify, merge, publish, - * distribute, sub license, and/or sell copies of the Software, and to - * permit persons to whom the Software is furnished to do so, subject to - * the following conditions: - * - * The above copyright notice and this permission notice (including the - * next paragraph) shall be included in all copies or substantial portions - * of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. - * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR - * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - */ - -#include "config.h" -#include <va/va_backend.h> - -#include "dummy_drv_video.h" - -#include "assert.h" -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <stdarg.h> - -#define ASSERT assert - -#define INIT_DRIVER_DATA struct dummy_driver_data * const driver_data = (struct dummy_driver_data *) ctx->pDriverData; - -#define CONFIG(id) ((object_config_p) object_heap_lookup( &driver_data->config_heap, id )) -#define CONTEXT(id) ((object_context_p) object_heap_lookup( &driver_data->context_heap, id )) -#define SURFACE(id) ((object_surface_p) object_heap_lookup( &driver_data->surface_heap, id )) -#define BUFFER(id) ((object_buffer_p) object_heap_lookup( &driver_data->buffer_heap, id )) - -#define CONFIG_ID_OFFSET 0x01000000 -#define CONTEXT_ID_OFFSET 0x02000000 -#define SURFACE_ID_OFFSET 0x04000000 -#define BUFFER_ID_OFFSET 0x08000000 - -static void dummy__error_message(const char *msg, ...) -{ - va_list args; - - fprintf(stderr, "dummy_drv_video error: "); - va_start(args, msg); - vfprintf(stderr, msg, args); - va_end(args); -} - -static void dummy__information_message(const char *msg, ...) -{ - va_list args; - - fprintf(stderr, "dummy_drv_video: "); - va_start(args, msg); - vfprintf(stderr, msg, args); - va_end(args); -} - -VAStatus dummy_QueryConfigProfiles( - VADriverContextP ctx, - VAProfile *profile_list, /* out */ - int *num_profiles /* out */ - ) -{ - int i = 0; - - profile_list[i++] = VAProfileMPEG2Simple; - profile_list[i++] = VAProfileMPEG2Main; - profile_list[i++] = VAProfileMPEG4Simple; - profile_list[i++] = VAProfileMPEG4AdvancedSimple; - profile_list[i++] = VAProfileMPEG4Main; - profile_list[i++] = VAProfileH264Baseline; - profile_list[i++] = VAProfileH264Main; - profile_list[i++] = VAProfileH264High; - profile_list[i++] = VAProfileVC1Simple; - profile_list[i++] = VAProfileVC1Main; - profile_list[i++] = VAProfileVC1Advanced; - - /* If the assert fails then DUMMY_MAX_PROFILES needs to be bigger */ - ASSERT(i <= DUMMY_MAX_PROFILES); - *num_profiles = i; - - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_QueryConfigEntrypoints( - VADriverContextP ctx, - VAProfile profile, - VAEntrypoint *entrypoint_list, /* out */ - int *num_entrypoints /* out */ - ) -{ - switch (profile) { - case VAProfileMPEG2Simple: - case VAProfileMPEG2Main: - *num_entrypoints = 2; - entrypoint_list[0] = VAEntrypointVLD; - entrypoint_list[1] = VAEntrypointMoComp; - break; - - case VAProfileMPEG4Simple: - case VAProfileMPEG4AdvancedSimple: - case VAProfileMPEG4Main: - *num_entrypoints = 1; - entrypoint_list[0] = VAEntrypointVLD; - break; - - case VAProfileH264Baseline: - case VAProfileH264Main: - case VAProfileH264High: - *num_entrypoints = 1; - entrypoint_list[0] = VAEntrypointVLD; - break; - - case VAProfileVC1Simple: - case VAProfileVC1Main: - case VAProfileVC1Advanced: - *num_entrypoints = 1; - entrypoint_list[0] = VAEntrypointVLD; - break; - - default: - *num_entrypoints = 0; - break; - } - - /* If the assert fails then DUMMY_MAX_ENTRYPOINTS needs to be bigger */ - ASSERT(*num_entrypoints <= DUMMY_MAX_ENTRYPOINTS); - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_GetConfigAttributes( - VADriverContextP ctx, - VAProfile profile, - VAEntrypoint entrypoint, - VAConfigAttrib *attrib_list, /* in/out */ - int num_attribs - ) -{ - int i; - - /* Other attributes don't seem to be defined */ - /* What to do if we don't know the attribute? */ - for (i = 0; i < num_attribs; i++) - { - switch (attrib_list[i].type) - { - case VAConfigAttribRTFormat: - attrib_list[i].value = VA_RT_FORMAT_YUV420; - break; - - default: - /* Do nothing */ - attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED; - break; - } - } - - return VA_STATUS_SUCCESS; -} - -static VAStatus dummy__update_attribute(object_config_p obj_config, VAConfigAttrib *attrib) -{ - int i; - /* Check existing attrbiutes */ - for(i = 0; obj_config->attrib_count < i; i++) - { - if (obj_config->attrib_list[i].type == attrib->type) - { - /* Update existing attribute */ - obj_config->attrib_list[i].value = attrib->value; - return VA_STATUS_SUCCESS; - } - } - if (obj_config->attrib_count < DUMMY_MAX_CONFIG_ATTRIBUTES) - { - i = obj_config->attrib_count; - obj_config->attrib_list[i].type = attrib->type; - obj_config->attrib_list[i].value = attrib->value; - obj_config->attrib_count++; - return VA_STATUS_SUCCESS; - } - return VA_STATUS_ERROR_MAX_NUM_EXCEEDED; -} - -VAStatus dummy_CreateConfig( - VADriverContextP ctx, - VAProfile profile, - VAEntrypoint entrypoint, - VAConfigAttrib *attrib_list, - int num_attribs, - VAConfigID *config_id /* out */ - ) -{ - INIT_DRIVER_DATA - VAStatus vaStatus; - int configID; - object_config_p obj_config; - int i; - - /* Validate profile & entrypoint */ - switch (profile) { - case VAProfileMPEG2Simple: - case VAProfileMPEG2Main: - if ((VAEntrypointVLD == entrypoint) || - (VAEntrypointMoComp == entrypoint)) - { - vaStatus = VA_STATUS_SUCCESS; - } - else - { - vaStatus = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT; - } - break; - - case VAProfileMPEG4Simple: - case VAProfileMPEG4AdvancedSimple: - case VAProfileMPEG4Main: - if (VAEntrypointVLD == entrypoint) - { - vaStatus = VA_STATUS_SUCCESS; - } - else - { - vaStatus = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT; - } - break; - - case VAProfileH264Baseline: - case VAProfileH264Main: - case VAProfileH264High: - if (VAEntrypointVLD == entrypoint) - { - vaStatus = VA_STATUS_SUCCESS; - } - else - { - vaStatus = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT; - } - break; - - case VAProfileVC1Simple: - case VAProfileVC1Main: - case VAProfileVC1Advanced: - if (VAEntrypointVLD == entrypoint) - { - vaStatus = VA_STATUS_SUCCESS; - } - else - { - vaStatus = VA_STATUS_ERROR_UNSUPPORTED_ENTRYPOINT; - } - break; - - default: - vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE; - break; - } - - if (VA_STATUS_SUCCESS != vaStatus) - { - return vaStatus; - } - - configID = object_heap_allocate( &driver_data->config_heap ); - obj_config = CONFIG(configID); - if (NULL == obj_config) - { - vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED; - return vaStatus; - } - - obj_config->profile = profile; - obj_config->entrypoint = entrypoint; - obj_config->attrib_list[0].type = VAConfigAttribRTFormat; - obj_config->attrib_list[0].value = VA_RT_FORMAT_YUV420; - obj_config->attrib_count = 1; - - for(i = 0; i < num_attribs; i++) - { - vaStatus = dummy__update_attribute(obj_config, &(attrib_list[i])); - if (VA_STATUS_SUCCESS != vaStatus) - { - break; - } - } - - /* Error recovery */ - if (VA_STATUS_SUCCESS != vaStatus) - { - object_heap_free( &driver_data->config_heap, (object_base_p) obj_config); - } - else - { - *config_id = configID; - } - - return vaStatus; -} - -VAStatus dummy_DestroyConfig( - VADriverContextP ctx, - VAConfigID config_id - ) -{ - INIT_DRIVER_DATA - VAStatus vaStatus; - object_config_p obj_config; - - obj_config = CONFIG(config_id); - if (NULL == obj_config) - { - vaStatus = VA_STATUS_ERROR_INVALID_CONFIG; - return vaStatus; - } - - object_heap_free( &driver_data->config_heap, (object_base_p) obj_config); - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_QueryConfigAttributes( - VADriverContextP ctx, - VAConfigID config_id, - VAProfile *profile, /* out */ - VAEntrypoint *entrypoint, /* out */ - VAConfigAttrib *attrib_list, /* out */ - int *num_attribs /* out */ - ) -{ - INIT_DRIVER_DATA - VAStatus vaStatus = VA_STATUS_SUCCESS; - object_config_p obj_config; - int i; - - obj_config = CONFIG(config_id); - ASSERT(obj_config); - - *profile = obj_config->profile; - *entrypoint = obj_config->entrypoint; - *num_attribs = obj_config->attrib_count; - for(i = 0; i < obj_config->attrib_count; i++) - { - attrib_list[i] = obj_config->attrib_list[i]; - } - - return vaStatus; -} - -VAStatus dummy_CreateSurfaces( - VADriverContextP ctx, - int width, - int height, - int format, - int num_surfaces, - VASurfaceID *surfaces /* out */ - ) -{ - INIT_DRIVER_DATA - VAStatus vaStatus = VA_STATUS_SUCCESS; - int i; - - /* We only support one format */ - if (VA_RT_FORMAT_YUV420 != format) - { - return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT; - } - - for (i = 0; i < num_surfaces; i++) - { - int surfaceID = object_heap_allocate( &driver_data->surface_heap ); - object_surface_p obj_surface = SURFACE(surfaceID); - if (NULL == obj_surface) - { - vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED; - break; - } - obj_surface->surface_id = surfaceID; - surfaces[i] = surfaceID; - } - - /* Error recovery */ - if (VA_STATUS_SUCCESS != vaStatus) - { - /* surfaces[i-1] was the last successful allocation */ - for(; i--; ) - { - object_surface_p obj_surface = SURFACE(surfaces[i]); - surfaces[i] = VA_INVALID_SURFACE; - ASSERT(obj_surface); - object_heap_free( &driver_data->surface_heap, (object_base_p) obj_surface); - } - } - - return vaStatus; -} - -VAStatus dummy_DestroySurfaces( - VADriverContextP ctx, - VASurfaceID *surface_list, - int num_surfaces - ) -{ - INIT_DRIVER_DATA - int i; - for(i = num_surfaces; i--; ) - { - object_surface_p obj_surface = SURFACE(surface_list[i]); - ASSERT(obj_surface); - object_heap_free( &driver_data->surface_heap, (object_base_p) obj_surface); - } - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_QueryImageFormats( - VADriverContextP ctx, - VAImageFormat *format_list, /* out */ - int *num_formats /* out */ -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_CreateImage( - VADriverContextP ctx, - VAImageFormat *format, - int width, - int height, - VAImage *image /* out */ -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_DeriveImage( - VADriverContextP ctx, - VASurfaceID surface, - VAImage *image /* out */ -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_DestroyImage( - VADriverContextP ctx, - VAImageID image -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_SetImagePalette( - VADriverContextP ctx, - VAImageID image, - unsigned char *palette -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_GetImage( - VADriverContextP ctx, - VASurfaceID surface, - int x, /* coordinates of the upper left source pixel */ - int y, - unsigned int width, /* width and height of the region */ - unsigned int height, - VAImageID image -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - - -VAStatus dummy_PutImage( - VADriverContextP ctx, - VASurfaceID surface, - VAImageID image, - int src_x, - int src_y, - unsigned int src_width, - unsigned int src_height, - int dest_x, - int dest_y, - unsigned int dest_width, - unsigned int dest_height -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_QuerySubpictureFormats( - VADriverContextP ctx, - VAImageFormat *format_list, /* out */ - unsigned int *flags, /* out */ - unsigned int *num_formats /* out */ -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_CreateSubpicture( - VADriverContextP ctx, - VAImageID image, - VASubpictureID *subpicture /* out */ -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_DestroySubpicture( - VADriverContextP ctx, - VASubpictureID subpicture -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_SetSubpictureImage( - VADriverContextP ctx, - VASubpictureID subpicture, - VAImageID image -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_SetSubpicturePalette( - VADriverContextP ctx, - VASubpictureID subpicture, - /* - * pointer to an array holding the palette data. The size of the array is - * num_palette_entries * entry_bytes in size. The order of the components - * in the palette is described by the component_order in VASubpicture struct - */ - unsigned char *palette -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_SetSubpictureChromakey( - VADriverContextP ctx, - VASubpictureID subpicture, - unsigned int chromakey_min, - unsigned int chromakey_max, - unsigned int chromakey_mask -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_SetSubpictureGlobalAlpha( - VADriverContextP ctx, - VASubpictureID subpicture, - float global_alpha -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - - -VAStatus dummy_AssociateSubpicture( - VADriverContextP ctx, - VASubpictureID subpicture, - VASurfaceID *target_surfaces, - int num_surfaces, - short src_x, /* upper left offset in subpicture */ - short src_y, - unsigned short src_width, - unsigned short src_height, - short dest_x, /* upper left offset in surface */ - short dest_y, - unsigned short dest_width, - unsigned short dest_height, - /* - * whether to enable chroma-keying or global-alpha - * see VA_SUBPICTURE_XXX values - */ - unsigned int flags -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_DeassociateSubpicture( - VADriverContextP ctx, - VASubpictureID subpicture, - VASurfaceID *target_surfaces, - int num_surfaces -) -{ - /* TODO */ - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_CreateContext( - VADriverContextP ctx, - VAConfigID config_id, - int picture_width, - int picture_height, - int flag, - VASurfaceID *render_targets, - int num_render_targets, - VAContextID *context /* out */ - ) -{ - INIT_DRIVER_DATA - VAStatus vaStatus = VA_STATUS_SUCCESS; - object_config_p obj_config; - int i; - - obj_config = CONFIG(config_id); - if (NULL == obj_config) - { - vaStatus = VA_STATUS_ERROR_INVALID_CONFIG; - return vaStatus; - } - - /* Validate flag */ - /* Validate picture dimensions */ - - int contextID = object_heap_allocate( &driver_data->context_heap ); - object_context_p obj_context = CONTEXT(contextID); - if (NULL == obj_context) - { - vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED; - return vaStatus; - } - - obj_context->context_id = contextID; - *context = contextID; - obj_context->current_render_target = -1; - obj_context->config_id = config_id; - obj_context->picture_width = picture_width; - obj_context->picture_height = picture_height; - obj_context->num_render_targets = num_render_targets; - obj_context->render_targets = (VASurfaceID *) malloc(num_render_targets * sizeof(VASurfaceID)); - if (obj_context->render_targets == NULL) - { - vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED; - return vaStatus; - } - - for(i = 0; i < num_render_targets; i++) - { - if (NULL == SURFACE(render_targets[i])) - { - vaStatus = VA_STATUS_ERROR_INVALID_SURFACE; - break; - } - obj_context->render_targets[i] = render_targets[i]; - } - obj_context->flags = flag; - - /* Error recovery */ - if (VA_STATUS_SUCCESS != vaStatus) - { - obj_context->context_id = -1; - obj_context->config_id = -1; - free(obj_context->render_targets); - obj_context->render_targets = NULL; - obj_context->num_render_targets = 0; - obj_context->flags = 0; - object_heap_free( &driver_data->context_heap, (object_base_p) obj_context); - } - - return vaStatus; -} - - -VAStatus dummy_DestroyContext( - VADriverContextP ctx, - VAContextID context - ) -{ - INIT_DRIVER_DATA - object_context_p obj_context = CONTEXT(context); - ASSERT(obj_context); - - obj_context->context_id = -1; - obj_context->config_id = -1; - obj_context->picture_width = 0; - obj_context->picture_height = 0; - if (obj_context->render_targets) - { - free(obj_context->render_targets); - } - obj_context->render_targets = NULL; - obj_context->num_render_targets = 0; - obj_context->flags = 0; - - obj_context->current_render_target = -1; - - object_heap_free( &driver_data->context_heap, (object_base_p) obj_context); - - return VA_STATUS_SUCCESS; -} - - - -static VAStatus dummy__allocate_buffer(object_buffer_p obj_buffer, int size) -{ - VAStatus vaStatus = VA_STATUS_SUCCESS; - - obj_buffer->buffer_data = realloc(obj_buffer->buffer_data, size); - if (NULL == obj_buffer->buffer_data) - { - vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED; - } - return vaStatus; -} - -VAStatus dummy_CreateBuffer( - VADriverContextP ctx, - VAContextID context, /* in */ - VABufferType type, /* in */ - unsigned int size, /* in */ - unsigned int num_elements, /* in */ - void *data, /* in */ - VABufferID *buf_id /* out */ -) -{ - INIT_DRIVER_DATA - VAStatus vaStatus = VA_STATUS_SUCCESS; - int bufferID; - object_buffer_p obj_buffer; - - /* Validate type */ - switch (type) - { - case VAPictureParameterBufferType: - case VAIQMatrixBufferType: - case VABitPlaneBufferType: - case VASliceGroupMapBufferType: - case VASliceParameterBufferType: - case VASliceDataBufferType: - case VAMacroblockParameterBufferType: - case VAResidualDataBufferType: - case VADeblockingParameterBufferType: - case VAImageBufferType: - /* Ok */ - break; - default: - vaStatus = VA_STATUS_ERROR_UNSUPPORTED_BUFFERTYPE; - return vaStatus; - } - - bufferID = object_heap_allocate( &driver_data->buffer_heap ); - obj_buffer = BUFFER(bufferID); - if (NULL == obj_buffer) - { - vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED; - return vaStatus; - } - - obj_buffer->buffer_data = NULL; - - vaStatus = dummy__allocate_buffer(obj_buffer, size * num_elements); - if (VA_STATUS_SUCCESS == vaStatus) - { - obj_buffer->max_num_elements = num_elements; - obj_buffer->num_elements = num_elements; - if (data) - { - memcpy(obj_buffer->buffer_data, data, size * num_elements); - } - } - - if (VA_STATUS_SUCCESS == vaStatus) - { - *buf_id = bufferID; - } - - return vaStatus; -} - - -VAStatus dummy_BufferSetNumElements( - VADriverContextP ctx, - VABufferID buf_id, /* in */ - unsigned int num_elements /* in */ - ) -{ - INIT_DRIVER_DATA - VAStatus vaStatus = VA_STATUS_SUCCESS; - object_buffer_p obj_buffer = BUFFER(buf_id); - ASSERT(obj_buffer); - - if ((num_elements < 0) || (num_elements > obj_buffer->max_num_elements)) - { - vaStatus = VA_STATUS_ERROR_UNKNOWN; - } - if (VA_STATUS_SUCCESS == vaStatus) - { - obj_buffer->num_elements = num_elements; - } - - return vaStatus; -} - -VAStatus dummy_MapBuffer( - VADriverContextP ctx, - VABufferID buf_id, /* in */ - void **pbuf /* out */ - ) -{ - INIT_DRIVER_DATA - VAStatus vaStatus = VA_STATUS_ERROR_UNKNOWN; - object_buffer_p obj_buffer = BUFFER(buf_id); - ASSERT(obj_buffer); - if (NULL == obj_buffer) - { - vaStatus = VA_STATUS_ERROR_INVALID_BUFFER; - return vaStatus; - } - - if (NULL != obj_buffer->buffer_data) - { - *pbuf = obj_buffer->buffer_data; - vaStatus = VA_STATUS_SUCCESS; - } - return vaStatus; -} - -VAStatus dummy_UnmapBuffer( - VADriverContextP ctx, - VABufferID buf_id /* in */ - ) -{ - /* Do nothing */ - return VA_STATUS_SUCCESS; -} - -static void dummy__destroy_buffer(struct dummy_driver_data *driver_data, object_buffer_p obj_buffer) -{ - if (NULL != obj_buffer->buffer_data) - { - free(obj_buffer->buffer_data); - obj_buffer->buffer_data = NULL; - } - - object_heap_free( &driver_data->buffer_heap, (object_base_p) obj_buffer); -} - -VAStatus dummy_DestroyBuffer( - VADriverContextP ctx, - VABufferID buffer_id - ) -{ - INIT_DRIVER_DATA - object_buffer_p obj_buffer = BUFFER(buffer_id); - ASSERT(obj_buffer); - - dummy__destroy_buffer(driver_data, obj_buffer); - return VA_STATUS_SUCCESS; -} - -VAStatus dummy_BeginPicture( - VADriverContextP ctx, - VAContextID context, - VASurfaceID render_target - ) -{ - INIT_DRIVER_DATA - VAStatus vaStatus = VA_STATUS_SUCCESS; - object_context_p obj_context; - object_surface_p obj_surface; - - obj_context = CONTEXT(context); - ASSERT(obj_context); - - obj_surface = SURFACE(render_target); - ASSERT(obj_surface); - - obj_context->current_render_target = obj_surface->base.id; - - return vaStatus; -} - -VAStatus dummy_RenderPicture( - VADriverContextP ctx, - VAContextID context, - VABufferID *buffers, - int num_buffers - ) -{ - INIT_DRIVER_DATA - VAStatus vaStatus = VA_STATUS_SUCCESS; - object_context_p obj_context; - object_surface_p obj_surface; - int i; - - obj_context = CONTEXT(context); - ASSERT(obj_context); - - obj_surface = SURFACE(obj_context->current_render_target); - ASSERT(obj_surface); - - /* verify that we got valid buffer references */ - for(i = 0; i < num_buffers; i++) - { - object_buffer_p obj_buffer = BUFFER(buffers[i]); - ASSERT(obj_buffer); - if (NULL == obj_buffer) - { - vaStatus = VA_STATUS_ERROR_INVALID_BUFFER; - break; - } - } - - /* Release buffers */ - for(i = 0; i < num_buffers; i++) - { - object_buffer_p obj_buffer = BUFFER(buffers[i]); - ASSERT(obj_buffer); - dummy__destroy_buffer(driver_data, obj_buffer); - } - - return vaStatus; -} - -VAStatus dummy_EndPicture( - VADriverContextP ctx, - VAContextID context - ) -{ - INIT_DRIVER_DATA - VAStatus vaStatus = VA_STATUS_SUCCESS; - object_context_p obj_context; - object_surface_p obj_surface; - - obj_context = CONTEXT(context); - ASSERT(obj_context); - - obj_surface = SURFACE(obj_context->current_render_target); - ASSERT(obj_surface); - - // For now, assume that we are done with rendering right away - obj_context->current_render_target = -1; - - return vaStatus; -} - - -VAStatus dummy_SyncSurface( - VADriverContextP ctx, - VASurfaceID render_target - ) -{ - INIT_DRIVER_DATA - VAStatus vaStatus = VA_STATUS_SUCCESS; - object_surface_p obj_surface; - - obj_surface = SURFACE(render_target); - ASSERT(obj_surface); - - return vaStatus; -} - -VAStatus dummy_QuerySurfaceStatus( - VADriverContextP ctx, - VASurfaceID render_target, - VASurfaceStatus *status /* out */ - ) -{ - INIT_DRIVER_DATA - VAStatus vaStatus = VA_STATUS_SUCCESS; - object_surface_p obj_surface; - - obj_surface = SURFACE(render_target); - ASSERT(obj_surface); - - *status = VASurfaceReady; - - return vaStatus; -} - -VAStatus dummy_PutSurface( - VADriverContextP ctx, - VASurfaceID surface, - void *draw, /* X Drawable */ - short srcx, - short srcy, - unsigned short srcw, - unsigned short srch, - short destx, - short desty, - unsigned short destw, - unsigned short desth, - VARectangle *cliprects, /* client supplied clip list */ - unsigned int number_cliprects, /* number of clip rects in the clip list */ - unsigned int flags /* de-interlacing flags */ - ) -{ - /* TODO */ - return VA_STATUS_ERROR_UNKNOWN; -} - -/* - * Query display attributes - * The caller must provide a "attr_list" array that can hold at - * least vaMaxNumDisplayAttributes() entries. The actual number of attributes - * returned in "attr_list" is returned in "num_attributes". - */ -VAStatus dummy_QueryDisplayAttributes ( - VADriverContextP ctx, - VADisplayAttribute *attr_list, /* out */ - int *num_attributes /* out */ - ) -{ - /* TODO */ - return VA_STATUS_ERROR_UNKNOWN; -} - -/* - * Get display attributes - * This function returns the current attribute values in "attr_list". - * Only attributes returned with VA_DISPLAY_ATTRIB_GETTABLE set in the "flags" field - * from vaQueryDisplayAttributes() can have their values retrieved. - */ -VAStatus dummy_GetDisplayAttributes ( - VADriverContextP ctx, - VADisplayAttribute *attr_list, /* in/out */ - int num_attributes - ) -{ - /* TODO */ - return VA_STATUS_ERROR_UNKNOWN; -} - -/* - * Set display attributes - * Only attributes returned with VA_DISPLAY_ATTRIB_SETTABLE set in the "flags" field - * from vaQueryDisplayAttributes() can be set. If the attribute is not settable or - * the value is out of range, the function returns VA_STATUS_ERROR_ATTR_NOT_SUPPORTED - */ -VAStatus dummy_SetDisplayAttributes ( - VADriverContextP ctx, - VADisplayAttribute *attr_list, - int num_attributes - ) -{ - /* TODO */ - return VA_STATUS_ERROR_UNKNOWN; -} - - -VAStatus dummy_BufferInfo( - VADriverContextP ctx, - VABufferID buf_id, /* in */ - VABufferType *type, /* out */ - unsigned int *size, /* out */ - unsigned int *num_elements /* out */ - ) -{ - /* TODO */ - return VA_STATUS_ERROR_UNIMPLEMENTED; -} - - - -VAStatus dummy_LockSurface( - VADriverContextP ctx, - VASurfaceID surface, - unsigned int *fourcc, /* following are output argument */ - unsigned int *luma_stride, - unsigned int *chroma_u_stride, - unsigned int *chroma_v_stride, - unsigned int *luma_offset, - unsigned int *chroma_u_offset, - unsigned int *chroma_v_offset, - unsigned int *buffer_name, - void **buffer - ) -{ - /* TODO */ - return VA_STATUS_ERROR_UNIMPLEMENTED; -} - -VAStatus dummy_UnlockSurface( - VADriverContextP ctx, - VASurfaceID surface - ) -{ - /* TODO */ - return VA_STATUS_ERROR_UNIMPLEMENTED; -} - -VAStatus dummy_Terminate( VADriverContextP ctx ) -{ - INIT_DRIVER_DATA - object_buffer_p obj_buffer; - object_config_p obj_config; - object_heap_iterator iter; - - /* Clean up left over buffers */ - obj_buffer = (object_buffer_p) object_heap_first( &driver_data->buffer_heap, &iter); - while (obj_buffer) - { - dummy__information_message("vaTerminate: bufferID %08x still allocated, destroying\n", obj_buffer->base.id); - dummy__destroy_buffer(driver_data, obj_buffer); - obj_buffer = (object_buffer_p) object_heap_next( &driver_data->buffer_heap, &iter); - } - object_heap_destroy( &driver_data->buffer_heap ); - - /* TODO cleanup */ - object_heap_destroy( &driver_data->surface_heap ); - - /* TODO cleanup */ - object_heap_destroy( &driver_data->context_heap ); - - /* Clean up configIDs */ - obj_config = (object_config_p) object_heap_first( &driver_data->config_heap, &iter); - while (obj_config) - { - object_heap_free( &driver_data->config_heap, (object_base_p) obj_config); - obj_config = (object_config_p) object_heap_next( &driver_data->config_heap, &iter); - } - object_heap_destroy( &driver_data->config_heap ); - - free(ctx->pDriverData); - ctx->pDriverData = NULL; - - return VA_STATUS_SUCCESS; -} - -VAStatus VA_DRIVER_INIT_FUNC( VADriverContextP ctx ) -{ - struct VADriverVTable * const vtable = ctx->vtable; - int result; - struct dummy_driver_data *driver_data; - - ctx->version_major = VA_MAJOR_VERSION; - ctx->version_minor = VA_MINOR_VERSION; - ctx->max_profiles = DUMMY_MAX_PROFILES; - ctx->max_entrypoints = DUMMY_MAX_ENTRYPOINTS; - ctx->max_attributes = DUMMY_MAX_CONFIG_ATTRIBUTES; - ctx->max_image_formats = DUMMY_MAX_IMAGE_FORMATS; - ctx->max_subpic_formats = DUMMY_MAX_SUBPIC_FORMATS; - ctx->max_display_attributes = DUMMY_MAX_DISPLAY_ATTRIBUTES; - ctx->str_vendor = DUMMY_STR_VENDOR; - - vtable->vaTerminate = dummy_Terminate; - vtable->vaQueryConfigEntrypoints = dummy_QueryConfigEntrypoints; - vtable->vaQueryConfigProfiles = dummy_QueryConfigProfiles; - vtable->vaQueryConfigEntrypoints = dummy_QueryConfigEntrypoints; - vtable->vaQueryConfigAttributes = dummy_QueryConfigAttributes; - vtable->vaCreateConfig = dummy_CreateConfig; - vtable->vaDestroyConfig = dummy_DestroyConfig; - vtable->vaGetConfigAttributes = dummy_GetConfigAttributes; - vtable->vaCreateSurfaces = dummy_CreateSurfaces; - vtable->vaDestroySurfaces = dummy_DestroySurfaces; - vtable->vaCreateContext = dummy_CreateContext; - vtable->vaDestroyContext = dummy_DestroyContext; - vtable->vaCreateBuffer = dummy_CreateBuffer; - vtable->vaBufferSetNumElements = dummy_BufferSetNumElements; - vtable->vaMapBuffer = dummy_MapBuffer; - vtable->vaUnmapBuffer = dummy_UnmapBuffer; - vtable->vaDestroyBuffer = dummy_DestroyBuffer; - vtable->vaBeginPicture = dummy_BeginPicture; - vtable->vaRenderPicture = dummy_RenderPicture; - vtable->vaEndPicture = dummy_EndPicture; - vtable->vaSyncSurface = dummy_SyncSurface; - vtable->vaQuerySurfaceStatus = dummy_QuerySurfaceStatus; - vtable->vaPutSurface = dummy_PutSurface; - vtable->vaQueryImageFormats = dummy_QueryImageFormats; - vtable->vaCreateImage = dummy_CreateImage; - vtable->vaDeriveImage = dummy_DeriveImage; - vtable->vaDestroyImage = dummy_DestroyImage; - vtable->vaSetImagePalette = dummy_SetImagePalette; - vtable->vaGetImage = dummy_GetImage; - vtable->vaPutImage = dummy_PutImage; - vtable->vaQuerySubpictureFormats = dummy_QuerySubpictureFormats; - vtable->vaCreateSubpicture = dummy_CreateSubpicture; - vtable->vaDestroySubpicture = dummy_DestroySubpicture; - vtable->vaSetSubpictureImage = dummy_SetSubpictureImage; - vtable->vaSetSubpictureChromakey = dummy_SetSubpictureChromakey; - vtable->vaSetSubpictureGlobalAlpha = dummy_SetSubpictureGlobalAlpha; - vtable->vaAssociateSubpicture = dummy_AssociateSubpicture; - vtable->vaDeassociateSubpicture = dummy_DeassociateSubpicture; - vtable->vaQueryDisplayAttributes = dummy_QueryDisplayAttributes; - vtable->vaGetDisplayAttributes = dummy_GetDisplayAttributes; - vtable->vaSetDisplayAttributes = dummy_SetDisplayAttributes; - vtable->vaLockSurface = dummy_LockSurface; - vtable->vaUnlockSurface = dummy_UnlockSurface; - vtable->vaBufferInfo = dummy_BufferInfo; - - driver_data = (struct dummy_driver_data *) malloc( sizeof(*driver_data) ); - ctx->pDriverData = (void *) driver_data; - - result = object_heap_init( &driver_data->config_heap, sizeof(struct object_config), CONFIG_ID_OFFSET ); - ASSERT( result == 0 ); - - result = object_heap_init( &driver_data->context_heap, sizeof(struct object_context), CONTEXT_ID_OFFSET ); - ASSERT( result == 0 ); - - result = object_heap_init( &driver_data->surface_heap, sizeof(struct object_surface), SURFACE_ID_OFFSET ); - ASSERT( result == 0 ); - - result = object_heap_init( &driver_data->buffer_heap, sizeof(struct object_buffer), BUFFER_ID_OFFSET ); - ASSERT( result == 0 ); - - - return VA_STATUS_SUCCESS; -} - |