vdpau_private.h revision 14766f820069ca987543918bce96410c481e5d20
1f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton/************************************************************************** 2f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * 3501ac572c604ef248ed41311a065bc5f4746fcb3Thomas Balling Sørensen * Copyright 2010 Younes Manton & Thomas Balling Sørensen. 4f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * All Rights Reserved. 5f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * 6f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * Permission is hereby granted, free of charge, to any person obtaining a 7f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * copy of this software and associated documentation files (the 8f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * "Software"), to deal in the Software without restriction, including 9f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * without limitation the rights to use, copy, modify, merge, publish, 10f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * distribute, sub license, and/or sell copies of the Software, and to 11f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * permit persons to whom the Software is furnished to do so, subject to 12f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * the following conditions: 13f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * 14f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * The above copyright notice and this permission notice (including the 15f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * next paragraph) shall be included in all copies or substantial portions 16f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * of the Software. 17f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * 18f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 19f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 21f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 22f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 25f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton * 26f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton **************************************************************************/ 27f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton 283299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen#ifndef VDPAU_PRIVATE_H 293299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen#define VDPAU_PRIVATE_H 303299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen 3108f3a7cf7e9133f50adf33f800aa3696c909347fChristian König#include <assert.h> 3208f3a7cf7e9133f50adf33f800aa3696c909347fChristian König 33f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton#include <vdpau/vdpau.h> 3465fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen#include <vdpau/vdpau_x11.h> 3508f3a7cf7e9133f50adf33f800aa3696c909347fChristian König 3628f8ff6b622d63e8ffe322ab2cdf5197941f1a40Kai Wasserbäch#include "pipe/p_compiler.h" 3728f8ff6b622d63e8ffe322ab2cdf5197941f1a40Kai Wasserbäch#include "pipe/p_video_decoder.h" 3808f3a7cf7e9133f50adf33f800aa3696c909347fChristian König 3928f8ff6b622d63e8ffe322ab2cdf5197941f1a40Kai Wasserbäch#include "util/u_debug.h" 40167b1b32c5ff30d514253072ce54513112c03d4dChristian König#include "util/u_rect.h" 4114766f820069ca987543918bce96410c481e5d20Christian König 4228f8ff6b622d63e8ffe322ab2cdf5197941f1a40Kai Wasserbäch#include "vl/vl_compositor.h" 4314766f820069ca987543918bce96410c481e5d20Christian König#include "vl/vl_csc.h" 4436cd50152c76d5a5b34202887af68aab09854d5dChristian König#include "vl/vl_matrix_filter.h" 45bbb48e983d232d67031250127b3c2acfc086369eChristian König#include "vl/vl_median_filter.h" 4608f3a7cf7e9133f50adf33f800aa3696c909347fChristian König 4728f8ff6b622d63e8ffe322ab2cdf5197941f1a40Kai Wasserbäch#include "vl_winsys.h" 483299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen 49fa2a8316cebeb75626ffa3e38dbc1500e82054f6Emeric Grange/* Full VDPAU API documentation available at : 50fa2a8316cebeb75626ffa3e38dbc1500e82054f6Emeric Grange * ftp://download.nvidia.com/XFree86/vdpau/doxygen/html/index.html */ 51fa2a8316cebeb75626ffa3e38dbc1500e82054f6Emeric Grange 523299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen#define INFORMATION G3DVL VDPAU Driver Shared Library version VER_MAJOR.VER_MINOR 533299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen#define QUOTEME(x) #x 543299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen#define TOSTRING(x) QUOTEME(x) 553299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen#define INFORMATION_STRING TOSTRING(INFORMATION) 563299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen#define VL_HANDLES 573299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen 58e6d41e4d0326cac60b49e149d86d0f95c2518045Christian Königstatic inline enum pipe_video_chroma_format 59e6d41e4d0326cac60b49e149d86d0f95c2518045Christian KönigChromaToPipe(VdpChromaType vdpau_type) 603299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen{ 613299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen switch (vdpau_type) { 623299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen case VDP_CHROMA_TYPE_420: 633299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen return PIPE_VIDEO_CHROMA_FORMAT_420; 643299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen case VDP_CHROMA_TYPE_422: 653299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen return PIPE_VIDEO_CHROMA_FORMAT_422; 663299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen case VDP_CHROMA_TYPE_444: 673299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen return PIPE_VIDEO_CHROMA_FORMAT_444; 683299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen default: 693299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen assert(0); 703299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen } 713299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen 723299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen return -1; 733299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen} 743299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen 75e6d41e4d0326cac60b49e149d86d0f95c2518045Christian Königstatic inline VdpChromaType 76e6d41e4d0326cac60b49e149d86d0f95c2518045Christian KönigPipeToChroma(enum pipe_video_chroma_format pipe_type) 773299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen{ 783299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen switch (pipe_type) { 793299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen case PIPE_VIDEO_CHROMA_FORMAT_420: 803299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen return VDP_CHROMA_TYPE_420; 813299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen case PIPE_VIDEO_CHROMA_FORMAT_422: 823299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen return VDP_CHROMA_TYPE_422; 833299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen case PIPE_VIDEO_CHROMA_FORMAT_444: 843299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen return VDP_CHROMA_TYPE_444; 853299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen default: 863299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen assert(0); 873299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen } 883299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen 893299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen return -1; 903299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen} 913299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen 92e6d41e4d0326cac60b49e149d86d0f95c2518045Christian Königstatic inline enum pipe_format 933d769619e2937cb4f2a036e82b396d9e53d65ba8Christian KönigFormatYCBCRToPipe(VdpYCbCrFormat vdpau_format) 943299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen{ 953299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen switch (vdpau_format) { 963299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen case VDP_YCBCR_FORMAT_NV12: 973299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen return PIPE_FORMAT_NV12; 983299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen case VDP_YCBCR_FORMAT_YV12: 993299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen return PIPE_FORMAT_YV12; 1003299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen case VDP_YCBCR_FORMAT_UYVY: 1013299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen return PIPE_FORMAT_UYVY; 1023299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen case VDP_YCBCR_FORMAT_YUYV: 1033299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen return PIPE_FORMAT_YUYV; 1043299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen case VDP_YCBCR_FORMAT_Y8U8V8A8: /* Not defined in p_format.h */ 10549e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König return PIPE_FORMAT_NONE; 1063299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen case VDP_YCBCR_FORMAT_V8U8Y8A8: 1073299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen return PIPE_FORMAT_VUYA; 1083299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen default: 1093299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen assert(0); 1103299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen } 1113299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen 11249e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König return PIPE_FORMAT_NONE; 1133299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen} 1143299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen 1153d769619e2937cb4f2a036e82b396d9e53d65ba8Christian Königstatic inline VdpYCbCrFormat 1163d769619e2937cb4f2a036e82b396d9e53d65ba8Christian KönigPipeToFormatYCBCR(enum pipe_format p_format) 1173d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König{ 1183d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König switch (p_format) { 1193d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König case PIPE_FORMAT_NV12: 1203d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König return VDP_YCBCR_FORMAT_NV12; 1213d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König case PIPE_FORMAT_YV12: 1223d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König return VDP_YCBCR_FORMAT_YV12; 1233d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König case PIPE_FORMAT_UYVY: 1243d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König return VDP_YCBCR_FORMAT_UYVY; 1253d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König case PIPE_FORMAT_YUYV: 1263d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König return VDP_YCBCR_FORMAT_YUYV; 1273d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König //case PIPE_FORMAT_YUVA: 1283d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König // return VDP_YCBCR_FORMAT_Y8U8V8A8; 1293d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König case PIPE_FORMAT_VUYA: 130fa2a8316cebeb75626ffa3e38dbc1500e82054f6Emeric Grange return VDP_YCBCR_FORMAT_V8U8Y8A8; 1313d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König default: 1323d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König assert(0); 1333d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König } 1343d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König 1353d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König return -1; 1363d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König} 1373d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König 138e6d41e4d0326cac60b49e149d86d0f95c2518045Christian Königstatic inline enum pipe_format 139e6d41e4d0326cac60b49e149d86d0f95c2518045Christian KönigFormatRGBAToPipe(VdpRGBAFormat vdpau_format) 14065fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen{ 14165fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen switch (vdpau_format) { 14265fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen case VDP_RGBA_FORMAT_A8: 14365fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen return PIPE_FORMAT_A8_UNORM; 14465fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen case VDP_RGBA_FORMAT_B10G10R10A2: 14565fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen return PIPE_FORMAT_B10G10R10A2_UNORM; 14665fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen case VDP_RGBA_FORMAT_B8G8R8A8: 14765fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen return PIPE_FORMAT_B8G8R8A8_UNORM; 14865fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen case VDP_RGBA_FORMAT_R10G10B10A2: 14965fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen return PIPE_FORMAT_R10G10B10A2_UNORM; 15065fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen case VDP_RGBA_FORMAT_R8G8B8A8: 15165fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen return PIPE_FORMAT_R8G8B8A8_UNORM; 15265fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen default: 15365fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen assert(0); 15465fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen } 15565fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen 15649e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König return PIPE_FORMAT_NONE; 15765fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen} 15865fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen 1593d769619e2937cb4f2a036e82b396d9e53d65ba8Christian Königstatic inline VdpRGBAFormat 1603d769619e2937cb4f2a036e82b396d9e53d65ba8Christian KönigPipeToFormatRGBA(enum pipe_format p_format) 1613299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen{ 1623299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen switch (p_format) { 1633d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König case PIPE_FORMAT_A8_UNORM: 1643d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König return VDP_RGBA_FORMAT_A8; 1653d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König case PIPE_FORMAT_B10G10R10A2_UNORM: 1663d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König return VDP_RGBA_FORMAT_B10G10R10A2; 1673d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König case PIPE_FORMAT_B8G8R8A8_UNORM: 1683d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König return VDP_RGBA_FORMAT_B8G8R8A8; 1693d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König case PIPE_FORMAT_R10G10B10A2_UNORM: 1703d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König return VDP_RGBA_FORMAT_R10G10B10A2; 1713d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König case PIPE_FORMAT_R8G8B8A8_UNORM: 1723d769619e2937cb4f2a036e82b396d9e53d65ba8Christian König return VDP_RGBA_FORMAT_R8G8B8A8; 1733299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen default: 1743299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen assert(0); 1753299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen } 1763299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen 1773299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen return -1; 1783299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen} 179f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton 18049e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian Königstatic inline enum pipe_format 18149e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian KönigFormatIndexedToPipe(VdpRGBAFormat vdpau_format) 18249e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König{ 18349e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König switch (vdpau_format) { 18449e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König case VDP_INDEXED_FORMAT_A4I4: 18549e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König return PIPE_FORMAT_A4R4_UNORM; 18649e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König case VDP_INDEXED_FORMAT_I4A4: 18749e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König return PIPE_FORMAT_R4A4_UNORM; 18849e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König case VDP_INDEXED_FORMAT_A8I8: 18949e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König return PIPE_FORMAT_A8R8_UNORM; 19049e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König case VDP_INDEXED_FORMAT_I8A8: 19149e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König return PIPE_FORMAT_R8A8_UNORM; 19249e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König default: 19349e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König assert(0); 19449e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König } 19549e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König 19649e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König return PIPE_FORMAT_NONE; 19749e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König} 19849e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König 19949e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian Königstatic inline enum pipe_format 20049e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian KönigFormatColorTableToPipe(VdpColorTableFormat vdpau_format) 20149e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König{ 20249e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König switch(vdpau_format) { 20349e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König case VDP_COLOR_TABLE_FORMAT_B8G8R8X8: 20449e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König return PIPE_FORMAT_B8G8R8X8_UNORM; 20549e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König default: 20649e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König assert(0); 20749e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König } 208c24bc6f8684abee8c9a1b263334cd7a8506657b1Emeric Grange 20949e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König return PIPE_FORMAT_NONE; 21049e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König} 21149e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König 212e6d41e4d0326cac60b49e149d86d0f95c2518045Christian Königstatic inline enum pipe_video_profile 213e6d41e4d0326cac60b49e149d86d0f95c2518045Christian KönigProfileToPipe(VdpDecoderProfile vdpau_profile) 214725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen{ 215725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen switch (vdpau_profile) { 216725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen case VDP_DECODER_PROFILE_MPEG1: 217725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen return PIPE_VIDEO_PROFILE_MPEG1; 218725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen case VDP_DECODER_PROFILE_MPEG2_SIMPLE: 219725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen return PIPE_VIDEO_PROFILE_MPEG2_SIMPLE; 220725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen case VDP_DECODER_PROFILE_MPEG2_MAIN: 221725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen return PIPE_VIDEO_PROFILE_MPEG2_MAIN; 222725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen case VDP_DECODER_PROFILE_H264_BASELINE: 223725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen return PIPE_VIDEO_PROFILE_MPEG4_AVC_BASELINE; 224c24bc6f8684abee8c9a1b263334cd7a8506657b1Emeric Grange case VDP_DECODER_PROFILE_H264_MAIN: 225725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen return PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN; 226725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen case VDP_DECODER_PROFILE_H264_HIGH: 227c24bc6f8684abee8c9a1b263334cd7a8506657b1Emeric Grange return PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH; 22891d33b5c589a63f73212546825988cfa4f80b207Maarten Lankhorst case VDP_DECODER_PROFILE_MPEG4_PART2_SP: 22991d33b5c589a63f73212546825988cfa4f80b207Maarten Lankhorst return PIPE_VIDEO_PROFILE_MPEG4_SIMPLE; 23091d33b5c589a63f73212546825988cfa4f80b207Maarten Lankhorst case VDP_DECODER_PROFILE_MPEG4_PART2_ASP: 23191d33b5c589a63f73212546825988cfa4f80b207Maarten Lankhorst return PIPE_VIDEO_PROFILE_MPEG4_ADVANCED_SIMPLE; 232eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst case VDP_DECODER_PROFILE_VC1_SIMPLE: 233eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst return PIPE_VIDEO_PROFILE_VC1_SIMPLE; 234eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst case VDP_DECODER_PROFILE_VC1_MAIN: 235eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst return PIPE_VIDEO_PROFILE_VC1_MAIN; 236eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst case VDP_DECODER_PROFILE_VC1_ADVANCED: 237eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst return PIPE_VIDEO_PROFILE_VC1_ADVANCED; 238725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen default: 2392471acfc4c051d480861265011fa5e77fad02887Christian König return PIPE_VIDEO_PROFILE_UNKNOWN; 240725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen } 241725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen} 242725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen 24334145ecdad8d6d3b14dc88dafd71b689c68de36cChristian Königstatic inline VdpDecoderProfile 24434145ecdad8d6d3b14dc88dafd71b689c68de36cChristian KönigPipeToProfile(enum pipe_video_profile p_profile) 24534145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König{ 24634145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König switch (p_profile) { 24734145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König case PIPE_VIDEO_PROFILE_MPEG1: 24834145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König return VDP_DECODER_PROFILE_MPEG1; 24934145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König case PIPE_VIDEO_PROFILE_MPEG2_SIMPLE: 25034145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König return VDP_DECODER_PROFILE_MPEG2_SIMPLE; 25134145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König case PIPE_VIDEO_PROFILE_MPEG2_MAIN: 25234145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König return VDP_DECODER_PROFILE_MPEG2_MAIN; 25334145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König case PIPE_VIDEO_PROFILE_MPEG4_AVC_BASELINE: 25434145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König return VDP_DECODER_PROFILE_H264_BASELINE; 255c24bc6f8684abee8c9a1b263334cd7a8506657b1Emeric Grange case PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN: 25634145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König return VDP_DECODER_PROFILE_H264_MAIN; 25734145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König case PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH: 258c24bc6f8684abee8c9a1b263334cd7a8506657b1Emeric Grange return VDP_DECODER_PROFILE_H264_HIGH; 25991d33b5c589a63f73212546825988cfa4f80b207Maarten Lankhorst case PIPE_VIDEO_PROFILE_MPEG4_SIMPLE: 26091d33b5c589a63f73212546825988cfa4f80b207Maarten Lankhorst return VDP_DECODER_PROFILE_MPEG4_PART2_SP; 26191d33b5c589a63f73212546825988cfa4f80b207Maarten Lankhorst case PIPE_VIDEO_PROFILE_MPEG4_ADVANCED_SIMPLE: 26291d33b5c589a63f73212546825988cfa4f80b207Maarten Lankhorst return VDP_DECODER_PROFILE_MPEG4_PART2_ASP; 263eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst case PIPE_VIDEO_PROFILE_VC1_SIMPLE: 264eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst return VDP_DECODER_PROFILE_VC1_SIMPLE; 265eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst case PIPE_VIDEO_PROFILE_VC1_MAIN: 266eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst return VDP_DECODER_PROFILE_VC1_MAIN; 267eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst case PIPE_VIDEO_PROFILE_VC1_ADVANCED: 268eadbcb221db16af96aa6c3f40d48896d23d9eebcMaarten Lankhorst return VDP_DECODER_PROFILE_VC1_ADVANCED; 26934145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König default: 27034145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König assert(0); 27134145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König return -1; 27234145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König } 27334145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König} 27434145ecdad8d6d3b14dc88dafd71b689c68de36cChristian König 275d645dc65b6c5e7d46538e98208a703f0f7a5d20bChristian Königstatic inline struct u_rect * 276d645dc65b6c5e7d46538e98208a703f0f7a5d20bChristian KönigRectToPipe(const VdpRect *src, struct u_rect *dst) 27749e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König{ 27849e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König if (src) { 279d645dc65b6c5e7d46538e98208a703f0f7a5d20bChristian König dst->x0 = src->x0; 280d645dc65b6c5e7d46538e98208a703f0f7a5d20bChristian König dst->y0 = src->y0; 281d645dc65b6c5e7d46538e98208a703f0f7a5d20bChristian König dst->x1 = src->x1; 282d645dc65b6c5e7d46538e98208a703f0f7a5d20bChristian König dst->y1 = src->y1; 28349e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König return dst; 28449e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König } 28549e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König return NULL; 28649e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König} 28749e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König 288f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Mantontypedef struct 289f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton{ 290bff1ac875c2c62ba5045bb953f800253c49361cbThomas Balling Sørensen struct vl_screen *vscreen; 2911448e829e86981e6144410ba6a3d0f16357fb2b3Christian König struct pipe_context *context; 29249e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König struct vl_compositor compositor; 293f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton} vlVdpDevice; 294f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton 2953299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensentypedef struct 2963299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen{ 297725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen vlVdpDevice *device; 29865fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen Drawable drawable; 29965fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen} vlVdpPresentationQueueTarget; 30065fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen 30165fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensentypedef struct 30265fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen{ 30365fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen vlVdpDevice *device; 304cae77aa80b3629a147ce3ae4526646014efae595Christian König Drawable drawable; 30532c4381d4a0479b3d9bfe305ce701be6b5ac8e18Christian König struct vl_compositor_state cstate; 30665fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen} vlVdpPresentationQueue; 30765fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen 30865fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensentypedef struct 30965fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen{ 31049f4aff75ce781fb71383a5ffe44e51e34ff1bf3Christian König vlVdpDevice *device; 31132c4381d4a0479b3d9bfe305ce701be6b5ac8e18Christian König struct vl_compositor_state cstate; 312bbb48e983d232d67031250127b3c2acfc086369eChristian König 313bbb48e983d232d67031250127b3c2acfc086369eChristian König struct { 314bbb48e983d232d67031250127b3c2acfc086369eChristian König bool supported, enabled; 315553e8203879d163e6fe2f3a8f6b80a44749514c1Christian König unsigned level; 316bbb48e983d232d67031250127b3c2acfc086369eChristian König struct vl_median_filter *filter; 317bbb48e983d232d67031250127b3c2acfc086369eChristian König } noise_reduction; 318bbb48e983d232d67031250127b3c2acfc086369eChristian König 31936cd50152c76d5a5b34202887af68aab09854d5dChristian König struct { 32036cd50152c76d5a5b34202887af68aab09854d5dChristian König bool supported, enabled; 32136cd50152c76d5a5b34202887af68aab09854d5dChristian König float value; 32236cd50152c76d5a5b34202887af68aab09854d5dChristian König struct vl_matrix_filter *filter; 32336cd50152c76d5a5b34202887af68aab09854d5dChristian König } sharpness; 32436cd50152c76d5a5b34202887af68aab09854d5dChristian König 32589b9863252272a7109d468738517a0d68376a909Maarten Lankhorst unsigned video_width, video_height; 32689b9863252272a7109d468738517a0d68376a909Maarten Lankhorst enum pipe_video_chroma_format chroma_format; 32714766f820069ca987543918bce96410c481e5d20Christian König unsigned max_layers, skip_chroma_deint; 32836cd50152c76d5a5b34202887af68aab09854d5dChristian König float luma_key_min, luma_key_max; 32914766f820069ca987543918bce96410c481e5d20Christian König 33014766f820069ca987543918bce96410c481e5d20Christian König bool custom_csc; 33114766f820069ca987543918bce96410c481e5d20Christian König vl_csc_matrix csc; 33265fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen} vlVdpVideoMixer; 33365fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen 33465fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensentypedef struct 33565fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen{ 33665fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen vlVdpDevice *device; 3374a4811ea178fb158339c1fbfacc58a9ab97058f8Christian König struct pipe_video_buffer templat, *video_buffer; 3383299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen} vlVdpSurface; 3393299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen 340e911dbb56374edf9f3b7c4cec0cf9a22738bb198Emeric Grangetypedef uint64_t vlVdpTime; 341e911dbb56374edf9f3b7c4cec0cf9a22738bb198Emeric Grange 342725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensentypedef struct 343725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen{ 344e911dbb56374edf9f3b7c4cec0cf9a22738bb198Emeric Grange vlVdpTime timestamp; 34565fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen vlVdpDevice *device; 346b98b58c76a2560b1db603e62f96c6641cedfa8e8Christian König struct pipe_surface *surface; 347b98b58c76a2560b1db603e62f96c6641cedfa8e8Christian König struct pipe_sampler_view *sampler_view; 348e911dbb56374edf9f3b7c4cec0cf9a22738bb198Emeric Grange struct pipe_fence_handle *fence; 34932c4381d4a0479b3d9bfe305ce701be6b5ac8e18Christian König struct vl_compositor_state cstate; 3509e51c200a78b8be8be195e0d82d69e952afd1343Christian König struct u_rect dirty_area; 35165fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen} vlVdpOutputSurface; 35265fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen 35365fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensentypedef struct 35465fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen{ 35549f4aff75ce781fb71383a5ffe44e51e34ff1bf3Christian König vlVdpDevice *device; 3562471acfc4c051d480861265011fa5e77fad02887Christian König struct pipe_video_decoder *decoder; 357725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen} vlVdpDecoder; 358725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen 359f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Mantontypedef uint32_t vlHandle; 360f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton 361f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Mantonboolean vlCreateHTAB(void); 362f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Mantonvoid vlDestroyHTAB(void); 363f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonvlHandle vlAddDataHTAB(void *data); 364f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Mantonvoid* vlGetDataHTAB(vlHandle handle); 3655aa26412432dbdb3b1677d6d2f74bba010f443aeChristian Königvoid vlRemoveDataHTAB(vlHandle handle); 3665aa26412432dbdb3b1677d6d2f74bba010f443aeChristian König 367f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Mantonboolean vlGetFuncFTAB(VdpFuncId function_id, void **func); 368f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton 36965fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen/* Public functions */ 37065fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpDeviceCreateX11 vdp_imp_device_create_x11; 37165fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpPresentationQueueTargetCreateX11 vlVdpPresentationQueueTargetCreateX11; 37265fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen 37365fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen/* Internal function pointers */ 374c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpGetErrorString vlVdpGetErrorString; 375f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpDeviceDestroy vlVdpDeviceDestroy; 376f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpGetProcAddress vlVdpGetProcAddress; 377f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpGetApiVersion vlVdpGetApiVersion; 378f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpGetInformationString vlVdpGetInformationString; 379f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpVideoSurfaceQueryCapabilities vlVdpVideoSurfaceQueryCapabilities; 380f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities; 381f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpDecoderQueryCapabilities vlVdpDecoderQueryCapabilities; 382f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpOutputSurfaceQueryCapabilities vlVdpOutputSurfaceQueryCapabilities; 383f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpOutputSurfaceQueryGetPutBitsNativeCapabilities vlVdpOutputSurfaceQueryGetPutBitsNativeCapabilities; 38438bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfaceQueryPutBitsIndexedCapabilities vlVdpOutputSurfaceQueryPutBitsIndexedCapabilities; 385f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpOutputSurfaceQueryPutBitsYCbCrCapabilities vlVdpOutputSurfaceQueryPutBitsYCbCrCapabilities; 386f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpBitmapSurfaceQueryCapabilities vlVdpBitmapSurfaceQueryCapabilities; 387f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpVideoMixerQueryFeatureSupport vlVdpVideoMixerQueryFeatureSupport; 388f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpVideoMixerQueryParameterSupport vlVdpVideoMixerQueryParameterSupport; 389f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpVideoMixerQueryParameterValueRange vlVdpVideoMixerQueryParameterValueRange; 390f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpVideoMixerQueryAttributeSupport vlVdpVideoMixerQueryAttributeSupport; 391f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpVideoMixerQueryAttributeValueRange vlVdpVideoMixerQueryAttributeValueRange; 3923299997bcc5a672617095adb560b3834dced39a6Thomas Balling SørensenVdpVideoSurfaceCreate vlVdpVideoSurfaceCreate; 3933299997bcc5a672617095adb560b3834dced39a6Thomas Balling SørensenVdpVideoSurfaceDestroy vlVdpVideoSurfaceDestroy; 3943299997bcc5a672617095adb560b3834dced39a6Thomas Balling SørensenVdpVideoSurfaceGetParameters vlVdpVideoSurfaceGetParameters; 3953299997bcc5a672617095adb560b3834dced39a6Thomas Balling SørensenVdpVideoSurfaceGetBitsYCbCr vlVdpVideoSurfaceGetBitsYCbCr; 3963299997bcc5a672617095adb560b3834dced39a6Thomas Balling SørensenVdpVideoSurfacePutBitsYCbCr vlVdpVideoSurfacePutBitsYCbCr; 397725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling SørensenVdpDecoderCreate vlVdpDecoderCreate; 398725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling SørensenVdpDecoderDestroy vlVdpDecoderDestroy; 39938bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpDecoderGetParameters vlVdpDecoderGetParameters; 400725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling SørensenVdpDecoderRender vlVdpDecoderRender; 401c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpOutputSurfaceCreate vlVdpOutputSurfaceCreate; 40238bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfaceDestroy vlVdpOutputSurfaceDestroy; 40338bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfaceGetParameters vlVdpOutputSurfaceGetParameters; 40438bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfaceGetBitsNative vlVdpOutputSurfaceGetBitsNative; 40538bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfacePutBitsNative vlVdpOutputSurfacePutBitsNative; 40638bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfacePutBitsIndexed vlVdpOutputSurfacePutBitsIndexed; 40738bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfacePutBitsYCbCr vlVdpOutputSurfacePutBitsYCbCr; 40838bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfaceRenderOutputSurface vlVdpOutputSurfaceRenderOutputSurface; 40938bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfaceRenderBitmapSurface vlVdpOutputSurfaceRenderBitmapSurface; 410c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpBitmapSurfaceCreate vlVdpBitmapSurfaceCreate; 411c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpBitmapSurfaceDestroy vlVdpBitmapSurfaceDestroy; 412c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpBitmapSurfaceGetParameters vlVdpBitmapSurfaceGetParameters; 413c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpBitmapSurfacePutBitsNative vlVdpBitmapSurfacePutBitsNative; 414c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueTargetDestroy vlVdpPresentationQueueTargetDestroy; 415c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueCreate vlVdpPresentationQueueCreate; 416c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueDestroy vlVdpPresentationQueueDestroy; 417c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueSetBackgroundColor vlVdpPresentationQueueSetBackgroundColor; 418c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueGetBackgroundColor vlVdpPresentationQueueGetBackgroundColor; 419c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueGetTime vlVdpPresentationQueueGetTime; 420c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueDisplay vlVdpPresentationQueueDisplay; 421c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueBlockUntilSurfaceIdle vlVdpPresentationQueueBlockUntilSurfaceIdle; 422c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueQuerySurfaceStatus vlVdpPresentationQueueQuerySurfaceStatus; 42365fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpPreemptionCallback vlVdpPreemptionCallback; 42465fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpPreemptionCallbackRegister vlVdpPreemptionCallbackRegister; 42565fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpVideoMixerSetFeatureEnables vlVdpVideoMixerSetFeatureEnables; 42665fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpVideoMixerCreate vlVdpVideoMixerCreate; 42765fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpVideoMixerRender vlVdpVideoMixerRender; 42865fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpVideoMixerSetAttributeValues vlVdpVideoMixerSetAttributeValues; 42938bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpVideoMixerGetFeatureSupport vlVdpVideoMixerGetFeatureSupport; 43038bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpVideoMixerGetFeatureEnables vlVdpVideoMixerGetFeatureEnables; 43138bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpVideoMixerGetParameterValues vlVdpVideoMixerGetParameterValues; 43238bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpVideoMixerGetAttributeValues vlVdpVideoMixerGetAttributeValues; 43338bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpVideoMixerDestroy vlVdpVideoMixerDestroy; 43465fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpGenerateCSCMatrix vlVdpGenerateCSCMatrix; 43565fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen 43608f3a7cf7e9133f50adf33f800aa3696c909347fChristian König#define VDPAU_OUT 0 43708f3a7cf7e9133f50adf33f800aa3696c909347fChristian König#define VDPAU_ERR 1 43808f3a7cf7e9133f50adf33f800aa3696c909347fChristian König#define VDPAU_WARN 2 43908f3a7cf7e9133f50adf33f800aa3696c909347fChristian König#define VDPAU_TRACE 3 44008f3a7cf7e9133f50adf33f800aa3696c909347fChristian König 44108f3a7cf7e9133f50adf33f800aa3696c909347fChristian Königstatic inline void VDPAU_MSG(unsigned int level, const char *fmt, ...) 44208f3a7cf7e9133f50adf33f800aa3696c909347fChristian König{ 44308f3a7cf7e9133f50adf33f800aa3696c909347fChristian König static int debug_level = -1; 44408f3a7cf7e9133f50adf33f800aa3696c909347fChristian König 44508f3a7cf7e9133f50adf33f800aa3696c909347fChristian König if (debug_level == -1) { 44608f3a7cf7e9133f50adf33f800aa3696c909347fChristian König debug_level = MAX2(debug_get_num_option("VDPAU_DEBUG", 0), 0); 44708f3a7cf7e9133f50adf33f800aa3696c909347fChristian König } 44808f3a7cf7e9133f50adf33f800aa3696c909347fChristian König 44908f3a7cf7e9133f50adf33f800aa3696c909347fChristian König if (level <= debug_level) { 45008f3a7cf7e9133f50adf33f800aa3696c909347fChristian König va_list ap; 45108f3a7cf7e9133f50adf33f800aa3696c909347fChristian König va_start(ap, fmt); 45208f3a7cf7e9133f50adf33f800aa3696c909347fChristian König _debug_vprintf(fmt, ap); 45308f3a7cf7e9133f50adf33f800aa3696c909347fChristian König va_end(ap); 45408f3a7cf7e9133f50adf33f800aa3696c909347fChristian König } 45508f3a7cf7e9133f50adf33f800aa3696c909347fChristian König} 45608f3a7cf7e9133f50adf33f800aa3696c909347fChristian König 457c24bc6f8684abee8c9a1b263334cd7a8506657b1Emeric Grange#endif /* VDPAU_PRIVATE_H */ 458