00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
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
01018 uint32_t * api_version
01019 );
01020
01038 typedef VdpStatus VdpGetInformationString(
01039
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
01177 VdpCSCMatrix * csc_matrix
01178 );
01179
01224 typedef VdpStatus VdpVideoSurfaceQueryCapabilities(
01225 VdpDevice device,
01226 VdpChromaType surface_chroma_type,
01227
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
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
01278 VdpVideoSurface * surface
01279 );
01280
01286 typedef VdpStatus VdpVideoSurfaceDestroy(
01287 VdpVideoSurface surface
01288 );
01289
01299 typedef VdpStatus VdpVideoSurfaceGetParameters(
01300 VdpVideoSurface surface,
01301
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
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
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
01466 VdpBool * is_supported
01467 );
01468
01481 typedef VdpStatus VdpOutputSurfaceQueryPutBitsYCbCrCapabilities(
01482 VdpDevice device,
01483 VdpRGBAFormat surface_rgba_format,
01484 VdpYCbCrFormat bits_ycbcr_format,
01485
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
01513 VdpOutputSurface * surface
01514 );
01515
01521 typedef VdpStatus VdpOutputSurfaceDestroy(
01522 VdpOutputSurface surface
01523 );
01524
01534 typedef VdpStatus VdpOutputSurfaceGetParameters(
01535 VdpOutputSurface surface,
01536
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
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
01753 VdpBitmapSurface * surface
01754 );
01755
01761 typedef VdpStatus VdpBitmapSurfaceDestroy(
01762 VdpBitmapSurface surface
01763 );
01764
01776 typedef VdpStatus VdpBitmapSurfaceGetParameters(
01777 VdpBitmapSurface surface,
01778
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
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
02254 VdpDecoder * decoder
02255 );
02256
02262 typedef VdpStatus VdpDecoderDestroy(
02263 VdpDecoder decoder
02264 );
02265
02278 typedef VdpStatus VdpDecoderGetParameters(
02279 VdpDecoder decoder,
02280
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
02951 VdpBool * is_supported
02952 );
02953
02964 typedef VdpStatus VdpVideoMixerQueryParameterSupport(
02965 VdpDevice device,
02966 VdpVideoMixerParameter parameter,
02967
02968 VdpBool * is_supported
02969 );
02970
02980 typedef VdpStatus VdpVideoMixerQueryAttributeSupport(
02981 VdpDevice device,
02982 VdpVideoMixerAttribute attribute,
02983
02984 VdpBool * is_supported
02985 );
02986
02997 typedef VdpStatus VdpVideoMixerQueryParameterValueRange(
02998 VdpDevice device,
02999 VdpVideoMixerParameter parameter,
03000
03001 void * min_value,
03002 void * max_value
03003 );
03004
03015 typedef VdpStatus VdpVideoMixerQueryAttributeValueRange(
03016 VdpDevice device,
03017 VdpVideoMixerAttribute attribute,
03018
03019 void * min_value,
03020 void * max_value
03021 );
03022
03026 typedef uint32_t VdpVideoMixer;
03027
03048 typedef VdpStatus VdpVideoMixerCreate(
03049 VdpDevice device,
03050
03051 uint32_t feature_count,
03052 VdpVideoMixerFeature const * features,
03053
03054 uint32_t parameter_count,
03055 VdpVideoMixerParameter const * parameters,
03056 void const * const * parameter_values,
03057
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
03113 VdpBool * feature_supports
03114 );
03115
03125 typedef VdpStatus VdpVideoMixerGetFeatureEnables(
03126 VdpVideoMixer mixer,
03127 uint32_t feature_count,
03128 VdpVideoMixerFeature const * features,
03129
03130 VdpBool * feature_enables
03131 );
03132
03145 typedef VdpStatus VdpVideoMixerGetParameterValues(
03146 VdpVideoMixer mixer,
03147 uint32_t parameter_count,
03148 VdpVideoMixerParameter const * parameters,
03149
03150 void * const * parameter_values
03151 );
03152
03165 typedef VdpStatus VdpVideoMixerGetAttributeValues(
03166 VdpVideoMixer mixer,
03167 uint32_t attribute_count,
03168 VdpVideoMixerAttribute const * attributes,
03169
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
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
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
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
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
03782 void * * function_pointer
03783 );
03784
03787
03795 #ifdef __cplusplus
03796 }
03797 #endif
03798
03799 #endif
03800