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 
759 #ifndef _VDPAU_H
760 #define _VDPAU_H
761 
762 #include <stdint.h>
763 
764 #ifdef __cplusplus
765 extern "C" {
766 #endif
767 
786 #define VDP_TRUE 1
787 
788 #define VDP_FALSE 0
789 
793 typedef int VdpBool;
794 
813 #define VDP_INVALID_HANDLE 0xffffffffU
814 
819 typedef uint32_t VdpChromaType;
820 
822 #define VDP_CHROMA_TYPE_420 ((VdpChromaType)0)
823 
824 #define VDP_CHROMA_TYPE_422 ((VdpChromaType)1)
825 
826 #define VDP_CHROMA_TYPE_444 ((VdpChromaType)2)
827 
831 typedef uint32_t VdpYCbCrFormat;
832 
846 #define VDP_YCBCR_FORMAT_NV12 ((VdpYCbCrFormat)0)
847 
858 #define VDP_YCBCR_FORMAT_YV12 ((VdpYCbCrFormat)1)
859 
872 #define VDP_YCBCR_FORMAT_UYVY ((VdpYCbCrFormat)2)
873 
886 #define VDP_YCBCR_FORMAT_YUYV ((VdpYCbCrFormat)3)
887 
899 #define VDP_YCBCR_FORMAT_Y8U8V8A8 ((VdpYCbCrFormat)4)
900 
912 #define VDP_YCBCR_FORMAT_V8U8Y8A8 ((VdpYCbCrFormat)5)
913 
917 typedef uint32_t VdpRGBAFormat;
918 
931 #define VDP_RGBA_FORMAT_B8G8R8A8 ((VdpRGBAFormat)0)
932 
944 #define VDP_RGBA_FORMAT_R8G8B8A8 ((VdpRGBAFormat)1)
945 
957 #define VDP_RGBA_FORMAT_R10G10B10A2 ((VdpRGBAFormat)2)
958 
970 #define VDP_RGBA_FORMAT_B10G10R10A2 ((VdpRGBAFormat)3)
971 
981 #define VDP_RGBA_FORMAT_A8 ((VdpRGBAFormat)4)
982 
986 typedef uint32_t VdpIndexedFormat;
987 
999 #define VDP_INDEXED_FORMAT_A4I4 ((VdpIndexedFormat)0)
1000 
1011 #define VDP_INDEXED_FORMAT_I4A4 ((VdpIndexedFormat)1)
1012 
1023 #define VDP_INDEXED_FORMAT_A8I8 ((VdpIndexedFormat)2)
1024 
1035 #define VDP_INDEXED_FORMAT_I8A8 ((VdpIndexedFormat)3)
1036 
1044 typedef struct {
1046  uint32_t x;
1048  uint32_t y;
1049 } VdpPoint;
1050 
1061 typedef struct {
1063  uint32_t x0;
1065  uint32_t y0;
1067  uint32_t x1;
1069  uint32_t y1;
1070 } VdpRect;
1071 
1080 typedef struct {
1081  float red;
1082  float green;
1083  float blue;
1084  float alpha;
1085 } VdpColor;
1086 
1099 typedef enum {
1231 } VdpStatus;
1232 
1242 typedef char const * VdpGetErrorString(
1243  VdpStatus status
1244 );
1245 
1270 #define VDPAU_INTERFACE_VERSION 1
1271 
1283 #define VDPAU_VERSION 1
1284 
1291  /* output parameters follow */
1292  uint32_t * api_version
1293 );
1294 
1313  /* output parameters follow */
1314  char const * * information_string
1315 );
1316 
1336 typedef uint32_t VdpDevice;
1337 
1344  VdpDevice device
1345 );
1346 
1385 typedef float VdpCSCMatrix[3][4];
1386 
1387 #define VDP_PROCAMP_VERSION 0
1388 
1397 typedef struct {
1401  uint32_t struct_version;
1406  float brightness;
1411  float contrast;
1416  float saturation;
1421  float hue;
1422 } VdpProcamp;
1423 
1430 typedef uint32_t VdpColorStandard;
1431 
1433 #define VDP_COLOR_STANDARD_ITUR_BT_601 ((VdpColorStandard)0)
1434 
1435 #define VDP_COLOR_STANDARD_ITUR_BT_709 ((VdpColorStandard)1)
1436 
1437 #define VDP_COLOR_STANDARD_SMPTE_240M ((VdpColorStandard)2)
1438 
1448  VdpProcamp * procamp,
1449  VdpColorStandard standard,
1450  /* output parameters follow */
1451  VdpCSCMatrix * csc_matrix
1452 );
1453 
1499  VdpDevice device,
1500  VdpChromaType surface_chroma_type,
1501  /* output parameters follow */
1502  VdpBool * is_supported,
1503  uint32_t * max_width,
1504  uint32_t * max_height
1505 );
1506 
1519  VdpDevice device,
1520  VdpChromaType surface_chroma_type,
1521  VdpYCbCrFormat bits_ycbcr_format,
1522  /* output parameters follow */
1523  VdpBool * is_supported
1524 );
1525 
1530 typedef uint32_t VdpVideoSurface;
1531 
1578  VdpDevice device,
1579  VdpChromaType chroma_type,
1580  uint32_t width,
1581  uint32_t height,
1582  /* output parameters follow */
1583  VdpVideoSurface * surface
1584 );
1585 
1592  VdpVideoSurface surface
1593 );
1594 
1605  VdpVideoSurface surface,
1606  /* output parameters follow */
1607  VdpChromaType * chroma_type,
1608  uint32_t * width,
1609  uint32_t * height
1610 );
1611 
1631  VdpVideoSurface surface,
1632  VdpYCbCrFormat destination_ycbcr_format,
1633  void * const * destination_data,
1634  uint32_t const * destination_pitches
1635 );
1636 
1656  VdpVideoSurface surface,
1657  VdpYCbCrFormat source_ycbcr_format,
1658  void const * const * source_data,
1659  uint32_t const * source_pitches
1660 );
1661 
1697 typedef uint32_t VdpColorTableFormat;
1698 
1710 #define VDP_COLOR_TABLE_FORMAT_B8G8R8X8 ((VdpColorTableFormat)0)
1711 
1726  VdpDevice device,
1727  VdpRGBAFormat surface_rgba_format,
1728  /* output parameters follow */
1729  VdpBool * is_supported,
1730  uint32_t * max_width,
1731  uint32_t * max_height
1732 );
1733 
1745  VdpDevice device,
1746  VdpRGBAFormat surface_rgba_format,
1747  /* output parameters follow */
1748  VdpBool * is_supported
1749 );
1750 
1766  VdpDevice device,
1767  VdpRGBAFormat surface_rgba_format,
1768  VdpIndexedFormat bits_indexed_format,
1769  VdpColorTableFormat color_table_format,
1770  /* output parameters follow */
1771  VdpBool * is_supported
1772 );
1773 
1787  VdpDevice device,
1788  VdpRGBAFormat surface_rgba_format,
1789  VdpYCbCrFormat bits_ycbcr_format,
1790  /* output parameters follow */
1791  VdpBool * is_supported
1792 );
1793 
1798 typedef uint32_t VdpOutputSurface;
1799 
1813  VdpDevice device,
1814  VdpRGBAFormat rgba_format,
1815  uint32_t width,
1816  uint32_t height,
1817  /* output parameters follow */
1818  VdpOutputSurface * surface
1819 );
1820 
1827  VdpOutputSurface surface
1828 );
1829 
1840  VdpOutputSurface surface,
1841  /* output parameters follow */
1842  VdpRGBAFormat * rgba_format,
1843  uint32_t * width,
1844  uint32_t * height
1845 );
1846 
1867  VdpOutputSurface surface,
1868  VdpRect const * source_rect,
1869  void * const * destination_data,
1870  uint32_t const * destination_pitches
1871 );
1872 
1893  VdpOutputSurface surface,
1894  void const * const * source_data,
1895  uint32_t const * source_pitches,
1896  VdpRect const * destination_rect
1897 );
1898 
1925  VdpOutputSurface surface,
1926  VdpIndexedFormat source_indexed_format,
1927  void const * const * source_data,
1928  uint32_t const * source_pitch,
1929  VdpRect const * destination_rect,
1930  VdpColorTableFormat color_table_format,
1931  void const * color_table
1932 );
1933 
1960  VdpOutputSurface surface,
1961  VdpYCbCrFormat source_ycbcr_format,
1962  void const * const * source_data,
1963  uint32_t const * source_pitches,
1964  VdpRect const * destination_rect,
1965  VdpCSCMatrix const * csc_matrix
1966 );
1967 
2020  VdpDevice device,
2021  VdpRGBAFormat surface_rgba_format,
2022  /* output parameters follow */
2023  VdpBool * is_supported,
2024  uint32_t * max_width,
2025  uint32_t * max_height
2026 );
2027 
2032 typedef uint32_t VdpBitmapSurface;
2033 
2052  VdpDevice device,
2053  VdpRGBAFormat rgba_format,
2054  uint32_t width,
2055  uint32_t height,
2056  VdpBool frequently_accessed,
2057  /* output parameters follow */
2058  VdpBitmapSurface * surface
2059 );
2060 
2067  VdpBitmapSurface surface
2068 );
2069 
2082  VdpBitmapSurface surface,
2083  /* output parameters follow */
2084  VdpRGBAFormat * rgba_format,
2085  uint32_t * width,
2086  uint32_t * height,
2087  VdpBool * frequently_accessed
2088 );
2089 
2110  VdpBitmapSurface surface,
2111  void const * const * source_data,
2112  uint32_t const * source_pitches,
2113  VdpRect const * destination_rect
2114 );
2115 
2133 typedef enum {
2150 
2155 typedef enum {
2162 
2163 #define VDP_OUTPUT_SURFACE_RENDER_BLEND_STATE_VERSION 0
2164 
2184 typedef struct {
2188  uint32_t struct_version;
2197 
2202 #define VDP_OUTPUT_SURFACE_RENDER_ROTATE_0 0
2203 
2209 #define VDP_OUTPUT_SURFACE_RENDER_ROTATE_90 1
2210 
2216 #define VDP_OUTPUT_SURFACE_RENDER_ROTATE_180 2
2217 
2223 #define VDP_OUTPUT_SURFACE_RENDER_ROTATE_270 3
2224 
2232 #define VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX (1 << 2)
2233 
2305  VdpOutputSurface destination_surface,
2306  VdpRect const * destination_rect,
2307  VdpOutputSurface source_surface,
2308  VdpRect const * source_rect,
2309  VdpColor const * colors,
2310  VdpOutputSurfaceRenderBlendState const * blend_state,
2311  uint32_t flags
2312 );
2313 
2385  VdpOutputSurface destination_surface,
2386  VdpRect const * destination_rect,
2387  VdpBitmapSurface source_surface,
2388  VdpRect const * source_rect,
2389  VdpColor const * colors,
2390  VdpOutputSurfaceRenderBlendState const * blend_state,
2391  uint32_t flags
2392 );
2393 
2414 typedef uint32_t VdpDecoderProfile;
2415 
2417 #define VDP_DECODER_PROFILE_MPEG1 ((VdpDecoderProfile)0)
2418 
2419 #define VDP_DECODER_PROFILE_MPEG2_SIMPLE ((VdpDecoderProfile)1)
2420 
2421 #define VDP_DECODER_PROFILE_MPEG2_MAIN ((VdpDecoderProfile)2)
2422 
2424 #define VDP_DECODER_PROFILE_H264_BASELINE ((VdpDecoderProfile)6)
2425 
2426 #define VDP_DECODER_PROFILE_H264_MAIN ((VdpDecoderProfile)7)
2427 
2428 #define VDP_DECODER_PROFILE_H264_HIGH ((VdpDecoderProfile)8)
2429 
2430 #define VDP_DECODER_PROFILE_VC1_SIMPLE ((VdpDecoderProfile)9)
2431 
2432 #define VDP_DECODER_PROFILE_VC1_MAIN ((VdpDecoderProfile)10)
2433 
2434 #define VDP_DECODER_PROFILE_VC1_ADVANCED ((VdpDecoderProfile)11)
2435 
2436 #define VDP_DECODER_PROFILE_MPEG4_PART2_SP ((VdpDecoderProfile)12)
2437 
2438 #define VDP_DECODER_PROFILE_MPEG4_PART2_ASP ((VdpDecoderProfile)13)
2439 
2440 #define VDP_DECODER_PROFILE_DIVX4_QMOBILE ((VdpDecoderProfile)14)
2441 
2442 #define VDP_DECODER_PROFILE_DIVX4_MOBILE ((VdpDecoderProfile)15)
2443 
2444 #define VDP_DECODER_PROFILE_DIVX4_HOME_THEATER ((VdpDecoderProfile)16)
2445 
2446 #define VDP_DECODER_PROFILE_DIVX4_HD_1080P ((VdpDecoderProfile)17)
2447 
2448 #define VDP_DECODER_PROFILE_DIVX5_QMOBILE ((VdpDecoderProfile)18)
2449 
2450 #define VDP_DECODER_PROFILE_DIVX5_MOBILE ((VdpDecoderProfile)19)
2451 
2452 #define VDP_DECODER_PROFILE_DIVX5_HOME_THEATER ((VdpDecoderProfile)20)
2453 
2454 #define VDP_DECODER_PROFILE_DIVX5_HD_1080P ((VdpDecoderProfile)21)
2455 
2456 #define VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE ((VdpDecoderProfile)22)
2457 
2458 #define VDP_DECODER_PROFILE_H264_EXTENDED ((VdpDecoderProfile)23)
2459 
2460 #define VDP_DECODER_PROFILE_H264_PROGRESSIVE_HIGH ((VdpDecoderProfile)24)
2461 
2462 #define VDP_DECODER_PROFILE_H264_CONSTRAINED_HIGH ((VdpDecoderProfile)25)
2463 
2465 #define VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE ((VdpDecoderProfile)26)
2466 
2468 #define VDP_DECODER_LEVEL_MPEG1_NA 0
2469 
2471 #define VDP_DECODER_LEVEL_MPEG2_LL 0
2472 
2473 #define VDP_DECODER_LEVEL_MPEG2_ML 1
2474 
2475 #define VDP_DECODER_LEVEL_MPEG2_HL14 2
2476 
2477 #define VDP_DECODER_LEVEL_MPEG2_HL 3
2478 
2480 #define VDP_DECODER_LEVEL_H264_1 10
2481 
2482 #define VDP_DECODER_LEVEL_H264_1b 9
2483 
2484 #define VDP_DECODER_LEVEL_H264_1_1 11
2485 
2486 #define VDP_DECODER_LEVEL_H264_1_2 12
2487 
2488 #define VDP_DECODER_LEVEL_H264_1_3 13
2489 
2490 #define VDP_DECODER_LEVEL_H264_2 20
2491 
2492 #define VDP_DECODER_LEVEL_H264_2_1 21
2493 
2494 #define VDP_DECODER_LEVEL_H264_2_2 22
2495 
2496 #define VDP_DECODER_LEVEL_H264_3 30
2497 
2498 #define VDP_DECODER_LEVEL_H264_3_1 31
2499 
2500 #define VDP_DECODER_LEVEL_H264_3_2 32
2501 
2502 #define VDP_DECODER_LEVEL_H264_4 40
2503 
2504 #define VDP_DECODER_LEVEL_H264_4_1 41
2505 
2506 #define VDP_DECODER_LEVEL_H264_4_2 42
2507 
2508 #define VDP_DECODER_LEVEL_H264_5 50
2509 
2510 #define VDP_DECODER_LEVEL_H264_5_1 51
2511 
2513 #define VDP_DECODER_LEVEL_VC1_SIMPLE_LOW 0
2514 
2515 #define VDP_DECODER_LEVEL_VC1_SIMPLE_MEDIUM 1
2516 
2518 #define VDP_DECODER_LEVEL_VC1_MAIN_LOW 0
2519 
2520 #define VDP_DECODER_LEVEL_VC1_MAIN_MEDIUM 1
2521 
2522 #define VDP_DECODER_LEVEL_VC1_MAIN_HIGH 2
2523 
2525 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L0 0
2526 
2527 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L1 1
2528 
2529 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L2 2
2530 
2531 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L3 3
2532 
2533 #define VDP_DECODER_LEVEL_VC1_ADVANCED_L4 4
2534 
2536 #define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L0 0
2537 
2538 #define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L1 1
2539 
2540 #define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L2 2
2541 
2542 #define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L3 3
2543 
2545 #define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L0 0
2546 
2547 #define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L1 1
2548 
2549 #define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L2 2
2550 
2551 #define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L3 3
2552 
2553 #define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L4 4
2554 
2555 #define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L5 5
2556 
2558 #define VDP_DECODER_LEVEL_DIVX_NA 0
2559 
2579  VdpDevice device,
2580  VdpDecoderProfile profile,
2581  /* output parameters follow */
2582  VdpBool * is_supported,
2583  uint32_t * max_level,
2584  uint32_t * max_macroblocks,
2585  uint32_t * max_width,
2586  uint32_t * max_height
2587 );
2588 
2592 typedef uint32_t VdpDecoder;
2593 
2611  VdpDevice device,
2612  VdpDecoderProfile profile,
2613  uint32_t width,
2614  uint32_t height,
2615  uint32_t max_references,
2616  /* output parameters follow */
2617  VdpDecoder * decoder
2618 );
2619 
2626  VdpDecoder decoder
2627 );
2628 
2642  VdpDecoder decoder,
2643  /* output parameters follow */
2644  VdpDecoderProfile * profile,
2645  uint32_t * width,
2646  uint32_t * height
2647 );
2648 
2649 #define VDP_BITSTREAM_BUFFER_VERSION 0
2650 
2655 typedef struct {
2659  uint32_t struct_version;
2661  void const * bitstream;
2665 
2676 typedef void VdpPictureInfo;
2677 
2686 typedef struct {
2691  VdpVideoSurface forward_reference;
2696  VdpVideoSurface backward_reference;
2698  uint32_t slice_count;
2699 
2715  uint8_t q_scale_type;
2726  uint8_t f_code[2][2];
2728  uint8_t intra_quantizer_matrix[64];
2730  uint8_t non_intra_quantizer_matrix[64];
2732 
2740 typedef struct {
2745  VdpVideoSurface surface;
2747  VdpBool is_long_term;
2759  int32_t field_order_cnt[2];
2765  uint16_t frame_idx;
2767 
2790 typedef struct {
2792  uint32_t slice_count;
2794  int32_t field_order_cnt[2];
2796  VdpBool is_reference;
2797 
2799  uint16_t frame_num;
2846 
2848  uint8_t scaling_lists_4x4[6][16];
2850  uint8_t scaling_lists_8x8[2][64];
2851 
2853  VdpReferenceFrameH264 referenceFrames[16];
2855 
2866 typedef struct {
2880 
2882 
2890 typedef struct {
2895  VdpVideoSurface forward_reference;
2900  VdpVideoSurface backward_reference;
2901 
2903  uint32_t slice_count;
2905  uint8_t picture_type;
2908 
2910  uint8_t postprocflag;
2912  uint8_t pulldown;
2914  uint8_t interlace;
2916  uint8_t tfcntrflag;
2918  uint8_t finterpflag;
2920  uint8_t psf;
2922  uint8_t dquant;
2924  uint8_t panscan_flag;
2926  uint8_t refdist_flag;
2928  uint8_t quantizer;
2930  uint8_t extended_mv;
2932  uint8_t extended_dmv;
2934  uint8_t overlap;
2936  uint8_t vstransform;
2938  uint8_t loopfilter;
2940  uint8_t fastuvmc;
2944  uint8_t range_mapy;
2948  uint8_t range_mapuv;
2949 
2954  uint8_t multires;
2959  uint8_t syncmarker;
2966  uint8_t rangered;
2971  uint8_t maxbframes;
2972 
2978  uint8_t deblockEnable;
2984  uint8_t pquant;
2986 
2994 typedef struct {
2999  VdpVideoSurface forward_reference;
3004  VdpVideoSurface backward_reference;
3005 
3007  int32_t trd[2];
3009  int32_t trb[2];
3021  uint8_t interlaced;
3023  uint8_t quant_type;
3035  uint8_t intra_quantizer_matrix[64];
3037  uint8_t non_intra_quantizer_matrix[64];
3039 
3047 
3055 
3075  VdpDecoder decoder,
3076  VdpVideoSurface target,
3077  VdpPictureInfo const * picture_info,
3078  uint32_t bitstream_buffer_count,
3079  VdpBitstreamBuffer const * bitstream_buffers
3080 );
3081 
3161 typedef uint32_t VdpVideoMixerFeature;
3162 
3174 #define VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL ((VdpVideoMixerFeature)0)
3175 
3187 #define VDP_VIDEO_MIXER_FEATURE_DEINTERLACE_TEMPORAL_SPATIAL ((VdpVideoMixerFeature)1)
3188 
3196 #define VDP_VIDEO_MIXER_FEATURE_INVERSE_TELECINE ((VdpVideoMixerFeature)2)
3197 
3204 #define VDP_VIDEO_MIXER_FEATURE_NOISE_REDUCTION ((VdpVideoMixerFeature)3)
3205 
3212 #define VDP_VIDEO_MIXER_FEATURE_SHARPNESS ((VdpVideoMixerFeature)4)
3213 
3225 #define VDP_VIDEO_MIXER_FEATURE_LUMA_KEY ((VdpVideoMixerFeature)5)
3226 
3247 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L1 ((VdpVideoMixerFeature)11)
3248 
3254 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L2 ((VdpVideoMixerFeature)12)
3255 
3261 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L3 ((VdpVideoMixerFeature)13)
3262 
3268 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L4 ((VdpVideoMixerFeature)14)
3269 
3275 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L5 ((VdpVideoMixerFeature)15)
3276 
3282 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L6 ((VdpVideoMixerFeature)16)
3283 
3289 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L7 ((VdpVideoMixerFeature)17)
3290 
3296 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L8 ((VdpVideoMixerFeature)18)
3297 
3303 #define VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L9 ((VdpVideoMixerFeature)19)
3304 
3317 typedef uint32_t VdpVideoMixerParameter;
3318 
3331 #define VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_WIDTH ((VdpVideoMixerParameter)0)
3332 
3344 #define VDP_VIDEO_MIXER_PARAMETER_VIDEO_SURFACE_HEIGHT ((VdpVideoMixerParameter)1)
3345 
3358 #define VDP_VIDEO_MIXER_PARAMETER_CHROMA_TYPE ((VdpVideoMixerParameter)2)
3359 
3377 #define VDP_VIDEO_MIXER_PARAMETER_LAYERS ((VdpVideoMixerParameter)3)
3378 
3391 typedef uint32_t VdpVideoMixerAttribute;
3392 
3406 #define VDP_VIDEO_MIXER_ATTRIBUTE_BACKGROUND_COLOR ((VdpVideoMixerAttribute)0)
3407 
3434 #define VDP_VIDEO_MIXER_ATTRIBUTE_CSC_MATRIX ((VdpVideoMixerAttribute)1)
3435 
3447 #define VDP_VIDEO_MIXER_ATTRIBUTE_NOISE_REDUCTION_LEVEL ((VdpVideoMixerAttribute)2)
3448 
3463 #define VDP_VIDEO_MIXER_ATTRIBUTE_SHARPNESS_LEVEL ((VdpVideoMixerAttribute)3)
3464 
3475 #define VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MIN_LUMA ((VdpVideoMixerAttribute)4)
3476 
3487 #define VDP_VIDEO_MIXER_ATTRIBUTE_LUMA_KEY_MAX_LUMA ((VdpVideoMixerAttribute)5)
3488 
3502 #define VDP_VIDEO_MIXER_ATTRIBUTE_SKIP_CHROMA_DEINTERLACE ((VdpVideoMixerAttribute)6)
3503 
3514  VdpDevice device,
3515  VdpVideoMixerFeature feature,
3516  /* output parameters follow */
3517  VdpBool * is_supported
3518 );
3519 
3531  VdpDevice device,
3532  VdpVideoMixerParameter parameter,
3533  /* output parameters follow */
3534  VdpBool * is_supported
3535 );
3536 
3547  VdpDevice device,
3548  VdpVideoMixerAttribute attribute,
3549  /* output parameters follow */
3550  VdpBool * is_supported
3551 );
3552 
3564  VdpDevice device,
3565  VdpVideoMixerParameter parameter,
3566  /* output parameters follow */
3567  void * min_value,
3568  void * max_value
3569 );
3570 
3582  VdpDevice device,
3583  VdpVideoMixerAttribute attribute,
3584  /* output parameters follow */
3585  void * min_value,
3586  void * max_value
3587 );
3588 
3592 typedef uint32_t VdpVideoMixer;
3593 
3615  VdpDevice device,
3616  // The set of features to request
3617  uint32_t feature_count,
3618  VdpVideoMixerFeature const * features,
3619  // The parameters used during creation
3620  uint32_t parameter_count,
3621  VdpVideoMixerParameter const * parameters,
3622  void const * const * parameter_values,
3623  /* output parameters follow */
3624  VdpVideoMixer * mixer
3625 );
3626 
3638  VdpVideoMixer mixer,
3639  uint32_t feature_count,
3640  VdpVideoMixerFeature const * features,
3641  VdpBool const * feature_enables
3642 );
3643 
3657  VdpVideoMixer mixer,
3658  uint32_t attribute_count,
3659  VdpVideoMixerAttribute const * attributes,
3660  void const * const * attribute_values
3661 );
3662 
3675  VdpVideoMixer mixer,
3676  uint32_t feature_count,
3677  VdpVideoMixerFeature const * features,
3678  /* output parameters follow */
3679  VdpBool * feature_supports
3680 );
3681 
3692  VdpVideoMixer mixer,
3693  uint32_t feature_count,
3694  VdpVideoMixerFeature const * features,
3695  /* output parameters follow */
3696  VdpBool * feature_enables
3697 );
3698 
3712  VdpVideoMixer mixer,
3713  uint32_t parameter_count,
3714  VdpVideoMixerParameter const * parameters,
3715  /* output parameters follow */
3716  void * const * parameter_values
3717 );
3718 
3732  VdpVideoMixer mixer,
3733  uint32_t attribute_count,
3734  VdpVideoMixerAttribute const * attributes,
3735  /* output parameters follow */
3736  void * const * attribute_values
3737 );
3738 
3745  VdpVideoMixer mixer
3746 );
3747 
3753 typedef enum {
3768 
3769 #define VDP_LAYER_VERSION 0
3770 
3775 typedef struct {
3779  uint32_t struct_version;
3783  VdpOutputSurface source_surface;
3798 } VdpLayer;
3799 
3867  VdpVideoMixer mixer,
3868  VdpOutputSurface background_surface,
3869  VdpRect const * background_source_rect,
3870  VdpVideoMixerPictureStructure current_picture_structure,
3871  uint32_t video_surface_past_count,
3872  VdpVideoSurface const * video_surface_past,
3873  VdpVideoSurface video_surface_current,
3874  uint32_t video_surface_future_count,
3875  VdpVideoSurface const * video_surface_future,
3876  VdpRect const * video_source_rect,
3877  VdpOutputSurface destination_surface,
3878  VdpRect const * destination_rect,
3879  VdpRect const * destination_video_rect,
3880  uint32_t layer_count,
3881  VdpLayer const * layers
3882 );
3883 
3935 typedef uint64_t VdpTime;
3936 
3946 
3953  VdpPresentationQueueTarget presentation_queue_target
3954 );
3955 
3960 typedef uint32_t VdpPresentationQueue;
3961 
3974  VdpDevice device,
3975  VdpPresentationQueueTarget presentation_queue_target,
3976  /* output parameters follow */
3977  VdpPresentationQueue * presentation_queue
3978 );
3979 
3986  VdpPresentationQueue presentation_queue
3987 );
3988 
3999  VdpPresentationQueue presentation_queue,
4000  VdpColor * const background_color
4001 );
4002 
4009  VdpPresentationQueue presentation_queue,
4010  VdpColor * background_color
4011 );
4012 
4021  VdpPresentationQueue presentation_queue,
4022  /* output parameters follow */
4023  VdpTime * current_time
4024 );
4025 
4067  VdpPresentationQueue presentation_queue,
4068  VdpOutputSurface surface,
4069  uint32_t clip_width,
4070  uint32_t clip_height,
4071  VdpTime earliest_presentation_time
4072 );
4073 
4090  VdpPresentationQueue presentation_queue,
4091  VdpOutputSurface surface,
4092  /* output parameters follow */
4093  VdpTime * first_presentation_time
4094 );
4095 
4100 typedef enum {
4108 
4121  VdpPresentationQueue presentation_queue,
4122  VdpOutputSurface surface,
4123  /* output parameters follow */
4124  VdpPresentationQueueStatus * status,
4125  VdpTime * first_presentation_time
4126 );
4127 
4183  VdpDevice device,
4184  void * context
4185 );
4186 
4198  VdpDevice device,
4199  VdpPreemptionCallback callback,
4200  void * context
4201 );
4202 
4220 typedef uint32_t VdpFuncId;
4221 
4223 #define VDP_FUNC_ID_GET_ERROR_STRING ((VdpFuncId)0)
4224 
4225 #define VDP_FUNC_ID_GET_PROC_ADDRESS ((VdpFuncId)1)
4226 
4227 #define VDP_FUNC_ID_GET_API_VERSION ((VdpFuncId)2)
4228 
4229 #define VDP_FUNC_ID_GET_INFORMATION_STRING ((VdpFuncId)4)
4230 
4231 #define VDP_FUNC_ID_DEVICE_DESTROY ((VdpFuncId)5)
4232 
4233 #define VDP_FUNC_ID_GENERATE_CSC_MATRIX ((VdpFuncId)6)
4234 
4235 #define VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES ((VdpFuncId)7)
4236 
4237 #define VDP_FUNC_ID_VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES ((VdpFuncId)8)
4238 
4239 #define VDP_FUNC_ID_VIDEO_SURFACE_CREATE ((VdpFuncId)9)
4240 
4241 #define VDP_FUNC_ID_VIDEO_SURFACE_DESTROY ((VdpFuncId)10)
4242 
4243 #define VDP_FUNC_ID_VIDEO_SURFACE_GET_PARAMETERS ((VdpFuncId)11)
4244 
4245 #define VDP_FUNC_ID_VIDEO_SURFACE_GET_BITS_Y_CB_CR ((VdpFuncId)12)
4246 
4247 #define VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR ((VdpFuncId)13)
4248 
4249 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_CAPABILITIES ((VdpFuncId)14)
4250 
4251 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES ((VdpFuncId)15)
4252 
4253 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_INDEXED_CAPABILITIES ((VdpFuncId)16)
4254 
4255 #define VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_Y_CB_CR_CAPABILITIES ((VdpFuncId)17)
4256 
4257 #define VDP_FUNC_ID_OUTPUT_SURFACE_CREATE ((VdpFuncId)18)
4258 
4259 #define VDP_FUNC_ID_OUTPUT_SURFACE_DESTROY ((VdpFuncId)19)
4260 
4261 #define VDP_FUNC_ID_OUTPUT_SURFACE_GET_PARAMETERS ((VdpFuncId)20)
4262 
4263 #define VDP_FUNC_ID_OUTPUT_SURFACE_GET_BITS_NATIVE ((VdpFuncId)21)
4264 
4265 #define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_NATIVE ((VdpFuncId)22)
4266 
4267 #define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_INDEXED ((VdpFuncId)23)
4268 
4269 #define VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_Y_CB_CR ((VdpFuncId)24)
4270 
4271 #define VDP_FUNC_ID_BITMAP_SURFACE_QUERY_CAPABILITIES ((VdpFuncId)25)
4272 
4273 #define VDP_FUNC_ID_BITMAP_SURFACE_CREATE ((VdpFuncId)26)
4274 
4275 #define VDP_FUNC_ID_BITMAP_SURFACE_DESTROY ((VdpFuncId)27)
4276 
4277 #define VDP_FUNC_ID_BITMAP_SURFACE_GET_PARAMETERS ((VdpFuncId)28)
4278 
4279 #define VDP_FUNC_ID_BITMAP_SURFACE_PUT_BITS_NATIVE ((VdpFuncId)29)
4280 
4281 #define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_OUTPUT_SURFACE ((VdpFuncId)33)
4282 
4283 #define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE ((VdpFuncId)34)
4284 
4285 #define VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_VIDEO_SURFACE_LUMA ((VdpFuncId)35)
4286 
4287 #define VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES ((VdpFuncId)36)
4288 
4289 #define VDP_FUNC_ID_DECODER_CREATE ((VdpFuncId)37)
4290 
4291 #define VDP_FUNC_ID_DECODER_DESTROY ((VdpFuncId)38)
4292 
4293 #define VDP_FUNC_ID_DECODER_GET_PARAMETERS ((VdpFuncId)39)
4294 
4295 #define VDP_FUNC_ID_DECODER_RENDER ((VdpFuncId)40)
4296 
4297 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_FEATURE_SUPPORT ((VdpFuncId)41)
4298 
4299 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_SUPPORT ((VdpFuncId)42)
4300 
4301 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_SUPPORT ((VdpFuncId)43)
4302 
4303 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_VALUE_RANGE ((VdpFuncId)44)
4304 
4305 #define VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_VALUE_RANGE ((VdpFuncId)45)
4306 
4307 #define VDP_FUNC_ID_VIDEO_MIXER_CREATE ((VdpFuncId)46)
4308 
4309 #define VDP_FUNC_ID_VIDEO_MIXER_SET_FEATURE_ENABLES ((VdpFuncId)47)
4310 
4311 #define VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES ((VdpFuncId)48)
4312 
4313 #define VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_SUPPORT ((VdpFuncId)49)
4314 
4315 #define VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_ENABLES ((VdpFuncId)50)
4316 
4317 #define VDP_FUNC_ID_VIDEO_MIXER_GET_PARAMETER_VALUES ((VdpFuncId)51)
4318 
4319 #define VDP_FUNC_ID_VIDEO_MIXER_GET_ATTRIBUTE_VALUES ((VdpFuncId)52)
4320 
4321 #define VDP_FUNC_ID_VIDEO_MIXER_DESTROY ((VdpFuncId)53)
4322 
4323 #define VDP_FUNC_ID_VIDEO_MIXER_RENDER ((VdpFuncId)54)
4324 
4325 #define VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_DESTROY ((VdpFuncId)55)
4326 
4327 #define VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE ((VdpFuncId)56)
4328 
4329 #define VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY ((VdpFuncId)57)
4330 
4331 #define VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR ((VdpFuncId)58)
4332 
4333 #define VDP_FUNC_ID_PRESENTATION_QUEUE_GET_BACKGROUND_COLOR ((VdpFuncId)59)
4334 
4335 #define VDP_FUNC_ID_PRESENTATION_QUEUE_GET_TIME ((VdpFuncId)62)
4336 
4337 #define VDP_FUNC_ID_PRESENTATION_QUEUE_DISPLAY ((VdpFuncId)63)
4338 
4339 #define VDP_FUNC_ID_PRESENTATION_QUEUE_BLOCK_UNTIL_SURFACE_IDLE ((VdpFuncId)64)
4340 
4341 #define VDP_FUNC_ID_PRESENTATION_QUEUE_QUERY_SURFACE_STATUS ((VdpFuncId)65)
4342 
4343 #define VDP_FUNC_ID_PREEMPTION_CALLBACK_REGISTER ((VdpFuncId)66)
4344 
4345 #define VDP_FUNC_ID_BASE_WINSYS 0x1000
4346 
4357  VdpDevice device,
4358  VdpFuncId function_id,
4359  /* output parameters follow */
4360  void * * function_pointer
4361 );
4362 
4365 
4373 #ifdef __cplusplus
4374 }
4375 #endif
4376 
4377 #endif
4378