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-2015 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
779#ifndef _VDPAU_H
780#define _VDPAU_H
781
782#include <stdint.h>
783
784#ifdef __cplusplus
785extern "C" {
786#endif
787
806#define VDP_TRUE 1
808#define VDP_FALSE 0
813typedef int VdpBool;
814
833#define VDP_INVALID_HANDLE 0xffffffffU
834
839typedef uint32_t VdpChromaType;
840
849#define VDP_CHROMA_TYPE_420 ((VdpChromaType)0)
858#define VDP_CHROMA_TYPE_422 ((VdpChromaType)1)
867#define VDP_CHROMA_TYPE_444 ((VdpChromaType)2)
868
873#define VDP_CHROMA_TYPE_420_FIELD ((VdpChromaType)3)
878#define VDP_CHROMA_TYPE_422_FIELD ((VdpChromaType)4)
883#define VDP_CHROMA_TYPE_444_FIELD ((VdpChromaType)5)
884
889#define VDP_CHROMA_TYPE_420_FRAME ((VdpChromaType)6)
894#define VDP_CHROMA_TYPE_422_FRAME ((VdpChromaType)7)
899#define VDP_CHROMA_TYPE_444_FRAME ((VdpChromaType)8)
908#define VDP_CHROMA_TYPE_420_16 ((VdpChromaType)9)
917#define VDP_CHROMA_TYPE_422_16 ((VdpChromaType)10)
926#define VDP_CHROMA_TYPE_444_16 ((VdpChromaType)11)
927
932#define VDP_CHROMA_TYPE_420_FIELD_16 ((VdpChromaType)12)
937#define VDP_CHROMA_TYPE_422_FIELD_16 ((VdpChromaType)13)
942#define VDP_CHROMA_TYPE_444_FIELD_16 ((VdpChromaType)14)
943
948#define VDP_CHROMA_TYPE_420_FRAME_16 ((VdpChromaType)15)
953#define VDP_CHROMA_TYPE_422_FRAME_16 ((VdpChromaType)16)
958#define VDP_CHROMA_TYPE_444_FRAME_16 ((VdpChromaType)17)
959
963typedef uint32_t VdpYCbCrFormat;
964
978#define VDP_YCBCR_FORMAT_NV12 ((VdpYCbCrFormat)0)
990#define VDP_YCBCR_FORMAT_YV12 ((VdpYCbCrFormat)1)
1004#define VDP_YCBCR_FORMAT_UYVY ((VdpYCbCrFormat)2)
1018#define VDP_YCBCR_FORMAT_YUYV ((VdpYCbCrFormat)3)
1031#define VDP_YCBCR_FORMAT_Y8U8V8A8 ((VdpYCbCrFormat)4)
1044#define VDP_YCBCR_FORMAT_V8U8Y8A8 ((VdpYCbCrFormat)5)
1058#define VDP_YCBCR_FORMAT_Y_UV_444 ((VdpYCbCrFormat)6)
1070#define VDP_YCBCR_FORMAT_Y_U_V_444 ((VdpYCbCrFormat)7)
1088#define VDP_YCBCR_FORMAT_P010 ((VdpYCbCrFormat)8)
1102#define VDP_YCBCR_FORMAT_P016 ((VdpYCbCrFormat)9)
1114 #define VDP_YCBCR_FORMAT_Y_U_V_444_16 ((VdpYCbCrFormat)11)
1115
1119typedef uint32_t VdpRGBAFormat;
1120
1133#define VDP_RGBA_FORMAT_B8G8R8A8 ((VdpRGBAFormat)0)
1146#define VDP_RGBA_FORMAT_R8G8B8A8 ((VdpRGBAFormat)1)
1159#define VDP_RGBA_FORMAT_R10G10B10A2 ((VdpRGBAFormat)2)
1172#define VDP_RGBA_FORMAT_B10G10R10A2 ((VdpRGBAFormat)3)
1183#define VDP_RGBA_FORMAT_A8 ((VdpRGBAFormat)4)
1184
1188typedef uint32_t VdpIndexedFormat;
1189
1201#define VDP_INDEXED_FORMAT_A4I4 ((VdpIndexedFormat)0)
1213#define VDP_INDEXED_FORMAT_I4A4 ((VdpIndexedFormat)1)
1225#define VDP_INDEXED_FORMAT_A8I8 ((VdpIndexedFormat)2)
1237#define VDP_INDEXED_FORMAT_I8A8 ((VdpIndexedFormat)3)
1238
1246typedef struct {
1248 uint32_t x;
1250 uint32_t y;
1251} VdpPoint;
1252
1263typedef struct {
1265 uint32_t x0;
1267 uint32_t y0;
1269 uint32_t x1;
1271 uint32_t y1;
1272} VdpRect;
1273
1282typedef struct {
1283 float red;
1284 float green;
1285 float blue;
1286 float alpha;
1287} VdpColor;
1288
1434
1444typedef char const * VdpGetErrorString(
1445 VdpStatus status
1446);
1447
1472#define VDPAU_INTERFACE_VERSION 1
1473
1485#define VDPAU_VERSION 1
1486
1493 /* output parameters follow */
1494 uint32_t * api_version
1495);
1496
1515 /* output parameters follow */
1516 char const * * information_string
1517);
1518
1538typedef uint32_t VdpDevice;
1539
1546 VdpDevice device
1547);
1548
1587typedef float VdpCSCMatrix[3][4];
1588
1589#define VDP_PROCAMP_VERSION 0
1590
1599typedef struct {
1623 float hue;
1624} VdpProcamp;
1625
1632typedef uint32_t VdpColorStandard;
1633
1635#define VDP_COLOR_STANDARD_ITUR_BT_601 ((VdpColorStandard)0)
1637#define VDP_COLOR_STANDARD_ITUR_BT_709 ((VdpColorStandard)1)
1639#define VDP_COLOR_STANDARD_SMPTE_240M ((VdpColorStandard)2)
1640
1650 VdpProcamp * procamp,
1651 VdpColorStandard standard,
1652 /* output parameters follow */
1653 VdpCSCMatrix * csc_matrix
1654);
1655
1701 VdpDevice device,
1702 VdpChromaType surface_chroma_type,
1703 /* output parameters follow */
1704 VdpBool * is_supported,
1705 uint32_t * max_width,
1706 uint32_t * max_height
1707);
1708
1721 VdpDevice device,
1722 VdpChromaType surface_chroma_type,
1723 VdpYCbCrFormat bits_ycbcr_format,
1724 /* output parameters follow */
1725 VdpBool * is_supported
1726);
1727
1732typedef uint32_t VdpVideoSurface;
1733
1780 VdpDevice device,
1781 VdpChromaType chroma_type,
1782 uint32_t width,
1783 uint32_t height,
1784 /* output parameters follow */
1785 VdpVideoSurface * surface
1786);
1787
1794 VdpVideoSurface surface
1795);
1796
1807 VdpVideoSurface surface,
1808 /* output parameters follow */
1809 VdpChromaType * chroma_type,
1810 uint32_t * width,
1811 uint32_t * height
1812);
1813
1833 VdpVideoSurface surface,
1834 VdpYCbCrFormat destination_ycbcr_format,
1835 void * const * destination_data,
1836 uint32_t const * destination_pitches
1837);
1838
1858 VdpVideoSurface surface,
1859 VdpYCbCrFormat source_ycbcr_format,
1860 void const * const * source_data,
1861 uint32_t const * source_pitches
1862);
1863
1898typedef uint32_t VdpColorTableFormat;
1899
1911#define VDP_COLOR_TABLE_FORMAT_B8G8R8X8 ((VdpColorTableFormat)0)
1912
1927 VdpDevice device,
1928 VdpRGBAFormat surface_rgba_format,
1929 /* output parameters follow */
1930 VdpBool * is_supported,
1931 uint32_t * max_width,
1932 uint32_t * max_height
1933);
1934
1946 VdpDevice device,
1947 VdpRGBAFormat surface_rgba_format,
1948 /* output parameters follow */
1949 VdpBool * is_supported
1950);
1951
1967 VdpDevice device,
1968 VdpRGBAFormat surface_rgba_format,
1969 VdpIndexedFormat bits_indexed_format,
1970 VdpColorTableFormat color_table_format,
1971 /* output parameters follow */
1972 VdpBool * is_supported
1973);
1974
1988 VdpDevice device,
1989 VdpRGBAFormat surface_rgba_format,
1990 VdpYCbCrFormat bits_ycbcr_format,
1991 /* output parameters follow */
1992 VdpBool * is_supported
1993);
1994
1999typedef uint32_t VdpOutputSurface;
2000
2014 VdpDevice device,
2015 VdpRGBAFormat rgba_format,
2016 uint32_t width,
2017 uint32_t height,
2018 /* output parameters follow */
2019 VdpOutputSurface * surface
2020);
2021
2028 VdpOutputSurface surface
2029);
2030
2041 VdpOutputSurface surface,
2042 /* output parameters follow */
2043 VdpRGBAFormat * rgba_format,
2044 uint32_t * width,
2045 uint32_t * height
2046);
2047
2068 VdpOutputSurface surface,
2069 VdpRect const * source_rect,
2070 void * const * destination_data,
2071 uint32_t const * destination_pitches
2072);
2073
2094 VdpOutputSurface surface,
2095 void const * const * source_data,
2096 uint32_t const * source_pitches,
2097 VdpRect const * destination_rect
2098);
2099
2126 VdpOutputSurface surface,
2127 VdpIndexedFormat source_indexed_format,
2128 void const * const * source_data,
2129 uint32_t const * source_pitch,
2130 VdpRect const * destination_rect,
2131 VdpColorTableFormat color_table_format,
2132 void const * color_table
2133);
2134
2161 VdpOutputSurface surface,
2162 VdpYCbCrFormat source_ycbcr_format,
2163 void const * const * source_data,
2164 uint32_t const * source_pitches,
2165 VdpRect const * destination_rect,
2166 VdpCSCMatrix const * csc_matrix
2167);
2168
2220 VdpDevice device,
2221 VdpRGBAFormat surface_rgba_format,
2222 /* output parameters follow */
2223 VdpBool * is_supported,
2224 uint32_t * max_width,
2225 uint32_t * max_height
2226);
2227
2232typedef uint32_t VdpBitmapSurface;
2233
2252 VdpDevice device,
2253 VdpRGBAFormat rgba_format,
2254 uint32_t width,
2255 uint32_t height,
2256 VdpBool frequently_accessed,
2257 /* output parameters follow */
2258 VdpBitmapSurface * surface
2259);
2260
2267 VdpBitmapSurface surface
2268);
2269
2282 VdpBitmapSurface surface,
2283 /* output parameters follow */
2284 VdpRGBAFormat * rgba_format,
2285 uint32_t * width,
2286 uint32_t * height,
2287 VdpBool * frequently_accessed
2288);
2289
2310 VdpBitmapSurface surface,
2311 void const * const * source_data,
2312 uint32_t const * source_pitches,
2313 VdpRect const * destination_rect
2314);
2315
2349
2361
2362#define VDP_OUTPUT_SURFACE_RENDER_BLEND_STATE_VERSION 0
2363
2396
2401#define VDP_OUTPUT_SURFACE_RENDER_ROTATE_0 0
2402
2408#define VDP_OUTPUT_SURFACE_RENDER_ROTATE_90 1
2409
2415#define VDP_OUTPUT_SURFACE_RENDER_ROTATE_180 2
2416
2422#define VDP_OUTPUT_SURFACE_RENDER_ROTATE_270 3
2423
2431#define VDP_OUTPUT_SURFACE_RENDER_COLOR_PER_VERTEX (1 << 2)
2432
2504 VdpOutputSurface destination_surface,
2505 VdpRect const * destination_rect,
2506 VdpOutputSurface source_surface,
2507 VdpRect const * source_rect,
2508 VdpColor const * colors,
2509 VdpOutputSurfaceRenderBlendState const * blend_state,
2510 uint32_t flags
2511);
2512
2584 VdpOutputSurface destination_surface,
2585 VdpRect const * destination_rect,
2586 VdpBitmapSurface source_surface,
2587 VdpRect const * source_rect,
2588 VdpColor const * colors,
2589 VdpOutputSurfaceRenderBlendState const * blend_state,
2590 uint32_t flags
2591);
2592
2613typedef uint32_t VdpDecoderProfile;
2614
2616#define VDP_DECODER_PROFILE_MPEG1 ((VdpDecoderProfile)0)
2618#define VDP_DECODER_PROFILE_MPEG2_SIMPLE ((VdpDecoderProfile)1)
2620#define VDP_DECODER_PROFILE_MPEG2_MAIN ((VdpDecoderProfile)2)
2623#define VDP_DECODER_PROFILE_H264_BASELINE ((VdpDecoderProfile)6)
2625#define VDP_DECODER_PROFILE_H264_MAIN ((VdpDecoderProfile)7)
2627#define VDP_DECODER_PROFILE_H264_HIGH ((VdpDecoderProfile)8)
2629#define VDP_DECODER_PROFILE_VC1_SIMPLE ((VdpDecoderProfile)9)
2631#define VDP_DECODER_PROFILE_VC1_MAIN ((VdpDecoderProfile)10)
2633#define VDP_DECODER_PROFILE_VC1_ADVANCED ((VdpDecoderProfile)11)
2635#define VDP_DECODER_PROFILE_MPEG4_PART2_SP ((VdpDecoderProfile)12)
2637#define VDP_DECODER_PROFILE_MPEG4_PART2_ASP ((VdpDecoderProfile)13)
2639#define VDP_DECODER_PROFILE_DIVX4_QMOBILE ((VdpDecoderProfile)14)
2641#define VDP_DECODER_PROFILE_DIVX4_MOBILE ((VdpDecoderProfile)15)
2643#define VDP_DECODER_PROFILE_DIVX4_HOME_THEATER ((VdpDecoderProfile)16)
2645#define VDP_DECODER_PROFILE_DIVX4_HD_1080P ((VdpDecoderProfile)17)
2647#define VDP_DECODER_PROFILE_DIVX5_QMOBILE ((VdpDecoderProfile)18)
2649#define VDP_DECODER_PROFILE_DIVX5_MOBILE ((VdpDecoderProfile)19)
2651#define VDP_DECODER_PROFILE_DIVX5_HOME_THEATER ((VdpDecoderProfile)20)
2653#define VDP_DECODER_PROFILE_DIVX5_HD_1080P ((VdpDecoderProfile)21)
2655#define VDP_DECODER_PROFILE_H264_CONSTRAINED_BASELINE ((VdpDecoderProfile)22)
2657#define VDP_DECODER_PROFILE_H264_EXTENDED ((VdpDecoderProfile)23)
2659#define VDP_DECODER_PROFILE_H264_PROGRESSIVE_HIGH ((VdpDecoderProfile)24)
2661#define VDP_DECODER_PROFILE_H264_CONSTRAINED_HIGH ((VdpDecoderProfile)25)
2664#define VDP_DECODER_PROFILE_H264_HIGH_444_PREDICTIVE ((VdpDecoderProfile)26)
2666#define VDP_DECODER_PROFILE_VP9_PROFILE_0 ((VdpDecoderProfile)27)
2668#define VDP_DECODER_PROFILE_VP9_PROFILE_1 ((VdpDecoderProfile)28)
2670#define VDP_DECODER_PROFILE_VP9_PROFILE_2 ((VdpDecoderProfile)29)
2672#define VDP_DECODER_PROFILE_VP9_PROFILE_3 ((VdpDecoderProfile)30)
2675#define VDP_DECODER_PROFILE_HEVC_MAIN ((VdpDecoderProfile)100)
2677#define VDP_DECODER_PROFILE_HEVC_MAIN_10 ((VdpDecoderProfile)101)
2679#define VDP_DECODER_PROFILE_HEVC_MAIN_STILL ((VdpDecoderProfile)102)
2681#define VDP_DECODER_PROFILE_HEVC_MAIN_12 ((VdpDecoderProfile)103)
2683#define VDP_DECODER_PROFILE_HEVC_MAIN_444 ((VdpDecoderProfile)104)
2685#define VDP_DECODER_PROFILE_HEVC_MAIN_444_10 ((VdpDecoderProfile)105)
2687#define VDP_DECODER_PROFILE_HEVC_MAIN_444_12 ((VdpDecoderProfile)106)
2689#define VDP_DECODER_PROFILE_AV1_MAIN ((VdpDecoderProfile)107)
2691#define VDP_DECODER_PROFILE_AV1_HIGH ((VdpDecoderProfile)108)
2693#define VDP_DECODER_PROFILE_AV1_PROFESSIONAL ((VdpDecoderProfile)109)
2694
2696#define VDP_DECODER_LEVEL_MPEG1_NA 0
2697
2699#define VDP_DECODER_LEVEL_MPEG2_LL 0
2701#define VDP_DECODER_LEVEL_MPEG2_ML 1
2703#define VDP_DECODER_LEVEL_MPEG2_HL14 2
2705#define VDP_DECODER_LEVEL_MPEG2_HL 3
2706
2708#define VDP_DECODER_LEVEL_H264_1 10
2710#define VDP_DECODER_LEVEL_H264_1b 9
2712#define VDP_DECODER_LEVEL_H264_1_1 11
2714#define VDP_DECODER_LEVEL_H264_1_2 12
2716#define VDP_DECODER_LEVEL_H264_1_3 13
2718#define VDP_DECODER_LEVEL_H264_2 20
2720#define VDP_DECODER_LEVEL_H264_2_1 21
2722#define VDP_DECODER_LEVEL_H264_2_2 22
2724#define VDP_DECODER_LEVEL_H264_3 30
2726#define VDP_DECODER_LEVEL_H264_3_1 31
2728#define VDP_DECODER_LEVEL_H264_3_2 32
2730#define VDP_DECODER_LEVEL_H264_4 40
2732#define VDP_DECODER_LEVEL_H264_4_1 41
2734#define VDP_DECODER_LEVEL_H264_4_2 42
2736#define VDP_DECODER_LEVEL_H264_5 50
2738#define VDP_DECODER_LEVEL_H264_5_1 51
2739
2741#define VDP_DECODER_LEVEL_VC1_SIMPLE_LOW 0
2743#define VDP_DECODER_LEVEL_VC1_SIMPLE_MEDIUM 1
2744
2746#define VDP_DECODER_LEVEL_VC1_MAIN_LOW 0
2748#define VDP_DECODER_LEVEL_VC1_MAIN_MEDIUM 1
2750#define VDP_DECODER_LEVEL_VC1_MAIN_HIGH 2
2751
2753#define VDP_DECODER_LEVEL_VC1_ADVANCED_L0 0
2755#define VDP_DECODER_LEVEL_VC1_ADVANCED_L1 1
2757#define VDP_DECODER_LEVEL_VC1_ADVANCED_L2 2
2759#define VDP_DECODER_LEVEL_VC1_ADVANCED_L3 3
2761#define VDP_DECODER_LEVEL_VC1_ADVANCED_L4 4
2762
2764#define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L0 0
2766#define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L1 1
2768#define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L2 2
2770#define VDP_DECODER_LEVEL_MPEG4_PART2_SP_L3 3
2771
2773#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L0 0
2775#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L1 1
2777#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L2 2
2779#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L3 3
2781#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L4 4
2783#define VDP_DECODER_LEVEL_MPEG4_PART2_ASP_L5 5
2784
2786#define VDP_DECODER_LEVEL_DIVX_NA 0
2787
2789#define VDP_DECODER_LEVEL_VP9_L1 1
2790
2792#define VDP_DECODER_LEVEL_AV1_2_0 0
2794#define VDP_DECODER_LEVEL_AV1_2_1 1
2796#define VDP_DECODER_LEVEL_AV1_2_2 2
2798#define VDP_DECODER_LEVEL_AV1_2_3 3
2800#define VDP_DECODER_LEVEL_AV1_3_0 4
2802#define VDP_DECODER_LEVEL_AV1_3_1 5
2804#define VDP_DECODER_LEVEL_AV1_3_2 6
2806#define VDP_DECODER_LEVEL_AV1_3_3 7
2808#define VDP_DECODER_LEVEL_AV1_4_0 8
2810#define VDP_DECODER_LEVEL_AV1_4_1 9
2812#define VDP_DECODER_LEVEL_AV1_4_2 10
2814#define VDP_DECODER_LEVEL_AV1_4_3 11
2816#define VDP_DECODER_LEVEL_AV1_5_0 12
2818#define VDP_DECODER_LEVEL_AV1_5_1 13
2820#define VDP_DECODER_LEVEL_AV1_5_2 14
2822#define VDP_DECODER_LEVEL_AV1_5_3 15
2824#define VDP_DECODER_LEVEL_AV1_6_0 16
2826#define VDP_DECODER_LEVEL_AV1_6_1 17
2828#define VDP_DECODER_LEVEL_AV1_6_2 18
2830#define VDP_DECODER_LEVEL_AV1_6_3 19
2832#define VDP_DECODER_LEVEL_AV1_7_0 20
2834#define VDP_DECODER_LEVEL_AV1_7_1 21
2836#define VDP_DECODER_LEVEL_AV1_7_2 22
2838#define VDP_DECODER_LEVEL_AV1_7_3 23
2839
2846#define VDP_DECODER_LEVEL_HEVC_1 30
2848#define VDP_DECODER_LEVEL_HEVC_2 60
2850#define VDP_DECODER_LEVEL_HEVC_2_1 63
2852#define VDP_DECODER_LEVEL_HEVC_3 90
2854#define VDP_DECODER_LEVEL_HEVC_3_1 93
2856#define VDP_DECODER_LEVEL_HEVC_4 120
2858#define VDP_DECODER_LEVEL_HEVC_4_1 123
2860#define VDP_DECODER_LEVEL_HEVC_5 150
2862#define VDP_DECODER_LEVEL_HEVC_5_1 153
2864#define VDP_DECODER_LEVEL_HEVC_5_2 156
2866#define VDP_DECODER_LEVEL_HEVC_6 180
2868#define VDP_DECODER_LEVEL_HEVC_6_1 183
2870#define VDP_DECODER_LEVEL_HEVC_6_2 186
2871
2876
2892
2905 VdpDevice device,
2906 VdpDecoderProfile profile,
2907 /* output parameters follow */
2908 VdpDecoderCapability capability,
2909 void * capability_value
2910);
2911
2931 VdpDevice device,
2932 VdpDecoderProfile profile,
2933 /* output parameters follow */
2934 VdpBool * is_supported,
2935 uint32_t * max_level,
2936 uint32_t * max_macroblocks,
2937 uint32_t * max_width,
2938 uint32_t * max_height
2939);
2940
2944typedef uint32_t VdpDecoder;
2945
2963 VdpDevice device,
2964 VdpDecoderProfile profile,
2965 uint32_t width,
2966 uint32_t height,
2967 uint32_t max_references,
2968 /* output parameters follow */
2969 VdpDecoder * decoder
2970);
2971
2978 VdpDecoder decoder
2979);
2980
2994 VdpDecoder decoder,
2995 /* output parameters follow */
2996 VdpDecoderProfile * profile,
2997 uint32_t * width,
2998 uint32_t * height
2999);
3000
3001#define VDP_BITSTREAM_BUFFER_VERSION 0
3002
3007typedef struct {
3013 void const * bitstream;
3017
3028typedef void VdpPictureInfo;
3029
3077
3112
3180
3211
3318
3326typedef struct {
3337
3342 int32_t trd[2];
3343 int32_t trb[2];
3349 uint8_t interlaced;
3350 uint8_t quant_type;
3357 uint8_t intra_quantizer_matrix[64];
3358 uint8_t non_intra_quantizer_matrix[64];
3361
3369
3377
3378typedef struct
3379{
3380 unsigned int width;
3381 unsigned int height;
3382
3383 //Frame Indices
3387
3388 unsigned char colorSpace;
3389
3390 unsigned short profile;
3391 unsigned short frameContextIdx;
3392 unsigned short keyFrame;
3393 unsigned short showFrame;
3394 unsigned short errorResilient;
3396 unsigned short subSamplingX;
3397 unsigned short subSamplingY;
3398 unsigned short intraOnly;
3399 unsigned short allowHighPrecisionMv;
3400 unsigned short refreshEntropyProbs;
3401
3402 unsigned char refFrameSignBias[4];
3403
3404 unsigned char bitDepthMinus8Luma;
3406 unsigned char loopFilterLevel;
3407 unsigned char loopFilterSharpness;
3408
3409 unsigned char modeRefLfEnabled;
3410 unsigned char log2TileColumns;
3411 unsigned char log2TileRows;
3412
3413 unsigned char segmentEnabled;
3414 unsigned char segmentMapUpdate;
3416 unsigned char segmentFeatureMode;
3417
3418 unsigned char segmentFeatureEnable[8][4];
3419 short segmentFeatureData[8][4];
3420 unsigned char mbSegmentTreeProbs[7];
3421 unsigned char segmentPredProbs[3];
3422 unsigned char reservedSegment16Bits[2];
3423
3428
3429 unsigned int activeRefIdx[3];
3430 unsigned int resetFrameContext;
3431 unsigned int mcompFilterType;
3432 unsigned int mbRefLfDelta[4];
3433 unsigned int mbModeLfDelta[2];
3437
3455typedef struct {
3481 uint8_t ScalingList4x4[6][16];
3484 uint8_t ScalingList8x8[6][64];
3487 uint8_t ScalingList16x16[6][64];
3490 uint8_t ScalingList32x32[2][64];
3493 uint8_t ScalingListDCCoeff16x16[6];
3496 uint8_t ScalingListDCCoeff32x32[2];
3555 uint16_t column_width_minus1[20];
3559 uint16_t row_height_minus1[22];
3589 uint8_t IDRPicFlag;
3592 uint8_t RAPPicFlag;
3594 uint8_t CurrRpsIdx;
3620
3624 VdpVideoSurface RefPics[16];
3627 int32_t PicOrderCntVal[16];
3631 uint8_t IsLongTerm[16];
3643 uint8_t RefPicSetStCurrBefore[8];
3646 uint8_t RefPicSetStCurrAfter[8];
3649 uint8_t RefPicSetLtCurr[8];
3651
3659typedef struct {
3662
3663 /* SPS Range Extensions for Main 444, Main 10, etc. */
3665 /* sps extension for transform_skip_rotation_enabled_flag */
3667 /* sps extension for transform_skip_context_enabled_flag */
3669 /* sps implicit_rdpcm_enabled_flag */
3671 /* sps explicit_rdpcm_enabled_flag */
3673 /* sps extended_precision_processing_flag,always 0 in current profile */
3675 /* sps intra_smoothing_disabled_flag */
3677 /* sps high_precision_offsets_enabled_flag */
3679 /* sps persistent_rice_adaptation_enabled_flag */
3681 /* sps cabac_bypass_alignment_enabled_flag, always 0 in current profile */
3683 /* sps intraBlockCopyEnableFlag, always 0 not used by the spec as of now */
3685
3686 /* PPS Range Extensions for Main 444, Main 10, etc. */
3688 /* pps extension log2_max_transform_skip_block_size_minus2, 0...5 */