diff options
author | Austin Yuan <shengquan.yuan@intel.com> | 2009-06-13 09:17:46 +0800 |
---|---|---|
committer | Austin Yuan <shengquan.yuan@intel.com> | 2009-06-13 09:17:46 +0800 |
commit | 527643827e6589645df6fe2232c2d397f9fe76e9 (patch) | |
tree | 21273912c858cb5f0fc07978daa1371005567781 /src/va_backend.h | |
parent | bd592e383a2b863863c20cbb51ccfc8f6a068e84 (diff) | |
download | libva-527643827e6589645df6fe2232c2d397f9fe76e9.tar.gz |
Fix the issue that all files are moved into a sub-directory libva.
Signed-off-by: Austin Yuan <shengquan.yuan@intel.com>
Diffstat (limited to 'src/va_backend.h')
-rwxr-xr-x | src/va_backend.h | 453 |
1 files changed, 453 insertions, 0 deletions
diff --git a/src/va_backend.h b/src/va_backend.h new file mode 100755 index 0000000..c411201 --- /dev/null +++ b/src/va_backend.h @@ -0,0 +1,453 @@ +/* + * 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. + */ + +/* + * Video Decode Acceleration -Backend API + */ + +#ifndef _VA_BACKEND_H_ +#define _VA_BACKEND_H_ + +#ifdef IN_LIBVA +#include "va.h" +#include "X11/va_x11.h" +#else +#include <va/va.h> +#include <va/va_x11.h> +#endif + +#include <stdlib.h> + + +typedef struct VADriverContext *VADriverContextP; +typedef struct VADisplayContext *VADisplayContextP; + +struct VADriverVTable +{ + VAStatus (*vaTerminate) ( VADriverContextP ctx ); + + VAStatus (*vaQueryConfigProfiles) ( + VADriverContextP ctx, + VAProfile *profile_list, /* out */ + int *num_profiles /* out */ + ); + + VAStatus (*vaQueryConfigEntrypoints) ( + VADriverContextP ctx, + VAProfile profile, + VAEntrypoint *entrypoint_list, /* out */ + int *num_entrypoints /* out */ + ); + + VAStatus (*vaGetConfigAttributes) ( + VADriverContextP ctx, + VAProfile profile, + VAEntrypoint entrypoint, + VAConfigAttrib *attrib_list, /* in/out */ + int num_attribs + ); + + VAStatus (*vaCreateConfig) ( + VADriverContextP ctx, + VAProfile profile, + VAEntrypoint entrypoint, + VAConfigAttrib *attrib_list, + int num_attribs, + VAConfigID *config_id /* out */ + ); + + VAStatus (*vaDestroyConfig) ( + VADriverContextP ctx, + VAConfigID config_id + ); + + VAStatus (*vaQueryConfigAttributes) ( + VADriverContextP ctx, + VAConfigID config_id, + VAProfile *profile, /* out */ + VAEntrypoint *entrypoint, /* out */ + VAConfigAttrib *attrib_list, /* out */ + int *num_attribs /* out */ + ); + + VAStatus (*vaCreateSurfaces) ( + VADriverContextP ctx, + int width, + int height, + int format, + int num_surfaces, + VASurfaceID *surfaces /* out */ + ); + + VAStatus (*vaCreateSurfaceFromCIFrame) ( + VADriverContextP ctx, + unsigned long frame_id, + VASurfaceID *surface /* out */ + ); + + VAStatus (*vaDestroySurfaces) ( + VADriverContextP ctx, + VASurfaceID *surface_list, + int num_surfaces + ); + + VAStatus (*vaCreateContext) ( + VADriverContextP ctx, + VAConfigID config_id, + int picture_width, + int picture_height, + int flag, + VASurfaceID *render_targets, + int num_render_targets, + VAContextID *context /* out */ + ); + + VAStatus (*vaDestroyContext) ( + VADriverContextP ctx, + VAContextID context + ); + + VAStatus (*vaCreateBuffer) ( + VADriverContextP ctx, + VAContextID context, /* in */ + VABufferType type, /* in */ + unsigned int size, /* in */ + unsigned int num_elements, /* in */ + void *data, /* in */ + VABufferID *buf_id /* out */ + ); + + VAStatus (*vaBufferSetNumElements) ( + VADriverContextP ctx, + VABufferID buf_id, /* in */ + unsigned int num_elements /* in */ + ); + + VAStatus (*vaMapBuffer) ( + VADriverContextP ctx, + VABufferID buf_id, /* in */ + void **pbuf /* out */ + ); + + VAStatus (*vaUnmapBuffer) ( + VADriverContextP ctx, + VABufferID buf_id /* in */ + ); + + VAStatus (*vaDestroyBuffer) ( + VADriverContextP ctx, + VABufferID buffer_id + ); + + VAStatus (*vaBeginPicture) ( + VADriverContextP ctx, + VAContextID context, + VASurfaceID render_target + ); + + VAStatus (*vaRenderPicture) ( + VADriverContextP ctx, + VAContextID context, + VABufferID *buffers, + int num_buffers + ); + + VAStatus (*vaEndPicture) ( + VADriverContextP ctx, + VAContextID context + ); + + VAStatus (*vaSyncSurface) ( + VADriverContextP ctx, + VAContextID context, + VASurfaceID render_target + ); + + VAStatus (*vaQuerySurfaceStatus) ( + VADriverContextP ctx, + VASurfaceID render_target, + VASurfaceStatus *status /* out */ + ); + + VAStatus (*vaPutSurface) ( + VADriverContextP ctx, + VASurfaceID surface, + Drawable 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 */ + ); + + VAStatus (*vaQueryImageFormats) ( + VADriverContextP ctx, + VAImageFormat *format_list, /* out */ + int *num_formats /* out */ + ); + + VAStatus (*vaCreateImage) ( + VADriverContextP ctx, + VAImageFormat *format, + int width, + int height, + VAImage *image /* out */ + ); + + VAStatus (*vaDeriveImage) ( + VADriverContextP ctx, + VASurfaceID surface, + VAImage *image /* out */ + ); + + VAStatus (*vaDestroyImage) ( + VADriverContextP ctx, + VAImageID image + ); + + VAStatus (*vaSetImagePalette) ( + VADriverContextP ctx, + VAImageID image, + /* + * 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 VAImage struct + */ + unsigned char *palette + ); + + VAStatus (*vaGetImage) ( + 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 + ); + + VAStatus (*vaPutImage) ( + VADriverContextP ctx, + VASurfaceID surface, + VAImageID image, + int src_x, + int src_y, + unsigned int width, + unsigned int height, + int dest_x, + int dest_y + ); + + VAStatus (*vaPutImage2) ( + 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 + ); + + VAStatus (*vaQuerySubpictureFormats) ( + VADriverContextP ctx, + VAImageFormat *format_list, /* out */ + unsigned int *flags, /* out */ + unsigned int *num_formats /* out */ + ); + + VAStatus (*vaCreateSubpicture) ( + VADriverContextP ctx, + VAImageID image, + VASubpictureID *subpicture /* out */ + ); + + VAStatus (*vaDestroySubpicture) ( + VADriverContextP ctx, + VASubpictureID subpicture + ); + + VAStatus (*vaSetSubpictureImage) ( + VADriverContextP ctx, + VASubpictureID subpicture, + VAImageID image + ); + + VAStatus (*vaSetSubpictureChromakey) ( + VADriverContextP ctx, + VASubpictureID subpicture, + unsigned int chromakey_min, + unsigned int chromakey_max, + unsigned int chromakey_mask + ); + + VAStatus (*vaSetSubpictureGlobalAlpha) ( + VADriverContextP ctx, + VASubpictureID subpicture, + float global_alpha + ); + + VAStatus (*vaAssociateSubpicture) ( + VADriverContextP ctx, + VASubpictureID subpicture, + VASurfaceID *target_surfaces, + int num_surfaces, + short src_x, /* upper left offset in subpicture */ + short src_y, + short dest_x, /* upper left offset in surface */ + short dest_y, + unsigned short width, + unsigned short height, + /* + * whether to enable chroma-keying or global-alpha + * see VA_SUBPICTURE_XXX values + */ + unsigned int flags + ); + + VAStatus (*vaAssociateSubpicture2) ( + 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 + ); + + VAStatus (*vaDeassociateSubpicture) ( + VADriverContextP ctx, + VASubpictureID subpicture, + VASurfaceID *target_surfaces, + int num_surfaces + ); + + VAStatus (*vaQueryDisplayAttributes) ( + VADriverContextP ctx, + VADisplayAttribute *attr_list, /* out */ + int *num_attributes /* out */ + ); + + VAStatus (*vaGetDisplayAttributes) ( + VADriverContextP ctx, + VADisplayAttribute *attr_list, /* in/out */ + int num_attributes + ); + + VAStatus (*vaSetDisplayAttributes) ( + VADriverContextP ctx, + VADisplayAttribute *attr_list, + int num_attributes + ); + + + VAStatus (*vaDbgCopySurfaceToBuffer) ( + VADriverContextP ctx, + VASurfaceID surface, + void **buffer, /* out */ + unsigned int *stride /* out */ + ); + VAStatus (*vaDbgCreateSurfaceFromMrstV4L2Buf) ( + VADriverContextP ctx, + unsigned int width, + unsigned int height, + unsigned int size, + unsigned int fourcc, + 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, + VASurfaceID *surface /* out */ + ); +}; + +struct VADriverContext +{ + void *old_pNext; /* preserved for binary compatibility */ + + void *pDriverData; + struct VADriverVTable vtable; + + Display *x11_dpy; + int x11_screen; + int dri2; + int version_major; + int version_minor; + int max_profiles; + int max_entrypoints; + int max_attributes; + int max_image_formats; + int max_subpic_formats; + int max_display_attributes; + const char *str_vendor; + + void *handle; /* dlopen handle */ +}; + +struct VADisplayContext +{ + VADisplayContextP pNext; + VADriverContextP pDriverContext; + + int (*vaIsValid) ( + VADisplayContextP ctx + ); + + void (*vaDestroy) ( + VADisplayContextP ctx + ); + + VAStatus (*vaGetDriverName) ( + VADisplayContextP ctx, + char **driver_name + ); +}; + +typedef VAStatus (*VADriverInit) ( + VADriverContextP driver_context +); + + +#endif /* _VA_BACKEND_H_ */ |