VDPAU
vdpau.h
Go to the documentation of this file.
1 /*
2  * This source file is documented using Doxygen markup.
3  * See http://www.stack.nl/~dimitri/doxygen/
4  */
5 
6 /*
7  * This copyright notice applies to this header file:
8  *
9  * Copyright (c) 2008-2010 NVIDIA Corporation
10  *
11  * Permission is hereby granted, free of charge, to any person
12  * obtaining a copy of this software and associated documentation
13  * files (the "Software"), to deal in the Software without
14  * restriction, including without limitation the rights to use,
15  * copy, modify, merge, publish, distribute, sublicense, and/or sell
16  * copies of the Software, and to permit persons to whom the
17  * Software is furnished to do so, subject to the following
18  * conditions:
19  *
20  * The above copyright notice and this permission notice shall be
21  * included in all copies or substantial portions of the Software.
22  *
23  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
25  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
27  * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
28  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
29  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
30  * OTHER DEALINGS IN THE SOFTWARE.
31  */
32 
744 #ifndef _VDPAU_H
745 #define _VDPAU_H
746 
747 #include <stdint.h>
748 
749 #ifdef __cplusplus
750 extern "C" {
751 #endif
752 
771 #define VDP_TRUE 1
772 
773 #define VDP_FALSE 0
774 
778 typedef int VdpBool;
779 
798 #define VDP_INVALID_HANDLE 0xffffffffU
799 
804 typedef uint32_t VdpChromaType;
805 
807 #define VDP_CHROMA_TYPE_420 (VdpChromaType)0
808 
809 #define VDP_CHROMA_TYPE_422 (VdpChromaType)1
810 
811 #define VDP_CHROMA_TYPE_444 (VdpChromaType)2
812 
816 typedef uint32_t VdpYCbCrFormat;
817 
831 #define VDP_YCBCR_FORMAT_NV12 (VdpYCbCrFormat)0
832 
843 #define VDP_YCBCR_FORMAT_YV12 (VdpYCbCrFormat)1
844 
857 #define VDP_YCBCR_FORMAT_UYVY (VdpYCbCrFormat)2
858 
871 #define VDP_YCBCR_FORMAT_YUYV (VdpYCbCrFormat)3
872 
884 #define VDP_YCBCR_FORMAT_Y8U8V8A8 (VdpYCbCrFormat)4
885 
897 #define VDP_YCBCR_FORMAT_V8U8Y8A8 (VdpYCbCrFormat)5
898 
902 typedef uint32_t VdpRGBAFormat;
903 
916 #define VDP_RGBA_FORMAT_B8G8R8A8 (VdpRGBAFormat)0
917 
929 #define VDP_RGBA_FORMAT_R8G8B8A8 (VdpRGBAFormat)1
930 
942 #define VDP_RGBA_FORMAT_R10G10B10A2 (VdpRGBAFormat)2
943 
955 #define VDP_RGBA_FORMAT_B10G10R10A2 (VdpRGBAFormat)3
956 
966 #define VDP_RGBA_FORMAT_A8 (VdpRGBAFormat)4
967 
971 typedef uint32_t VdpIndexedFormat;
972 
984 #define VDP_INDEXED_FORMAT_A4I4 (VdpIndexedFormat)0
985 
996 #define VDP_INDEXED_FORMAT_I4A4 (VdpIndexedFormat)1
997 
1008 #define VDP_INDEXED_FORMAT_A8I8 (VdpIndexedFormat)2
1009 
1020 #define VDP_INDEXED_FORMAT_I8A8 (VdpIndexedFormat)3
1021 
1029 typedef struct {
1031  uint32_t x;
1033  uint32_t y;
1034 } VdpPoint;
1035 
1046 typedef struct {
1048  uint32_t x0;
1050  uint32_t y0;
1052  uint32_t x1;
1054  uint32_t y1;
1055 } VdpRect;
1056 
1065 typedef struct {
1066  float red;
1067  float green;
1068  float blue;
1069  float alpha;
1070 } VdpColor;
1071 
1084 typedef enum {
1216 } VdpStatus;
1217 
1227 typedef char const * VdpGetErrorString(
1228  VdpStatus status
1229 );
1230 
1255 #define VDPAU_INTERFACE_VERSION 1
1256 
1268 #define VDPAU_VERSION 1
1269 
1276  /* output parameters follow */
1277  uint32_t * api_version
1278 );
1279 
1298  /* output parameters follow */
1299  char const * * information_string
1300 );
1301 
1321 typedef uint32_t VdpDevice;
1322 
1329  VdpDevice device
1330 );
1331 
1370 typedef float VdpCSCMatrix[3][4];
1371 
1372 #define VDP_PROCAMP_VERSION 0
1373 
1382 typedef struct {
1386  uint32_t struct_version;
1391  float brightness;
1396  float contrast;
1401  float saturation;
1406  float hue;
1407 } VdpProcamp;
1408 
1415 typedef uint32_t VdpColorStandard;
1416 
1418 #define VDP_COLOR_STANDARD_ITUR_BT_601 (VdpColorStandard)0
1419 
1420 #define VDP_COLOR_STANDARD_ITUR_BT_709 (VdpColorStandard)1
1421 
1422 #define VDP_COLOR_STANDARD_SMPTE_240M (VdpColorStandard)2
1423 
1433  VdpProcamp * procamp,
1434  VdpColorStandard standard,
1435  /* output parameters follow */
1436  VdpCSCMatrix * csc_matrix
1437 );
1438 
1484  VdpDevice device,
1485  VdpChromaType surface_chroma_type,
1486  /* output parameters follow */
1487  VdpBool * is_supported,
1488  uint32_t * max_width,
1489  uint32_t * max_height
1490 );
1491 
1504  VdpDevice device,
1505  VdpChromaType surface_chroma_type,
1506  VdpYCbCrFormat bits_ycbcr_format,
1507  /* output parameters follow */
1508  VdpBool * is_supported
1509 );
1510 
1515 typedef uint32_t VdpVideoSurface;
1516 
1563  VdpDevice device,
1564  VdpChromaType chroma_type,
1565  uint32_t width,
1566  uint32_t height,
1567  /* output parameters follow */
1568  VdpVideoSurface * surface
1569 );
1570 
1577  VdpVideoSurface surface
1578 );
1579 
1590  VdpVideoSurface surface,
1591  /* output parameters follow */
1592  VdpChromaType * chroma_type,
1593  uint32_t * width,
1594  uint32_t * height
1595 );
1596 
1616  VdpVideoSurface surface,
1617  VdpYCbCrFormat destination_ycbcr_format,
1618  void * const * destination_data,
1619  uint32_t const * destination_pitches
1620 );
1621 
1641  VdpVideoSurface surface,
1642  VdpYCbCrFormat source_ycbcr_format,
1643  void const * const * source_data,
1644  uint32_t const * source_pitches
1645 );
1646 
1682 typedef uint32_t VdpColorTableFormat;
1683 
1695 #define VDP_COLOR_TABLE_FORMAT_B8G8R8X8 (VdpColorTableFormat)0
1696 
1711  VdpDevice device,
1712  VdpRGBAFormat surface_rgba_format,
1713  /* output parameters follow */
1714  VdpBool * is_supported,
1715  uint32_t * max_width,
1716  uint32_t * max_height
1717 );
1718 
1730  VdpDevice device,
1731  VdpRGBAFormat surface_rgba_format,
1732  /* output parameters follow */
1733  VdpBool * is_supported
1734 );
1735 
1751  VdpDevice device,
1752  VdpRGBAFormat surface_rgba_format,
1753  VdpIndexedFormat bits_indexed_format,
1754  VdpColorTableFormat color_table_format,
1755  /* output parameters follow */
1756  VdpBool * is_supported
1757 );
1758 
1772  VdpDevice device,
1773  VdpRGBAFormat surface_rgba_format,
1774  VdpYCbCrFormat bits_ycbcr_format,
1775  /* output parameters follow */
1776  VdpBool * is_supported
1777 );
1778 
1783 typedef uint32_t VdpOutputSurface;
1784 
1798  VdpDevice device,
1799  VdpRGBAFormat rgba_format,
1800  uint32_t width,
1801  uint32_t height,
1802  /* output parameters follow */
1803  VdpOutputSurface * surface
1804 );
1805 
1812  VdpOutputSurface surface
1813 );
1814 
1825  VdpOutputSurface surface,
1826  /* output parameters follow */
1827  VdpRGBAFormat * rgba_format,
1828  uint32_t * width,
1829  uint32_t * height
1830 );
1831 
1852  VdpOutputSurface surface,
1853  VdpRect const * source_rect,
1854  void * const * destination_data,
1855  uint32_t const * destination_pitches
1856 );
1857 
1878  VdpOutputSurface surface,
1879  void const * const * source_data,
1880  uint32_t const * source_pitches,
1881  VdpRect const * destination_rect
1882 );
1883 
1910  VdpOutputSurface surface,
1911  VdpIndexedFormat source_indexed_format,
1912  void const * const * source_data,
1913  uint32_t const * source_pitch,
1914  VdpRect const * destination_rect,
1915  VdpColorTableFormat color_table_format,
1916  void const * color_table
1917 );
1918 
1945  VdpOutputSurface surface,
1946  VdpYCbCrFormat source_ycbcr_format,
1947  void const * const * source_data,
1948  uint32_t const * source_pitches,
1949  VdpRect const * destination_rect,
1950  VdpCSCMatrix const * csc_matrix
1951 );
1952 
2005  VdpDevice device,
2006  VdpRGBAFormat surface_rgba_format,
2007  /* output parameters follow */
2008  VdpBool * is_supported,
2009  uint32_t * max_width,
2010  uint32_t * max_height
2011 );
2012 
2017 typedef uint32_t VdpBitmapSurface;
2018 
2037  VdpDevice device,
2038  VdpRGBAFormat rgba_format,
2039  uint32_t width,
2040  uint32_t height,
2041  VdpBool frequently_accessed,
2042  /* output parameters follow */
2043  VdpBitmapSurface * surface
2044 );
2045 
2052  VdpBitmapSurface surface
2053 );
2054 
2067  VdpBitmapSurface surface,
2068  /* output parameters follow */
2069  VdpRGBAFormat * rgba_format,
2070  uint32_t * width,
2071  uint32_t * height,
2072  VdpBool * frequently_accessed
2073 );
2074 
2095  VdpBitmapSurface surface,
2096  void const * const * source_data,
2097  uint32_t const * source_pitches,
2098  VdpRect const * destination_rect
2099 );
2100 
2118 typedef enum {
2135 
2140 typedef enum {
2147 
2148 #define VDP_OUTPUT_SURFACE_RENDER_BLEND_STATE_VERSION 0
2149 
2169 typedef struct {
2173  uint32_t struct_version;
2182 
2187 #define VDP_OUTPUT_SURFACE_RENDER_ROTATE_0 0
2188 
2194 #define VDP_OUTPUT_SURFACE_RENDER_ROTATE_90 1
2195 
2201 #define VDP_OUTPUT_SURFACE_RENDER_ROTATE_180 2
2202 
2208 #define VDP_OUTPUT_SURFACE_RENDER_ROTATE_270 3
2209 
2217 #define VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX (1 << 2)
2218 
2290  VdpOutputSurface destination_surface,
2291  VdpRect const * destination_rect,
2292  VdpOutputSurface source_surface,
2293  VdpRect const * source_rect,
2294  VdpColor const * colors,
2295  VdpOutputSurfaceRenderBlendState const * blend_state,
2296  uint32_t flags
2297 );
2298 
2370  VdpOutputSurface destination_surface,
2371  VdpRect const * destination_rect,
2372  VdpBitmapSurface source_surface,
2373  VdpRect const * source_rect,
2374  VdpColor const * colors,
2375  VdpOutputSurfaceRenderBlendState const * blend_state,
2376  uint32_t flags
2377 );
2378 
2399 typedef uint32_t VdpDecoderProfile;
2400 
2402 #define VDP_DECODER_PROFILE_MPEG1 (VdpDecoderProfile)0
2403 
2404 #define VDP_DECODER_PROFILE_MPEG2_SIMPLE (VdpDecoderProfile)1
2405 
2406 #define VDP_DECODER_PROFILE_MPEG2_MAIN (VdpDecoderProfile)2
2407 
2409 #define VDP_DECODER_PROFILE_H264_BASELINE (VdpDecoderProfile)6
2410 
2411 #define VDP_DECODER_PROFILE_H264_MAIN (VdpDecoderProfile)7
2412 
2413 #define VDP_DECODER_PROFILE_H264_HIGH (VdpDecoderProfile)8
2414 
2415 #define VDP_DECODER_PROFILE_VC1_SIMPLE (VdpDecoderProfile)9
2416 
2417 #define VDP_DECODER_PROFILE_VC1_MAIN (VdpDecoderProfile)10
2418 
2419 #define VDP_DECODER_PROFILE_VC1_ADVANCED (VdpDecoderProfile)11
2420 
2421 #define VDP_DECODER_PROFILE_MPEG4_PART2_SP (VdpDecoderProfile)12
2422 
2423 #define VDP_DECODER_PROFILE_MPEG4_PART2_ASP (VdpDecoderProfile)13
2424 
2425 #define VDP_DECODER_PROFILE_DIVX4_QMOBILE (VdpDecoderProfile)14
2426 
2427 #define VDP_DECODER_PROFILE_DIVX4_MOBILE (VdpDecoderProfile)15
2428 
2429 #define VDP_DECODER_PROFILE_DIVX4_HOME_THEATER (VdpDecoderProfile)16
2430 
2431 #define VDP_DECODER_PROFILE_DIVX4_HD_1080P (VdpDecoderProfile)17
2432 
2433 #define VDP_DECODER_PROFILE_DIVX5_QMOBILE (VdpDecoderProfile)18
2434 
2435 #define VDP_DECODER_PROFILE_DIVX5_MOBILE (VdpDecoderProfile)19
2436 
2437 #define VDP_DECODER_PROFILE_DIVX5_HOME_THEATER (VdpDecoderProfile)20
2438 
2439 #define VDP_DECODER_PROFILE_DIVX5_HD_1080P (VdpDecoderProfile)21
2440 
2442 #define VDP_DECODER_LEVEL_MPEG1_NA 0
2443 
2445 #define VDP_DECODER_LEVEL_MPEG2_LL 0
2446 
2447 #define VDP_DECODER_LEVEL_MPEG2_ML 1
2448 
2449 #define VDP_DECODER_LEVEL_MPEG2_HL14 2
2450 
2451 #define VDP_DECODER_LEVEL_MPEG2_HL 3
2452 
2454 #define VDP_DECODER_LEVEL_H264_1 10
2455 
2456 #define VDP_DECODER_LEVEL_H264_1b 9
2457 
2458 #define VDP_DECODER_LEVEL_H264_1_1 11
2459 
2460 #define VDP_DECODER_LEVEL_H264_1_2 12
2461 
2462 #define VDP_DECODER_LEVEL_H264_1_3 13
2463 
2464 #define VDP_DECODER_LEVEL_H264_2 20
2465 
2466 #define VDP_DECODER_LEVEL_H264_2_1 21
2467 
2468 #define VDP_DECODER_LEVEL_H264_2_2 22
2469 
2470 #define VDP_DECODER_LEVEL_H264_3 30
2471 
2472 #define VDP_DECODER_LEVEL_H264_3_1 31
2473 
2474 #define VDP_DECODER_LEVEL_H264_3_2 32
2475 
2476 #define VDP_DECODER_LEVEL_H264_4 40
2477 
2478 #define VDP_DECODER_LEVEL_H264_4_1 41
2479 
2480 #define VDP_DECODER_LEVEL_H264_4_2 42
2481 
2482 #define VDP_DECODER_LEVEL_H264_5 50
2483 
2484 #define VDP_DECODER_LEVEL_H264_5_1 51
2485 
2487 #define VDP_DECODER_LEVEL_VC1_SIMPLE_LOW 0
2488 
2489 #define VDP_DECODER_LEVEL_VC1_SIMPLE_MEDIUM 1
2490 
2492 #define VDP_DECODER_LEVEL_VC1_MAIN_LOW 0
2493 
2494 #define VDP_DECODER_LEVEL_VC1_MAIN_MEDIUM 1
2495 
2496 #define VDP_DECODER_LEVEL_VC1_MAIN_HIGH 2
2497 
2499 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L0 0
2500 
2501 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L1 1
2502 
2503 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L2 2
2504 
2505 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L3 3
2506 
2507 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L4 4
2508 
2510 #define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L0 0
2511 
2512 #define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L1 1
2513 
2514 #define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L2 2
2515 
2516 #define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L3 3
2517 
2519 #define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L0 0
2520 
2521 #define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L1 1
2522 
2523 #define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L2 2
2524 
2525 #define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L3 3
2526 
2527 #define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L4 4
2528 
2529 #define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L5 5
2530 
2532 #define VDP_DECODER_LEVEL_DIVX_NA 0
2533 
2553  VdpDevice device,
2554  VdpDecoderProfile profile,
2555  /* output parameters follow */
2556  VdpBool * is_supported,
2557  uint32_t * max_level,
2558  uint32_t * max_macroblocks,
2559  uint32_t * max_width,
2560  uint32_t * max_height
2561 );
2562 
2566 typedef uint32_t VdpDecoder;
2567 
2585  VdpDevice device,
2586  VdpDecoderProfile profile,
2587  uint32_t width,
2588  uint32_t height,
2589  uint32_t max_references,
2590  /* output parameters follow */
2591  VdpDecoder * decoder
2592 );
2593 
2600  VdpDecoder decoder
2601 );
2602 
2616  VdpDecoder decoder,
2617  /* output parameters follow */
2618  VdpDecoderProfile * profile,
2619  uint32_t * width,
2620  uint32_t * height
2621 );
2622 
2623 #define VDP_BITSTREAM_BUFFER_VERSION 0
2624 
2629 typedef struct {
2633  uint32_t struct_version;
2635  void const * bitstream;
2639 
2650 typedef void * VdpPictureInfo;
2651 
2660 typedef struct {
2665  VdpVideoSurface forward_reference;
2670  VdpVideoSurface backward_reference;
2672  uint32_t slice_count;
2673 
2689  uint8_t q_scale_type;
2700  uint8_t f_code[2][2];
2702  uint8_t intra_quantizer_matrix[64];
2704  uint8_t non_intra_quantizer_matrix[64];
2706 
2714 typedef struct {
2719  VdpVideoSurface surface;
2721  VdpBool is_long_term;
2733  int32_t field_order_cnt[2];
2739  uint16_t frame_idx;
2741 
2760 typedef struct {
2762  uint32_t slice_count;
2764  int32_t field_order_cnt[2];
2766  VdpBool is_reference;
2767 
2769  uint16_t frame_num;
2816 
2818  uint8_t scaling_lists_4x4[6][16];
2820  uint8_t scaling_lists_8x8[2][64];
2821 
2823  VdpReferenceFrameH264 referenceFrames[16];
2825 
2833 typedef struct {
2838  VdpVideoSurface forward_reference;
2843  VdpVideoSurface backward_reference;
2844 
2846  uint32_t slice_count;
2848  uint8_t picture_type;
2851 
2853  uint8_t postprocflag;
2855  uint8_t pulldown;
2857  uint8_t interlace;
2859  uint8_t tfcntrflag;
2861  uint8_t finterpflag;
2863  uint8_t psf;
2865  uint8_t dquant;
2867  uint8_t panscan_flag;
2869  uint8_t refdist_flag;
2871  uint8_t quantizer;
2873  uint8_t extended_mv;
2875  uint8_t extended_dmv;
2877  uint8_t overlap;
2879  uint8_t vstransform;
2881  uint8_t loopfilter;
2883  uint8_t fastuvmc;
2887  uint8_t range_mapy;
2891  uint8_t range_mapuv;
2892 
2897  uint8_t multires;
2902  uint8_t syncmarker;
2909  uint8_t rangered;
2914  uint8_t maxbframes;
2915 
2921  uint8_t deblockEnable;
2927  uint8_t pquant;
2929 
2937 typedef struct {
2942  VdpVideoSurface forward_reference;
2947  VdpVideoSurface backward_reference;
2948 
2950  int32_t trd[2];
2952  int32_t trb[2];
2964  uint8_t interlaced;
2966  uint8_t quant_type;
2978  uint8_t intra_quantizer_matrix[64];
2980  uint8_t non_intra_quantizer_matrix[64];
2982 
2990 
2998 
3018  VdpDecoder decoder,
3019  VdpVideoSurface target,
3020  VdpPictureInfo const * picture_info,
3021  uint32_t bitstream_buffer_count,
3022  VdpBitstreamBuffer const * bitstream_buffers
3023 );
3024 
3104 typedef uint32_t VdpVideoMixerFeature;
3105 
3117 #define VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL (VdpVideoMixerFeature)0
3118 
3130 #define VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL (VdpVideoMixerFeature)1
3131 
3139 #define VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE (VdpVideoMixerFeature)2
3140 
3147 #define VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION (VdpVideoMixerFeature)3
3148 
3155 #define VDP_VIDEO_MIXER_FEATURE_SHARPNESS (VdpVideoMixerFeature)4
3156 
3168 #define VDP_VIDEO_MIXER_FEATURE_LUMA_KEY (VdpVideoMixerFeature)5
3169 
3190 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 (VdpVideoMixerFeature)11
3191 
3197 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L2 (VdpVideoMixerFeature)12
3198 
3204 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L3 (VdpVideoMixerFeature)13
3205 
3211 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L4 (VdpVideoMixerFeature)14
3212 
3218 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L5 (VdpVideoMixerFeature)15
3219 
3225 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L6 (VdpVideoMixerFeature)16
3226 
3232 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L7 (VdpVideoMixerFeature)17
3233 
3239 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L8 (VdpVideoMixerFeature)18
3240 
3246 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L9 (VdpVideoMixerFeature)19
3247 
3260 typedef uint32_t VdpVideoMixerParameter;
3261 
3274 #define VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_WIDTH (VdpVideoMixerParameter)0
3275 
3287 #define VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_HEIGHT (VdpVideoMixerParameter)1
3288 
3301 #define VDP_VIDEO_MIXER_PARAMETER_CHROMA_TYPE (VdpVideoMixerParameter)2
3302 
3320 #define VDP_VIDEO_MIXER_PARAMETER_LAYERS (VdpVideoMixerParameter)3
3321 
3334 typedef uint32_t VdpVideoMixerAttribute;
3335 
3349 #define VDP_VIDEO_MIXER_ATTRIBUTE_BACKGROUND_COLOR (VdpVideoMixerAttribute)0
3350 
3377 #define VDP_VIDEO_MIXER_ATTRIBUTE_CSC_MATRIX (VdpVideoMixerAttribute)1
3378 
3390 #define VDP_VIDEO_MIXER_ATTRIBUTE_NOISE_REDUCTION_LEVEL (VdpVideoMixerAttribute)2
3391 
3406 #define VDP_VIDEO_MIXER_ATTRIBUTE_SHARPNESS_LEVEL (VdpVideoMixerAttribute)3
3407 
3418 #define VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MIN_LUMA (VdpVideoMixerAttribute)4
3419 
3430 #define VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MAX_LUMA (VdpVideoMixerAttribute)5
3431 
3445 #define VDP_VIDEO_MIXER_ATTRIBUTE_SKIP_CHROMA_DEINTERLACE (VdpVideoMixerAttribute)6
3446 
3457  VdpDevice device,
3458  VdpVideoMixerFeature feature,
3459  /* output parameters follow */
3460  VdpBool * is_supported
3461 );
3462 
3474  VdpDevice device,
3475  VdpVideoMixerParameter parameter,
3476  /* output parameters follow */
3477  VdpBool * is_supported
3478 );
3479 
3490  VdpDevice device,
3491  VdpVideoMixerAttribute attribute,
3492  /* output parameters follow */
3493  VdpBool * is_supported
3494 );
3495 
3507  VdpDevice device,
3508  VdpVideoMixerParameter parameter,
3509  /* output parameters follow */
3510  void * min_value,
3511  void * max_value
3512 );
3513 
3525  VdpDevice device,
3526  VdpVideoMixerAttribute attribute,
3527  /* output parameters follow */
3528  void * min_value,
3529  void * max_value
3530 );
3531 
3535 typedef uint32_t VdpVideoMixer;
3536 
3558  VdpDevice device,
3559  // The set of features to request
3560  uint32_t feature_count,
3561  VdpVideoMixerFeature const * features,
3562  // The parameters used during creation
3563  uint32_t parameter_count,
3564  VdpVideoMixerParameter const * parameters,
3565  void const * const * parameter_values,
3566  /* output parameters follow */
3567  VdpVideoMixer * mixer
3568 );
3569 
3581  VdpVideoMixer mixer,
3582  uint32_t feature_count,
3583  VdpVideoMixerFeature const * features,
3584  VdpBool const * feature_enables
3585 );
3586 
3600  VdpVideoMixer mixer,
3601  uint32_t attribute_count,
3602  VdpVideoMixerAttribute const * attributes,
3603  void const * const * attribute_values
3604 );
3605 
3618  VdpVideoMixer mixer,
3619  uint32_t feature_count,
3620  VdpVideoMixerFeature const * features,
3621  /* output parameters follow */
3622  VdpBool * feature_supports
3623 );
3624 
3635  VdpVideoMixer mixer,
3636  uint32_t feature_count,
3637  VdpVideoMixerFeature const * features,
3638  /* output parameters follow */
3639  VdpBool * feature_enables
3640 );
3641 
3655  VdpVideoMixer mixer,
3656  uint32_t parameter_count,
3657  VdpVideoMixerParameter const * parameters,
3658  /* output parameters follow */
3659  void * const * parameter_values
3660 );
3661 
3675  VdpVideoMixer mixer,
3676  uint32_t attribute_count,
3677  VdpVideoMixerAttribute const * attributes,
3678  /* output parameters follow */
3679  void * const * attribute_values
3680 );
3681 
3688  VdpVideoMixer mixer
3689 );
3690 
3696 typedef enum {
3711 
3712 #define VDP_LAYER_VERSION 0
3713 
3718 typedef struct {
3722  uint32_t struct_version;
3726  VdpOutputSurface source_surface;
3741 } VdpLayer;
3742 
3810  VdpVideoMixer mixer,
3811  VdpOutputSurface background_surface,
3812  VdpRect const * background_source_rect,
3813  VdpVideoMixerPictureStructure current_picture_structure,
3814  uint32_t video_surface_past_count,
3815  VdpVideoSurface const * video_surface_past,
3816  VdpVideoSurface video_surface_current,
3817  uint32_t video_surface_future_count,
3818  VdpVideoSurface const * video_surface_future,
3819  VdpRect const * video_source_rect,
3820  VdpOutputSurface destination_surface,
3821  VdpRect const * destination_rect,
3822  VdpRect const * destination_video_rect,
3823  uint32_t layer_count,
3824  VdpLayer const * layers
3825 );
3826 
3878 typedef uint64_t VdpTime;
3879 
3889 
3896  VdpPresentationQueueTarget presentation_queue_target
3897 );
3898 
3903 typedef uint32_t VdpPresentationQueue;
3904 
3917  VdpDevice device,
3918  VdpPresentationQueueTarget presentation_queue_target,
3919  /* output parameters follow */
3920  VdpPresentationQueue * presentation_queue
3921 );
3922 
3929  VdpPresentationQueue presentation_queue
3930 );
3931 
3942  VdpPresentationQueue presentation_queue,
3943  VdpColor * const background_color
3944 );
3945 
3952  VdpPresentationQueue presentation_queue,
3953  VdpColor * background_color
3954 );
3955 
3964  VdpPresentationQueue presentation_queue,
3965  /* output parameters follow */
3966  VdpTime * current_time
3967 );
3968 
4010  VdpPresentationQueue presentation_queue,
4011  VdpOutputSurface surface,
4012  uint32_t clip_width,
4013  uint32_t clip_height,
4014  VdpTime earliest_presentation_time
4015 );
4016 
4033  VdpPresentationQueue presentation_queue,
4034  VdpOutputSurface surface,
4035  /* output parameters follow */
4036  VdpTime * first_presentation_time
4037 );
4038 
4043 typedef enum {
4051 
4064  VdpPresentationQueue presentation_queue,
4065  VdpOutputSurface surface,
4066  /* output parameters follow */
4067  VdpPresentationQueueStatus * status,
4068  VdpTime * first_presentation_time
4069 );
4070 
4126  VdpDevice device,
4127  void * context
4128 );
4129 
4141  VdpDevice device,
4142  VdpPreemptionCallback callback,
4143  void * context
4144 );
4145 
4163 typedef uint32_t VdpFuncId;
4164 
4166 #define VDP_FUNC_ID_GET_ERROR_STRING (VdpFuncId)0
4167 
4168 #define VDP_FUNC_ID_GET_PROC_ADDRESS (VdpFuncId)1
4169 
4170 #define VDP_FUNC_ID_GET_API_VERSION (VdpFuncId)2
4171 
4172 #define VDP_FUNC_ID_GET_INFORMATION_STRING (VdpFuncId)4
4173 
4174 #define VDP_FUNC_ID_DEVICE_DESTROY (VdpFuncId)5
4175 
4176 #define VDP_FUNC_ID_GENERATE_CSC_MATRIX (VdpFuncId)6
4177 
4178 #define VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES (VdpFuncId)7
4179 
4180 #define VDP_FUNC_ID_VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES (VdpFuncId)8
4181 
4182 #define VDP_FUNC_ID_VIDEO_SURFACE_CREATE (VdpFuncId)9
4183 
4184 #define VDP_FUNC_ID_VIDEO_SURFACE_DESTROY (VdpFuncId)10
4185 
4186 #define VDP_FUNC_ID_VIDEO_SURFACE_GET_PARAMETERS (VdpFuncId)11
4187 
4188 #define VDP_FUNC_ID_VIDEO_SURFACE_GET_BITS_Y_CB_CR (VdpFuncId)12
4189 
4190 #define VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR (VdpFuncId)13
4191 
4192 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_CAPABILITIES (VdpFuncId)14
4193 
4194 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES (VdpFuncId)15
4195 
4196 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_INDEXED_CAPABILITIES (VdpFuncId)16
4197 
4198 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_Y_CB_CR_CAPABILITIES (VdpFuncId)17
4199 
4200 #define VDP_FUNC_ID_OUTPUT_SURFACE_CREATE (VdpFuncId)18
4201 
4202 #define VDP_FUNC_ID_OUTPUT_SURFACE_DESTROY (VdpFuncId)19
4203 
4204 #define VDP_FUNC_ID_OUTPUT_SURFACE_GET_PARAMETERS (VdpFuncId)20
4205 
4206 #define VDP_FUNC_ID_OUTPUT_SURFACE_GET_BITS_NATIVE (VdpFuncId)21
4207 
4208 #define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_NATIVE (VdpFuncId)22
4209 
4210 #define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_INDEXED (VdpFuncId)23
4211 
4212 #define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_Y_CB_CR (VdpFuncId)24
4213 
4214 #define VDP_FUNC_ID_BITMAP_SURFACE_QUERY_CAPABILITIES (VdpFuncId)25
4215 
4216 #define VDP_FUNC_ID_BITMAP_SURFACE_CREATE (VdpFuncId)26
4217 
4218 #define VDP_FUNC_ID_BITMAP_SURFACE_DESTROY (VdpFuncId)27
4219 
4220 #define VDP_FUNC_ID_BITMAP_SURFACE_GET_PARAMETERS (VdpFuncId)28
4221 
4222 #define VDP_FUNC_ID_BITMAP_SURFACE_PUT_BITS_NATIVE (VdpFuncId)29
4223 
4224 #define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_OUTPUT_SURFACE (VdpFuncId)33
4225 
4226 #define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE (VdpFuncId)34
4227 
4228 #define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_VIDEO_SURFACE_LUMA (VdpFuncId)35
4229 
4230 #define VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES (VdpFuncId)36
4231 
4232 #define VDP_FUNC_ID_DECODER_CREATE (VdpFuncId)37
4233 
4234 #define VDP_FUNC_ID_DECODER_DESTROY (VdpFuncId)38
4235 
4236 #define VDP_FUNC_ID_DECODER_GET_PARAMETERS (VdpFuncId)39
4237 
4238 #define VDP_FUNC_ID_DECODER_RENDER (VdpFuncId)40
4239 
4240 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_FEATURE_SUPPORT (VdpFuncId)41
4241 
4242 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_SUPPORT (VdpFuncId)42
4243 
4244 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_SUPPORT (VdpFuncId)43
4245 
4246 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_VALUE_RANGE (VdpFuncId)44
4247 
4248 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_VALUE_RANGE (VdpFuncId)45
4249 
4250 #define VDP_FUNC_ID_VIDEO_MIXER_CREATE (VdpFuncId)46
4251 
4252 #define VDP_FUNC_ID_VIDEO_MIXER_SET_FEATURE_ENABLES (VdpFuncId)47
4253 
4254 #define VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES (VdpFuncId)48
4255 
4256 #define VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_SUPPORT (VdpFuncId)49
4257 
4258 #define VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_ENABLES (VdpFuncId)50
4259 
4260 #define VDP_FUNC_ID_VIDEO_MIXER_GET_PARAMETER_VALUES (VdpFuncId)51
4261 
4262 #define VDP_FUNC_ID_VIDEO_MIXER_GET_ATTRIBUTE_VALUES (VdpFuncId)52
4263 
4264 #define VDP_FUNC_ID_VIDEO_MIXER_DESTROY (VdpFuncId)53
4265 
4266 #define VDP_FUNC_ID_VIDEO_MIXER_RENDER (VdpFuncId)54
4267 
4268 #define VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_DESTROY (VdpFuncId)55
4269 
4270 #define VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE (VdpFuncId)56
4271 
4272 #define VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY (VdpFuncId)57
4273 
4274 #define VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR (VdpFuncId)58
4275 
4276 #define VDP_FUNC_ID_PRESENTATION_QUEUE_GET_BACKGROUND_COLOR (VdpFuncId)59
4277 
4278 #define VDP_FUNC_ID_PRESENTATION_QUEUE_GET_TIME (VdpFuncId)62
4279 
4280 #define VDP_FUNC_ID_PRESENTATION_QUEUE_DISPLAY (VdpFuncId)63
4281 
4282 #define VDP_FUNC_ID_PRESENTATION_QUEUE_BLOCK_UNTIL_SURFACE_IDLE (VdpFuncId)64
4283 
4284 #define VDP_FUNC_ID_PRESENTATION_QUEUE_QUERY_SURFACE_STATUS (VdpFuncId)65
4285 
4286 #define VDP_FUNC_ID_PREEMPTION_CALLBACK_REGISTER (VdpFuncId)66
4287 
4288 #define VDP_FUNC_ID_BASE_WINSYS 0x1000
4289 
4300  VdpDevice device,
4301  VdpFuncId function_id,
4302  /* output parameters follow */
4303  void * * function_pointer
4304 );
4305 
4308 
4316 #ifdef __cplusplus
4317 }
4318 #endif
4319 
4320 #endif
4321