vdpau.h

Go to the documentation of this file.
00001 /*
00002  * This source file is documented using Doxygen markup.
00003  * See http://www.stack.nl/~dimitri/doxygen/
00004  */
00005 
00006 /*
00007  * This copyright notice applies to this header file:
00008  *
00009  * Copyright (c) 2008 NVIDIA Corporation
00010  * 
00011  * Permission is hereby granted, free of charge, to any person
00012  * obtaining a copy of this software and associated documentation
00013  * files (the "Software"), to deal in the Software without
00014  * restriction, including without limitation the rights to use,
00015  * copy, modify, merge, publish, distribute, sublicense, and/or sell
00016  * copies of the Software, and to permit persons to whom the
00017  * Software is furnished to do so, subject to the following
00018  * conditions:
00019  *
00020  * The above copyright notice and this permission notice shall be
00021  * included in all copies or substantial portions of the Software.
00022  *
00023  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
00024  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
00025  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
00026  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
00027  * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
00028  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
00029  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
00030  * OTHER DEALINGS IN THE SOFTWARE.
00031  */
00032 
00506 #ifndef _VDPAU_H
00507 #define _VDPAU_H
00508 
00509 #include <stdint.h>
00510 
00511 #ifdef __cplusplus
00512 extern "C" {
00513 #endif
00514 
00533 #define VDP_TRUE 1
00534 
00535 #define VDP_FALSE 0
00536 
00540 typedef int VdpBool;
00541 
00560 #define VDP_INVALID_HANDLE 0xffffffffU
00561 
00566 typedef uint32_t VdpChromaType;
00567 
00569 #define VDP_CHROMA_TYPE_420 (VdpChromaType)0
00570 
00571 #define VDP_CHROMA_TYPE_422 (VdpChromaType)1
00572 
00573 #define VDP_CHROMA_TYPE_444 (VdpChromaType)2
00574 
00578 typedef uint32_t VdpYCbCrFormat;
00579 
00593 #define VDP_YCBCR_FORMAT_NV12     (VdpYCbCrFormat)0
00594 
00605 #define VDP_YCBCR_FORMAT_YV12     (VdpYCbCrFormat)1
00606 
00619 #define VDP_YCBCR_FORMAT_UYVY     (VdpYCbCrFormat)2
00620 
00633 #define VDP_YCBCR_FORMAT_YUYV     (VdpYCbCrFormat)3
00634 
00646 #define VDP_YCBCR_FORMAT_Y8U8V8A8 (VdpYCbCrFormat)4
00647 
00659 #define VDP_YCBCR_FORMAT_V8U8Y8A8 (VdpYCbCrFormat)5
00660 
00664 typedef uint32_t VdpRGBAFormat;
00665 
00678 #define VDP_RGBA_FORMAT_B8G8R8A8    (VdpRGBAFormat)0
00679 
00691 #define VDP_RGBA_FORMAT_R8G8B8A8    (VdpRGBAFormat)1
00692 
00704 #define VDP_RGBA_FORMAT_R10G10B10A2 (VdpRGBAFormat)2
00705 
00717 #define VDP_RGBA_FORMAT_B10G10R10A2 (VdpRGBAFormat)3
00718 
00728 #define VDP_RGBA_FORMAT_A8          (VdpRGBAFormat)4
00729 
00733 typedef uint32_t VdpIndexedFormat;
00734 
00746 #define VDP_INDEXED_FORMAT_A4I4 (VdpIndexedFormat)0
00747 
00758 #define VDP_INDEXED_FORMAT_I4A4 (VdpIndexedFormat)1
00759 
00770 #define VDP_INDEXED_FORMAT_A8I8 (VdpIndexedFormat)2
00771 
00782 #define VDP_INDEXED_FORMAT_I8A8 (VdpIndexedFormat)3
00783 
00791 typedef struct {
00793     uint32_t x;
00795     uint32_t y;
00796 } VdpPoint;
00797 
00808 typedef struct {
00810     uint32_t x0;
00812     uint32_t y0;
00814     uint32_t x1;
00816     uint32_t y1;
00817 } VdpRect;
00818 
00827 typedef struct {
00828     float red;
00829     float green;
00830     float blue;
00831     float alpha;
00832 } VdpColor;
00833 
00846 typedef enum {
00848     VDP_STATUS_OK = 0,
00852     VDP_STATUS_NO_IMPLEMENTATION,
00858     VDP_STATUS_DISPLAY_PREEMPTED,
00865     VDP_STATUS_INVALID_HANDLE,
00872     VDP_STATUS_INVALID_POINTER,
00876     VDP_STATUS_INVALID_CHROMA_TYPE,
00880     VDP_STATUS_INVALID_Y_CB_CR_FORMAT,
00884     VDP_STATUS_INVALID_RGBA_FORMAT,
00888     VDP_STATUS_INVALID_INDEXED_FORMAT,
00892     VDP_STATUS_INVALID_COLOR_STANDARD,
00896     VDP_STATUS_INVALID_COLOR_TABLE_FORMAT,
00901     VDP_STATUS_INVALID_BLEND_FACTOR,
00906     VDP_STATUS_INVALID_BLEND_EQUATION,
00910     VDP_STATUS_INVALID_FLAG,
00914     VDP_STATUS_INVALID_DECODER_PROFILE,
00918     VDP_STATUS_INVALID_VIDEO_MIXER_FEATURE,
00922     VDP_STATUS_INVALID_VIDEO_MIXER_PARAMETER,
00926     VDP_STATUS_INVALID_VIDEO_MIXER_ATTRIBUTE,
00931     VDP_STATUS_INVALID_VIDEO_MIXER_PICTURE_STRUCTURE,
00935     VDP_STATUS_INVALID_FUNC_ID,
00945     VDP_STATUS_INVALID_SIZE,
00952     VDP_STATUS_INVALID_VALUE,
00958     VDP_STATUS_INVALID_STRUCT_VERSION,
00963     VDP_STATUS_RESOURCES,
00973     VDP_STATUS_HANDLE_DEVICE_MISMATCH,
00977     VDP_STATUS_ERROR,
00978 } VdpStatus;
00979 
00989 typedef char const * VdpGetErrorString(
00990     VdpStatus status
00991 );
00992 
01009 #define VDPAU_VERSION 0
01010 
01016 typedef VdpStatus VdpGetApiVersion(
01017     /* output parameters follow */
01018     uint32_t * api_version
01019 );
01020 
01038 typedef VdpStatus VdpGetInformationString(
01039     /* output parameters follow */
01040     char const * * information_string
01041 );
01042 
01062 typedef uint32_t VdpDevice;
01063 
01069 typedef VdpStatus VdpDeviceDestroy(
01070     VdpDevice device
01071 );
01072 
01111 typedef float VdpCSCMatrix[3][4];
01112 
01113 #define VDP_PROCAMP_VERSION 0
01114 
01123 typedef struct {
01127     uint32_t struct_version;
01132     float brightness;
01137     float contrast;
01142     float saturation;
01147     float hue;
01148 } VdpProcamp;
01149 
01156 typedef uint32_t VdpColorStandard;
01157 
01159 #define VDP_COLOR_STANDARD_ITUR_BT_601 (VdpColorStandard)0
01160 
01161 #define VDP_COLOR_STANDARD_ITUR_BT_709 (VdpColorStandard)1
01162 
01163 #define VDP_COLOR_STANDARD_SMPTE_240M  (VdpColorStandard)2
01164 
01173 typedef VdpStatus VdpGenerateCSCMatrix(
01174     VdpProcamp *     procamp,
01175     VdpColorStandard standard,
01176     /* output parameters follow */
01177     VdpCSCMatrix *   csc_matrix
01178 );
01179 
01224 typedef VdpStatus VdpVideoSurfaceQueryCapabilities(
01225     VdpDevice     device,
01226     VdpChromaType surface_chroma_type,
01227     /* output parameters follow */
01228     VdpBool *     is_supported,
01229     uint32_t *    max_width,
01230     uint32_t *    max_height
01231 );
01232 
01244 typedef VdpStatus VdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities(
01245     VdpDevice      device,
01246     VdpChromaType  surface_chroma_type,
01247     VdpYCbCrFormat bits_ycbcr_format,
01248     /* output parameters follow */
01249     VdpBool *      is_supported
01250 );
01251 
01256 typedef uint32_t VdpVideoSurface;
01257 
01272 typedef VdpStatus VdpVideoSurfaceCreate(
01273     VdpDevice         device,
01274     VdpChromaType     chroma_type,
01275     uint32_t          width,
01276     uint32_t          height,
01277     /* output parameters follow */
01278     VdpVideoSurface * surface
01279 );
01280 
01286 typedef VdpStatus VdpVideoSurfaceDestroy(
01287     VdpVideoSurface surface
01288 );
01289 
01299 typedef VdpStatus VdpVideoSurfaceGetParameters(
01300     VdpVideoSurface surface,
01301     /* output parameters follow */
01302     VdpChromaType * chroma_type,
01303     uint32_t *      width,
01304     uint32_t *      height
01305 );
01306 
01325 typedef VdpStatus VdpVideoSurfaceGetBitsYCbCr(
01326     VdpVideoSurface  surface,
01327     VdpYCbCrFormat   destination_ycbcr_format,
01328     void * const *   destination_data,
01329     uint32_t const * destination_pitches
01330 );
01331 
01350 typedef VdpStatus VdpVideoSurfacePutBitsYCbCr(
01351     VdpVideoSurface      surface,
01352     VdpYCbCrFormat       source_ycbcr_format,
01353     void const * const * source_data,
01354     uint32_t const *     source_pitches
01355 );
01356 
01392 typedef uint32_t VdpColorTableFormat;
01393 
01405 #define VDP_COLOR_TABLE_FORMAT_B8G8R8X8 (VdpColorTableFormat)0
01406 
01420 typedef VdpStatus VdpOutputSurfaceQueryCapabilities(
01421     VdpDevice     device,
01422     VdpRGBAFormat surface_rgba_format,
01423     /* output parameters follow */
01424     VdpBool *     is_supported,
01425     uint32_t *    max_width,
01426     uint32_t *    max_height
01427 );
01428 
01439 typedef VdpStatus VdpOutputSurfaceQueryGetPutBitsNativeCapabilities(
01440     VdpDevice     device,
01441     VdpRGBAFormat surface_rgba_format,
01442     /* output parameters follow */
01443     VdpBool *     is_supported
01444 );
01445 
01460 typedef VdpStatus VdpOutputSurfaceQueryPutBitsIndexedCapabilities(
01461     VdpDevice           device,
01462     VdpRGBAFormat       surface_rgba_format,
01463     VdpIndexedFormat    bits_indexed_format,
01464     VdpColorTableFormat color_table_format,
01465     /* output parameters follow */
01466     VdpBool *           is_supported
01467 );
01468 
01481 typedef VdpStatus VdpOutputSurfaceQueryPutBitsYCbCrCapabilities(
01482     VdpDevice      device,
01483     VdpRGBAFormat  surface_rgba_format,
01484     VdpYCbCrFormat bits_ycbcr_format,
01485     /* output parameters follow */
01486     VdpBool *      is_supported
01487 );
01488 
01493 typedef uint32_t VdpOutputSurface;
01494 
01507 typedef VdpStatus VdpOutputSurfaceCreate(
01508     VdpDevice          device,
01509     VdpRGBAFormat      rgba_format,
01510     uint32_t           width,
01511     uint32_t           height,
01512     /* output parameters follow */
01513     VdpOutputSurface * surface
01514 );
01515 
01521 typedef VdpStatus VdpOutputSurfaceDestroy(
01522     VdpOutputSurface surface
01523 );
01524 
01534 typedef VdpStatus VdpOutputSurfaceGetParameters(
01535     VdpOutputSurface surface,
01536     /* output parameters follow */
01537     VdpRGBAFormat *  rgba_format,
01538     uint32_t *       width,
01539     uint32_t *       height
01540 );
01541 
01561 typedef VdpStatus VdpOutputSurfaceGetBitsNative(
01562     VdpOutputSurface surface,
01563     VdpRect const *  source_rect,
01564     void * const *   destination_data,
01565     uint32_t const * destination_pitches
01566 );
01567 
01587 typedef VdpStatus VdpOutputSurfacePutBitsNative(
01588     VdpOutputSurface     surface,
01589     void const * const * source_data,
01590     uint32_t const *     source_pitches,
01591     VdpRect const *      destination_rect
01592 );
01593 
01619 typedef VdpStatus VdpOutputSurfacePutBitsIndexed(
01620     VdpOutputSurface     surface,
01621     VdpIndexedFormat     source_indexed_format,
01622     void const * const * source_data,
01623     uint32_t const *     source_pitch,
01624     VdpRect const *      destination_rect,
01625     VdpColorTableFormat  color_table_format,
01626     void const *         color_table
01627 );
01628 
01654 typedef VdpStatus VdpOutputSurfacePutBitsYCbCr(
01655     VdpOutputSurface     surface,
01656     VdpYCbCrFormat       source_ycbcr_format,
01657     void const * const * source_data,
01658     uint32_t const *     source_pitches,
01659     VdpRect const *      destination_rect,
01660     VdpCSCMatrix const * csc_matrix
01661 );
01662 
01714 typedef VdpStatus VdpBitmapSurfaceQueryCapabilities(
01715     VdpDevice     device,
01716     VdpRGBAFormat surface_rgba_format,
01717     /* output parameters follow */
01718     VdpBool *     is_supported,
01719     uint32_t *    max_width,
01720     uint32_t *    max_height
01721 );
01722 
01727 typedef uint32_t VdpBitmapSurface;
01728 
01746 typedef VdpStatus VdpBitmapSurfaceCreate(
01747     VdpDevice          device,
01748     VdpRGBAFormat      rgba_format,
01749     uint32_t           width,
01750     uint32_t           height,
01751     VdpBool            frequently_accessed,
01752     /* output parameters follow */
01753     VdpBitmapSurface * surface
01754 );
01755 
01761 typedef VdpStatus VdpBitmapSurfaceDestroy(
01762     VdpBitmapSurface surface
01763 );
01764 
01776 typedef VdpStatus VdpBitmapSurfaceGetParameters(
01777     VdpBitmapSurface surface,
01778     /* output parameters follow */
01779     VdpRGBAFormat *  rgba_format,
01780     uint32_t *       width,
01781     uint32_t *       height,
01782     VdpBool *        frequently_accessed
01783 );
01784 
01804 typedef VdpStatus VdpBitmapSurfacePutBitsNative(
01805     VdpBitmapSurface     surface,
01806     void const * const * source_data,
01807     uint32_t const *     source_pitches,
01808     VdpRect const *      destination_rect
01809 );
01810 
01828 typedef enum {
01829     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ZERO                     = 0,
01830     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE                      = 1,
01831     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_COLOR                = 2,
01832     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_COLOR      = 3,
01833     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA                = 4,
01834     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA      = 5,
01835     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_ALPHA                = 6,
01836     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_ALPHA      = 7,
01837     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_DST_COLOR                = 8,
01838     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_DST_COLOR      = 9,
01839     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_SRC_ALPHA_SATURATE       = 10,
01840     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_COLOR           = 11,
01841     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 12,
01842     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_CONSTANT_ALPHA           = 13,
01843     VDP_OUTPUT_SURFACE_RENDER_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 14,
01844 } VdpOutputSurfaceRenderBlendFactor;
01845 
01850 typedef enum {
01851     VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_SUBTRACT         = 0,
01852     VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_REVERSE_SUBTRACT = 1,
01853     VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_ADD              = 2,
01854     VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MIN              = 3,
01855     VDP_OUTPUT_SURFACE_RENDER_BLEND_EQUATION_MAX              = 4,
01856 } VdpOutputSurfaceRenderBlendEquation;
01857 
01858 #define VDP_OUTPUT_SURFACE_RENDER_BLEND_STATE_VERSION 0
01859 
01863 typedef struct {
01867     uint32_t struct_version;
01868     VdpOutputSurfaceRenderBlendFactor   blend_factor_source_color;
01869     VdpOutputSurfaceRenderBlendFactor   blend_factor_destination_color;
01870     VdpOutputSurfaceRenderBlendFactor   blend_factor_source_alpha;
01871     VdpOutputSurfaceRenderBlendFactor   blend_factor_destination_alpha;
01872     VdpOutputSurfaceRenderBlendEquation blend_equation_color;
01873     VdpOutputSurfaceRenderBlendEquation blend_equation_alpha;
01874     VdpColor                            blend_constant;
01875 } VdpOutputSurfaceRenderBlendState;
01876 
01881 #define VDP_OUTPUT_SURFACE_RENDER_ROTATE_0   0
01882 
01888 #define VDP_OUTPUT_SURFACE_RENDER_ROTATE_90  1
01889 
01895 #define VDP_OUTPUT_SURFACE_RENDER_ROTATE_180 2
01896 
01902 #define VDP_OUTPUT_SURFACE_RENDER_ROTATE_270 3
01903 
01911 #define VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX (1 << 2)
01912 
01990 typedef VdpStatus VdpOutputSurfaceRenderOutputSurface(
01991     VdpOutputSurface                         destination_surface,
01992     VdpRect const *                          destination_rect,
01993     VdpOutputSurface                         source_surface,
01994     VdpRect const *                          source_rect,
01995     VdpColor const *                         colors,
01996     VdpOutputSurfaceRenderBlendState const * blend_state,
01997     uint32_t                                 flags
01998 );
01999 
02077 typedef VdpStatus VdpOutputSurfaceRenderBitmapSurface(
02078     VdpOutputSurface                         destination_surface,
02079     VdpRect const *                          destination_rect,
02080     VdpBitmapSurface                         source_surface,
02081     VdpRect const *                          source_rect,
02082     VdpColor const *                         colors,
02083     VdpOutputSurfaceRenderBlendState const * blend_state,
02084     uint32_t                                 flags
02085 );
02086 
02107 typedef uint32_t VdpDecoderProfile;
02108 
02110 #define VDP_DECODER_PROFILE_MPEG1                       (VdpDecoderProfile)0
02111 
02112 #define VDP_DECODER_PROFILE_MPEG2_SIMPLE                (VdpDecoderProfile)1
02113 
02114 #define VDP_DECODER_PROFILE_MPEG2_MAIN                  (VdpDecoderProfile)2
02115 
02117 #define VDP_DECODER_PROFILE_H264_BASELINE               (VdpDecoderProfile)6
02118 
02119 #define VDP_DECODER_PROFILE_H264_MAIN                   (VdpDecoderProfile)7
02120 
02121 #define VDP_DECODER_PROFILE_H264_HIGH                   (VdpDecoderProfile)8
02122 
02123 #define VDP_DECODER_PROFILE_VC1_SIMPLE                  (VdpDecoderProfile)9
02124 
02125 #define VDP_DECODER_PROFILE_VC1_MAIN                    (VdpDecoderProfile)10
02126 
02127 #define VDP_DECODER_PROFILE_VC1_ADVANCED                (VdpDecoderProfile)11
02128 
02130 #define VDP_DECODER_LEVEL_MPEG1_NA 0
02131 
02133 #define VDP_DECODER_LEVEL_MPEG2_LL   0
02134 
02135 #define VDP_DECODER_LEVEL_MPEG2_ML   1
02136 
02137 #define VDP_DECODER_LEVEL_MPEG2_HL14 2
02138 
02139 #define VDP_DECODER_LEVEL_MPEG2_HL   3
02140 
02142 #define VDP_DECODER_LEVEL_H264_1     10
02143 
02144 #define VDP_DECODER_LEVEL_H264_1b    9
02145 
02146 #define VDP_DECODER_LEVEL_H264_1_1   11
02147 
02148 #define VDP_DECODER_LEVEL_H264_1_2   12
02149 
02150 #define VDP_DECODER_LEVEL_H264_1_3   13
02151 
02152 #define VDP_DECODER_LEVEL_H264_2     20
02153 
02154 #define VDP_DECODER_LEVEL_H264_2_1   21
02155 
02156 #define VDP_DECODER_LEVEL_H264_2_2   22
02157 
02158 #define VDP_DECODER_LEVEL_H264_3     30
02159 
02160 #define VDP_DECODER_LEVEL_H264_3_1   31
02161 
02162 #define VDP_DECODER_LEVEL_H264_3_2   32
02163 
02164 #define VDP_DECODER_LEVEL_H264_4     40
02165 
02166 #define VDP_DECODER_LEVEL_H264_4_1   41
02167 
02168 #define VDP_DECODER_LEVEL_H264_4_2   42
02169 
02170 #define VDP_DECODER_LEVEL_H264_5     50
02171 
02172 #define VDP_DECODER_LEVEL_H264_5_1   51
02173 
02175 #define VDP_DECODER_LEVEL_VC1_SIMPLE_LOW    0
02176 
02177 #define VDP_DECODER_LEVEL_VC1_SIMPLE_MEDIUM 1
02178 
02180 #define VDP_DECODER_LEVEL_VC1_MAIN_LOW    0
02181 
02182 #define VDP_DECODER_LEVEL_VC1_MAIN_MEDIUM 1
02183 
02184 #define VDP_DECODER_LEVEL_VC1_MAIN_HIGH   2
02185 
02187 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L0 0
02188 
02189 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L1 1
02190 
02191 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L2 2
02192 
02193 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L3 3
02194 
02195 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L4 4
02196 
02215 typedef VdpStatus VdpDecoderQueryCapabilities(
02216     VdpDevice         device,
02217     VdpDecoderProfile profile,
02218     /* output parameters follow */
02219     VdpBool *         is_supported,
02220     uint32_t *        max_level,
02221     uint32_t *        max_macroblocks,
02222     uint32_t *        max_width,
02223     uint32_t *        max_height
02224 );
02225 
02229 typedef uint32_t VdpDecoder;
02230 
02247 typedef VdpStatus VdpDecoderCreate(
02248     VdpDevice         device,
02249     VdpDecoderProfile profile,
02250     uint32_t          width,
02251     uint32_t          height,
02252     uint32_t          max_references,
02253     /* output parameters follow */
02254     VdpDecoder *      decoder
02255 );
02256 
02262 typedef VdpStatus VdpDecoderDestroy(
02263     VdpDecoder decoder
02264 );
02265 
02278 typedef VdpStatus VdpDecoderGetParameters(
02279     VdpDecoder          decoder,
02280     /* output parameters follow */
02281     VdpDecoderProfile * profile,
02282     uint32_t *          width,
02283     uint32_t *          height
02284 );
02285 
02286 #define VDP_BITSTREAM_BUFFER_VERSION 0
02287 
02292 typedef struct {
02296     uint32_t     struct_version;
02298     void const * bitstream;
02300     uint32_t     bitstream_bytes;
02301 } VdpBitstreamBuffer;
02302 
02313 typedef void * VdpPictureInfo;
02314 
02323 typedef struct {
02328     VdpVideoSurface forward_reference;
02333     VdpVideoSurface backward_reference;
02335     uint32_t        slice_count;
02336 
02338     uint8_t picture_structure;
02340     uint8_t picture_coding_type;
02342     uint8_t intra_dc_precision;
02344     uint8_t frame_pred_frame_dct;
02346     uint8_t concealment_motion_vectors;
02348     uint8_t intra_vlc_format;
02350     uint8_t alternate_scan;
02352     uint8_t q_scale_type;
02354     uint8_t top_field_first;
02356     uint8_t full_pel_forward_vector;
02358     uint8_t full_pel_backward_vector;
02363     uint8_t f_code[2][2];
02365     uint8_t intra_quantizer_matrix[64];
02367     uint8_t non_intra_quantizer_matrix[64];
02368 } VdpPictureInfoMPEG1Or2;
02369 
02377 typedef struct {
02382     VdpVideoSurface surface;
02384     VdpBool         is_long_term;
02389     VdpBool         top_is_reference;
02394     VdpBool         bottom_is_reference;
02396     int32_t         field_order_cnt[2];
02402     uint16_t        frame_idx;
02403 } VdpReferenceFrameH264;
02404 
02423 typedef struct {
02425     uint32_t slice_count;
02427     int32_t  field_order_cnt[2];
02429     VdpBool  is_reference;
02430 
02432     uint16_t frame_num;
02434     uint8_t  field_pic_flag;
02436     uint8_t  bottom_field_flag;
02438     uint8_t  num_ref_frames;
02440     uint8_t  mb_adaptive_frame_field_flag;
02442     uint8_t  constrained_intra_pred_flag;
02444     uint8_t  weighted_pred_flag;
02446     uint8_t  weighted_bipred_idc;
02448     uint8_t  frame_mbs_only_flag;
02450     uint8_t  transform_8x8_mode_flag;
02452     int8_t   chroma_qp_index_offset;
02454     int8_t   second_chroma_qp_index_offset;
02456     int8_t   pic_init_qp_minus26;
02458     uint8_t  num_ref_idx_l0_active_minus1;
02460     uint8_t  num_ref_idx_l1_active_minus1;
02462     uint8_t  log2_max_frame_num_minus4;
02464     uint8_t  pic_order_cnt_type;
02466     uint8_t  log2_max_pic_order_cnt_lsb_minus4;
02468     uint8_t  delta_pic_order_always_zero_flag;
02470     uint8_t  direct_8x8_inference_flag;
02472     uint8_t  entropy_coding_mode_flag;
02474     uint8_t  pic_order_present_flag;
02476     uint8_t  deblocking_filter_control_present_flag;
02478     uint8_t  redundant_pic_cnt_present_flag;
02479 
02481     uint8_t scaling_lists_4x4[6][16];
02483     uint8_t scaling_lists_8x8[2][64];
02484 
02486     VdpReferenceFrameH264 referenceFrames[16];
02487 } VdpPictureInfoH264;
02488 
02496 typedef struct {
02501     VdpVideoSurface forward_reference;
02506     VdpVideoSurface backward_reference;
02507 
02509     uint32_t slice_count;
02511     uint8_t  picture_type;
02513     uint8_t  frame_coding_mode;
02514 
02516     uint8_t postprocflag;
02518     uint8_t pulldown;
02520     uint8_t interlace;
02522     uint8_t tfcntrflag;
02524     uint8_t finterpflag;
02526     uint8_t psf;
02528     uint8_t dquant;
02530     uint8_t panscan_flag;
02532     uint8_t refdist_flag;
02534     uint8_t quantizer;
02536     uint8_t extended_mv;
02538     uint8_t extended_dmv;
02540     uint8_t overlap;
02542     uint8_t vstransform;
02544     uint8_t loopfilter;
02546     uint8_t fastuvmc;
02548     uint8_t range_mapy_flag;
02550     uint8_t range_mapy;
02552     uint8_t range_mapuv_flag;
02554     uint8_t range_mapuv;
02555 
02560     uint8_t multires;
02565     uint8_t syncmarker;
02570     uint8_t rangered;
02575     uint8_t maxbframes;
02576 
02578     uint8_t deblockEnable;
02580     uint8_t pquant;
02581 } VdpPictureInfoVC1;
02582 
02601 typedef VdpStatus VdpDecoderRender(
02602     VdpDecoder                 decoder,
02603     VdpVideoSurface            target,
02604     VdpPictureInfo const *     picture_info,
02605     uint32_t                   bitstream_buffer_count,
02606     VdpBitstreamBuffer const * bitstream_buffers
02607 );
02608 
02688 typedef uint32_t VdpVideoMixerFeature;
02689 
02701 #define VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL         (VdpVideoMixerFeature)0
02702 
02714 #define VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL (VdpVideoMixerFeature)1
02715 
02723 #define VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE             (VdpVideoMixerFeature)2
02724 
02731 #define VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION              (VdpVideoMixerFeature)3
02732 
02739 #define VDP_VIDEO_MIXER_FEATURE_SHARPNESS                    (VdpVideoMixerFeature)4
02740 
02752 #define VDP_VIDEO_MIXER_FEATURE_LUMA_KEY                     (VdpVideoMixerFeature)5
02753 
02766 typedef uint32_t VdpVideoMixerParameter;
02767 
02780 #define VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_WIDTH  (VdpVideoMixerParameter)0
02781 
02793 #define VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_HEIGHT (VdpVideoMixerParameter)1
02794 
02807 #define VDP_VIDEO_MIXER_PARAMETER_CHROMA_TYPE          (VdpVideoMixerParameter)2
02808 
02826 #define VDP_VIDEO_MIXER_PARAMETER_LAYERS               (VdpVideoMixerParameter)3
02827 
02840 typedef uint32_t VdpVideoMixerAttribute;
02841 
02855 #define VDP_VIDEO_MIXER_ATTRIBUTE_BACKGROUND_COLOR      (VdpVideoMixerAttribute)0
02856 
02883 #define VDP_VIDEO_MIXER_ATTRIBUTE_CSC_MATRIX            (VdpVideoMixerAttribute)1
02884 
02896 #define VDP_VIDEO_MIXER_ATTRIBUTE_NOISE_REDUCTION_LEVEL (VdpVideoMixerAttribute)2
02897 
02912 #define VDP_VIDEO_MIXER_ATTRIBUTE_SHARPNESS_LEVEL       (VdpVideoMixerAttribute)3
02913 
02924 #define VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MIN_LUMA     (VdpVideoMixerAttribute)4
02925 
02936 #define VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MAX_LUMA     (VdpVideoMixerAttribute)5
02937 
02947 typedef VdpStatus VdpVideoMixerQueryFeatureSupport(
02948     VdpDevice            device,
02949     VdpVideoMixerFeature feature,
02950     /* output parameters follow */
02951     VdpBool *            is_supported
02952 );
02953 
02964 typedef VdpStatus VdpVideoMixerQueryParameterSupport(
02965     VdpDevice              device,
02966     VdpVideoMixerParameter parameter,
02967     /* output parameters follow */
02968     VdpBool *              is_supported
02969 );
02970 
02980 typedef VdpStatus VdpVideoMixerQueryAttributeSupport(
02981     VdpDevice              device,
02982     VdpVideoMixerAttribute attribute,
02983     /* output parameters follow */
02984     VdpBool *              is_supported
02985 );
02986 
02997 typedef VdpStatus VdpVideoMixerQueryParameterValueRange(
02998     VdpDevice              device,
02999     VdpVideoMixerParameter parameter,
03000     /* output parameters follow */
03001     void *                min_value,
03002     void *                max_value
03003 );
03004 
03015 typedef VdpStatus VdpVideoMixerQueryAttributeValueRange(
03016     VdpDevice              device,
03017     VdpVideoMixerAttribute attribute,
03018     /* output parameters follow */
03019     void *                min_value,
03020     void *                max_value
03021 );
03022 
03026 typedef uint32_t VdpVideoMixer;
03027 
03048 typedef VdpStatus VdpVideoMixerCreate(
03049     VdpDevice                      device,
03050     // The set of features to request
03051     uint32_t                       feature_count,
03052     VdpVideoMixerFeature const *   features,
03053     // The parameters used during creation
03054     uint32_t                       parameter_count,
03055     VdpVideoMixerParameter const * parameters,
03056     void const * const *           parameter_values,
03057     /* output parameters follow */
03058     VdpVideoMixer *                mixer
03059 );
03060 
03071 typedef VdpStatus VdpVideoMixerSetFeatureEnables(
03072     VdpVideoMixer                mixer,
03073     uint32_t                     feature_count,
03074     VdpVideoMixerFeature const * features,
03075     VdpBool const *              feature_enables
03076 );
03077 
03090 typedef VdpStatus VdpVideoMixerSetAttributeValues(
03091     VdpVideoMixer                  mixer,
03092     uint32_t                       attribute_count,
03093     VdpVideoMixerAttribute const * attributes,
03094     void const * const *           attribute_values
03095 );
03096 
03108 typedef VdpStatus VdpVideoMixerGetFeatureSupport(
03109     VdpVideoMixer                mixer,
03110     uint32_t                     feature_count,
03111     VdpVideoMixerFeature const * features,
03112     /* output parameters follow */
03113     VdpBool *                    feature_supports
03114 );
03115 
03125 typedef VdpStatus VdpVideoMixerGetFeatureEnables(
03126     VdpVideoMixer                mixer,
03127     uint32_t                     feature_count,
03128     VdpVideoMixerFeature const * features,
03129     /* output parameters follow */
03130     VdpBool *                    feature_enables
03131 );
03132 
03145 typedef VdpStatus VdpVideoMixerGetParameterValues(
03146     VdpVideoMixer                  mixer,
03147     uint32_t                       parameter_count,
03148     VdpVideoMixerParameter const * parameters,
03149     /* output parameters follow */
03150     void * const *                 parameter_values
03151 );
03152 
03165 typedef VdpStatus VdpVideoMixerGetAttributeValues(
03166     VdpVideoMixer                  mixer,
03167     uint32_t                       attribute_count,
03168     VdpVideoMixerAttribute const * attributes,
03169     /* output parameters follow */
03170     void * const *                 attribute_values
03171 );
03172 
03178 typedef VdpStatus VdpVideoMixerDestroy(
03179     VdpVideoMixer mixer
03180 );
03181 
03187 typedef enum {
03191     VDP_VIDEO_MIXER_PICTURE_STRUCTURE_TOP_FIELD,
03196     VDP_VIDEO_MIXER_PICTURE_STRUCTURE_BOTTOM_FIELD,
03200     VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME,
03201 } VdpVideoMixerPictureStructure;
03202 
03203 #define VDP_LAYER_VERSION 0
03204 
03209 typedef struct {
03213     uint32_t struct_version;
03217     VdpOutputSurface source_surface;
03222     VdpRect const *  source_rect;
03231      VdpRect const * destination_rect;
03232 } VdpLayer;
03233 
03297 typedef VdpStatus VdpVideoMixerRender(
03298     VdpVideoMixer                 mixer,
03299     VdpOutputSurface              background_surface,
03300     VdpRect const *               background_source_rect,
03301     VdpVideoMixerPictureStructure current_picture_structure,
03302     uint32_t                      video_surface_past_count,
03303     VdpVideoSurface const *       video_surface_past,
03304     VdpVideoSurface               video_surface_current,
03305     uint32_t                      video_surface_future_count,
03306     VdpVideoSurface const *       video_surface_future,
03307     VdpRect const *               video_source_rect,
03308     VdpOutputSurface              destination_surface,
03309     VdpRect const *               destination_rect,
03310     VdpRect const *               destination_video_rect,
03311     uint32_t                      layer_count,
03312     VdpLayer const *              layers
03313 );
03314 
03366 typedef uint64_t VdpTime;
03367 
03376 typedef uint32_t VdpPresentationQueueTarget;
03377 
03383 typedef VdpStatus VdpPresentationQueueTargetDestroy(
03384     VdpPresentationQueueTarget presentation_queue_target
03385 );
03386 
03391 typedef uint32_t VdpPresentationQueue;
03392 
03404 typedef VdpStatus VdpPresentationQueueCreate(
03405     VdpDevice                  device,
03406     VdpPresentationQueueTarget presentation_queue_target,
03407     /* output parameters follow */
03408     VdpPresentationQueue *     presentation_queue
03409 );
03410 
03416 typedef VdpStatus VdpPresentationQueueDestroy(
03417     VdpPresentationQueue presentation_queue
03418 );
03419 
03429 typedef VdpStatus VdpPresentationQueueSetBackgroundColor(
03430     VdpPresentationQueue presentation_queue,
03431     VdpColor * const     background_color
03432 );
03433 
03439 typedef VdpStatus VdpPresentationQueueGetBackgroundColor(
03440     VdpPresentationQueue presentation_queue,
03441     VdpColor *           background_color
03442 );
03443 
03451 typedef VdpStatus VdpPresentationQueueGetTime(
03452     VdpPresentationQueue presentation_queue,
03453     /* output parameters follow */
03454     VdpTime *            current_time
03455 );
03456 
03489 typedef VdpStatus VdpPresentationQueueDisplay(
03490     VdpPresentationQueue presentation_queue,
03491     VdpOutputSurface     surface,
03492     uint32_t             clip_width,
03493     uint32_t             clip_height,
03494     VdpTime              earliest_presentation_time
03495 );
03496 
03511 typedef VdpStatus VdpPresentationQueueBlockUntilSurfaceIdle(
03512     VdpPresentationQueue presentation_queue,
03513     VdpOutputSurface     surface,
03514     /* output parameters follow */
03515     VdpTime *            first_presentation_time
03516 );
03517 
03522 typedef enum {
03524     VDP_PRESENTATION_QUEUE_STATUS_IDLE,
03526     VDP_PRESENTATION_QUEUE_STATUS_QUEUED,
03528     VDP_PRESENTATION_QUEUE_STATUS_VISIBLE,
03529 } VdpPresentationQueueStatus;
03530 
03542 typedef VdpStatus VdpPresentationQueueQuerySurfaceStatus(
03543     VdpPresentationQueue         presentation_queue,
03544     VdpOutputSurface             surface,
03545     /* output parameters follow */
03546     VdpPresentationQueueStatus * status,
03547     VdpTime *                    first_presentation_time
03548 );
03549 
03604 typedef void VdpPreemptionCallback(
03605     VdpDevice device,
03606     void *   context
03607 );
03608 
03619 typedef VdpStatus VdpPreemptionCallbackRegister(
03620     VdpDevice             device,
03621     VdpPreemptionCallback callback,
03622     void *               context
03623 );
03624 
03642 typedef uint32_t VdpFuncId;
03643 
03645 #define VDP_FUNC_ID_GET_ERROR_STRING                                            (VdpFuncId)0
03646 
03647 #define VDP_FUNC_ID_GET_PROC_ADDRESS                                            (VdpFuncId)1
03648 
03649 #define VDP_FUNC_ID_GET_API_VERSION                                             (VdpFuncId)2
03650 
03651 #define VDP_FUNC_ID_GET_INFORMATION_STRING                                      (VdpFuncId)4
03652 
03653 #define VDP_FUNC_ID_DEVICE_DESTROY                                              (VdpFuncId)5
03654 
03655 #define VDP_FUNC_ID_GENERATE_CSC_MATRIX                                         (VdpFuncId)6
03656 
03657 #define VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES                            (VdpFuncId)7
03658 
03659 #define VDP_FUNC_ID_VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES       (VdpFuncId)8
03660 
03661 #define VDP_FUNC_ID_VIDEO_SURFACE_CREATE                                        (VdpFuncId)9
03662 
03663 #define VDP_FUNC_ID_VIDEO_SURFACE_DESTROY                                       (VdpFuncId)10
03664 
03665 #define VDP_FUNC_ID_VIDEO_SURFACE_GET_PARAMETERS                                (VdpFuncId)11
03666 
03667 #define VDP_FUNC_ID_VIDEO_SURFACE_GET_BITS_Y_CB_CR                              (VdpFuncId)12
03668 
03669 #define VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR                              (VdpFuncId)13
03670 
03671 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_CAPABILITIES                           (VdpFuncId)14
03672 
03673 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES       (VdpFuncId)15
03674 
03675 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_INDEXED_CAPABILITIES          (VdpFuncId)16
03676 
03677 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_Y_CB_CR_CAPABILITIES          (VdpFuncId)17
03678 
03679 #define VDP_FUNC_ID_OUTPUT_SURFACE_CREATE                                       (VdpFuncId)18
03680 
03681 #define VDP_FUNC_ID_OUTPUT_SURFACE_DESTROY                                      (VdpFuncId)19
03682 
03683 #define VDP_FUNC_ID_OUTPUT_SURFACE_GET_PARAMETERS                               (VdpFuncId)20
03684 
03685 #define VDP_FUNC_ID_OUTPUT_SURFACE_GET_BITS_NATIVE                              (VdpFuncId)21
03686 
03687 #define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_NATIVE                              (VdpFuncId)22
03688 
03689 #define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_INDEXED                             (VdpFuncId)23
03690 
03691 #define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_Y_CB_CR                             (VdpFuncId)24
03692 
03693 #define VDP_FUNC_ID_BITMAP_SURFACE_QUERY_CAPABILITIES                           (VdpFuncId)25
03694 
03695 #define VDP_FUNC_ID_BITMAP_SURFACE_CREATE                                       (VdpFuncId)26
03696 
03697 #define VDP_FUNC_ID_BITMAP_SURFACE_DESTROY                                      (VdpFuncId)27
03698 
03699 #define VDP_FUNC_ID_BITMAP_SURFACE_GET_PARAMETERS                               (VdpFuncId)28
03700 
03701 #define VDP_FUNC_ID_BITMAP_SURFACE_PUT_BITS_NATIVE                              (VdpFuncId)29
03702 
03703 #define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_OUTPUT_SURFACE                        (VdpFuncId)33
03704 
03705 #define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE                        (VdpFuncId)34
03706 
03707 #define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_VIDEO_SURFACE_LUMA                    (VdpFuncId)35
03708 
03709 #define VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES                                  (VdpFuncId)36
03710 
03711 #define VDP_FUNC_ID_DECODER_CREATE                                              (VdpFuncId)37
03712 
03713 #define VDP_FUNC_ID_DECODER_DESTROY                                             (VdpFuncId)38
03714 
03715 #define VDP_FUNC_ID_DECODER_GET_PARAMETERS                                      (VdpFuncId)39
03716 
03717 #define VDP_FUNC_ID_DECODER_RENDER                                              (VdpFuncId)40
03718 
03719 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_FEATURE_SUPPORT                           (VdpFuncId)41
03720 
03721 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_SUPPORT                         (VdpFuncId)42
03722 
03723 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_SUPPORT                         (VdpFuncId)43
03724 
03725 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_VALUE_RANGE                     (VdpFuncId)44
03726 
03727 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_VALUE_RANGE                     (VdpFuncId)45
03728 
03729 #define VDP_FUNC_ID_VIDEO_MIXER_CREATE                                          (VdpFuncId)46
03730 
03731 #define VDP_FUNC_ID_VIDEO_MIXER_SET_FEATURE_ENABLES                             (VdpFuncId)47
03732 
03733 #define VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES                            (VdpFuncId)48
03734 
03735 #define VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_SUPPORT                             (VdpFuncId)49
03736 
03737 #define VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_ENABLES                             (VdpFuncId)50
03738 
03739 #define VDP_FUNC_ID_VIDEO_MIXER_GET_PARAMETER_VALUES                            (VdpFuncId)51
03740 
03741 #define VDP_FUNC_ID_VIDEO_MIXER_GET_ATTRIBUTE_VALUES                            (VdpFuncId)52
03742 
03743 #define VDP_FUNC_ID_VIDEO_MIXER_DESTROY                                         (VdpFuncId)53
03744 
03745 #define VDP_FUNC_ID_VIDEO_MIXER_RENDER                                          (VdpFuncId)54
03746 
03747 #define VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_DESTROY                           (VdpFuncId)55
03748 
03749 #define VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE                                   (VdpFuncId)56
03750 
03751 #define VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY                                  (VdpFuncId)57
03752 
03753 #define VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR                     (VdpFuncId)58
03754 
03755 #define VDP_FUNC_ID_PRESENTATION_QUEUE_GET_BACKGROUND_COLOR                     (VdpFuncId)59
03756 
03757 #define VDP_FUNC_ID_PRESENTATION_QUEUE_GET_TIME                                 (VdpFuncId)62
03758 
03759 #define VDP_FUNC_ID_PRESENTATION_QUEUE_DISPLAY                                  (VdpFuncId)63
03760 
03761 #define VDP_FUNC_ID_PRESENTATION_QUEUE_BLOCK_UNTIL_SURFACE_IDLE                 (VdpFuncId)64
03762 
03763 #define VDP_FUNC_ID_PRESENTATION_QUEUE_QUERY_SURFACE_STATUS                     (VdpFuncId)65
03764 
03765 #define VDP_FUNC_ID_PREEMPTION_CALLBACK_REGISTER                                (VdpFuncId)66
03766 
03767 #define VDP_FUNC_ID_BASE_WINSYS 0x1000
03768 
03778 typedef VdpStatus VdpGetProcAddress(
03779     VdpDevice device,
03780     VdpFuncId function_id,
03781     /* output parameters follow */
03782     void * *  function_pointer
03783 );
03784 
03787 
03795 #ifdef __cplusplus
03796 }
03797 #endif
03798 
03799 #endif
03800 

Generated on Fri Jan 9 10:19:17 2009 for VDPAU by  doxygen 1.5.6