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" 4105579339c0da442669ea75749651e8cf4f9ec39bChristian König#include "os/os_thread.h" 4214766f820069ca987543918bce96410c481e5d20Christian König 4328f8ff6b622d63e8ffe322ab2cdf5197941f1a40Kai Wasserbäch#include "vl/vl_compositor.h" 4414766f820069ca987543918bce96410c481e5d20Christian König#include "vl/vl_csc.h" 4536cd50152c76d5a5b34202887af68aab09854d5dChristian König#include "vl/vl_matrix_filter.h" 46bbb48e983d232d67031250127b3c2acfc086369eChristian König#include "vl/vl_median_filter.h" 47fc0a5e21d77ae2f082fd19dd2295e84f6fb7bd3bChristian König#include "vl/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; 104d5fc3746fe3a337bccba0d644543633b728b9444Christian König case VDP_YCBCR_FORMAT_Y8U8V8A8: 105d5fc3746fe3a337bccba0d644543633b728b9444Christian König return PIPE_FORMAT_R8G8B8A8_UNORM; 1063299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen case VDP_YCBCR_FORMAT_V8U8Y8A8: 107d5fc3746fe3a337bccba0d644543633b728b9444Christian König return PIPE_FORMAT_B8G8R8A8_UNORM; 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; 127d5fc3746fe3a337bccba0d644543633b728b9444Christian König case PIPE_FORMAT_R8G8B8A8_UNORM: 128d5fc3746fe3a337bccba0d644543633b728b9444Christian König return VDP_YCBCR_FORMAT_Y8U8V8A8; 129d5fc3746fe3a337bccba0d644543633b728b9444Christian König case PIPE_FORMAT_B8G8R8A8_UNORM: 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 288494e0025d995fb2cab04474d13880ee438b0c868Christian Königstatic inline struct pipe_box 289494e0025d995fb2cab04474d13880ee438b0c868Christian KönigRectToPipeBox(const VdpRect *rect, struct pipe_resource *res) 290494e0025d995fb2cab04474d13880ee438b0c868Christian König{ 291494e0025d995fb2cab04474d13880ee438b0c868Christian König struct pipe_box box; 292494e0025d995fb2cab04474d13880ee438b0c868Christian König 293494e0025d995fb2cab04474d13880ee438b0c868Christian König box.x = 0; 294494e0025d995fb2cab04474d13880ee438b0c868Christian König box.y = 0; 295494e0025d995fb2cab04474d13880ee438b0c868Christian König box.z = 0; 296494e0025d995fb2cab04474d13880ee438b0c868Christian König box.width = res->width0; 297494e0025d995fb2cab04474d13880ee438b0c868Christian König box.height = res->height0; 298494e0025d995fb2cab04474d13880ee438b0c868Christian König box.depth = 1; 299494e0025d995fb2cab04474d13880ee438b0c868Christian König 300494e0025d995fb2cab04474d13880ee438b0c868Christian König if (rect) { 301494e0025d995fb2cab04474d13880ee438b0c868Christian König box.x = MIN2(rect->x0, rect->x1); 302494e0025d995fb2cab04474d13880ee438b0c868Christian König box.y = MIN2(rect->y0, rect->y1); 303494e0025d995fb2cab04474d13880ee438b0c868Christian König box.width = abs(rect->x1 - rect->x0); 304494e0025d995fb2cab04474d13880ee438b0c868Christian König box.height = abs(rect->y1 - rect->y0); 305494e0025d995fb2cab04474d13880ee438b0c868Christian König } 306494e0025d995fb2cab04474d13880ee438b0c868Christian König 307494e0025d995fb2cab04474d13880ee438b0c868Christian König return box; 308494e0025d995fb2cab04474d13880ee438b0c868Christian König} 309494e0025d995fb2cab04474d13880ee438b0c868Christian König 310f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Mantontypedef struct 311f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton{ 312bff1ac875c2c62ba5045bb953f800253c49361cbThomas Balling Sørensen struct vl_screen *vscreen; 3131448e829e86981e6144410ba6a3d0f16357fb2b3Christian König struct pipe_context *context; 31449e24d3b8c0129e11fcc94b6e74dc2589d64c882Christian König struct vl_compositor compositor; 31505579339c0da442669ea75749651e8cf4f9ec39bChristian König pipe_mutex mutex; 316f8ac7e034803a1c873bf156c012fede6d2640097Christian König 317f8ac7e034803a1c873bf156c012fede6d2640097Christian König struct { 318f8ac7e034803a1c873bf156c012fede6d2640097Christian König struct vl_compositor_state *cstate; 319f8ac7e034803a1c873bf156c012fede6d2640097Christian König VdpOutputSurface surface; 320f8ac7e034803a1c873bf156c012fede6d2640097Christian König } delayed_rendering; 321f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton} vlVdpDevice; 322f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton 3233299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensentypedef struct 3243299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen{ 325725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen vlVdpDevice *device; 32665fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen Drawable drawable; 32765fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen} vlVdpPresentationQueueTarget; 32865fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen 32965fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensentypedef struct 33065fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen{ 33165fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen vlVdpDevice *device; 332cae77aa80b3629a147ce3ae4526646014efae595Christian König Drawable drawable; 33332c4381d4a0479b3d9bfe305ce701be6b5ac8e18Christian König struct vl_compositor_state cstate; 33465fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen} vlVdpPresentationQueue; 33565fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen 33665fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensentypedef struct 33765fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen{ 33849f4aff75ce781fb71383a5ffe44e51e34ff1bf3Christian König vlVdpDevice *device; 33932c4381d4a0479b3d9bfe305ce701be6b5ac8e18Christian König struct vl_compositor_state cstate; 340bbb48e983d232d67031250127b3c2acfc086369eChristian König 341bbb48e983d232d67031250127b3c2acfc086369eChristian König struct { 342bbb48e983d232d67031250127b3c2acfc086369eChristian König bool supported, enabled; 343553e8203879d163e6fe2f3a8f6b80a44749514c1Christian König unsigned level; 344bbb48e983d232d67031250127b3c2acfc086369eChristian König struct vl_median_filter *filter; 345bbb48e983d232d67031250127b3c2acfc086369eChristian König } noise_reduction; 346bbb48e983d232d67031250127b3c2acfc086369eChristian König 34736cd50152c76d5a5b34202887af68aab09854d5dChristian König struct { 34836cd50152c76d5a5b34202887af68aab09854d5dChristian König bool supported, enabled; 34936cd50152c76d5a5b34202887af68aab09854d5dChristian König float value; 35036cd50152c76d5a5b34202887af68aab09854d5dChristian König struct vl_matrix_filter *filter; 35136cd50152c76d5a5b34202887af68aab09854d5dChristian König } sharpness; 35236cd50152c76d5a5b34202887af68aab09854d5dChristian König 35389b9863252272a7109d468738517a0d68376a909Maarten Lankhorst unsigned video_width, video_height; 35489b9863252272a7109d468738517a0d68376a909Maarten Lankhorst enum pipe_video_chroma_format chroma_format; 35514766f820069ca987543918bce96410c481e5d20Christian König unsigned max_layers, skip_chroma_deint; 35636cd50152c76d5a5b34202887af68aab09854d5dChristian König float luma_key_min, luma_key_max; 35714766f820069ca987543918bce96410c481e5d20Christian König 35814766f820069ca987543918bce96410c481e5d20Christian König bool custom_csc; 35914766f820069ca987543918bce96410c481e5d20Christian König vl_csc_matrix csc; 36065fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen} vlVdpVideoMixer; 36165fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen 36265fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensentypedef struct 36365fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen{ 36465fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen vlVdpDevice *device; 3654a4811ea178fb158339c1fbfacc58a9ab97058f8Christian König struct pipe_video_buffer templat, *video_buffer; 3663299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen} vlVdpSurface; 3673299997bcc5a672617095adb560b3834dced39a6Thomas Balling Sørensen 3683aa087fa048dfda37ab247e2dbe4a809c2fac948Christian Königtypedef struct 3693aa087fa048dfda37ab247e2dbe4a809c2fac948Christian König{ 3703aa087fa048dfda37ab247e2dbe4a809c2fac948Christian König vlVdpDevice *device; 3713aa087fa048dfda37ab247e2dbe4a809c2fac948Christian König struct pipe_sampler_view *sampler_view; 3723aa087fa048dfda37ab247e2dbe4a809c2fac948Christian König} vlVdpBitmapSurface; 3733aa087fa048dfda37ab247e2dbe4a809c2fac948Christian König 374e911dbb56374edf9f3b7c4cec0cf9a22738bb198Emeric Grangetypedef uint64_t vlVdpTime; 375e911dbb56374edf9f3b7c4cec0cf9a22738bb198Emeric Grange 376725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensentypedef struct 377725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen{ 378e911dbb56374edf9f3b7c4cec0cf9a22738bb198Emeric Grange vlVdpTime timestamp; 37965fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen vlVdpDevice *device; 380b98b58c76a2560b1db603e62f96c6641cedfa8e8Christian König struct pipe_surface *surface; 381b98b58c76a2560b1db603e62f96c6641cedfa8e8Christian König struct pipe_sampler_view *sampler_view; 382e911dbb56374edf9f3b7c4cec0cf9a22738bb198Emeric Grange struct pipe_fence_handle *fence; 38332c4381d4a0479b3d9bfe305ce701be6b5ac8e18Christian König struct vl_compositor_state cstate; 3849e51c200a78b8be8be195e0d82d69e952afd1343Christian König struct u_rect dirty_area; 38565fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen} vlVdpOutputSurface; 38665fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen 38765fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensentypedef struct 38865fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen{ 38949f4aff75ce781fb71383a5ffe44e51e34ff1bf3Christian König vlVdpDevice *device; 3902471acfc4c051d480861265011fa5e77fad02887Christian König struct pipe_video_decoder *decoder; 391725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen} vlVdpDecoder; 392725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling Sørensen 393f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Mantontypedef uint32_t vlHandle; 394f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton 395f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Mantonboolean vlCreateHTAB(void); 396f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Mantonvoid vlDestroyHTAB(void); 397f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonvlHandle vlAddDataHTAB(void *data); 398f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Mantonvoid* vlGetDataHTAB(vlHandle handle); 3995aa26412432dbdb3b1677d6d2f74bba010f443aeChristian Königvoid vlRemoveDataHTAB(vlHandle handle); 4005aa26412432dbdb3b1677d6d2f74bba010f443aeChristian König 401f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Mantonboolean vlGetFuncFTAB(VdpFuncId function_id, void **func); 402f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes Manton 40365fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen/* Public functions */ 40465fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpDeviceCreateX11 vdp_imp_device_create_x11; 40565fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpPresentationQueueTargetCreateX11 vlVdpPresentationQueueTargetCreateX11; 40665fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen 407379f46c8ac50b9b76455b1e62d6d541182339e96Christian Königvoid vlVdpDefaultSamplerViewTemplate(struct pipe_sampler_view *templ, struct pipe_resource *res); 408379f46c8ac50b9b76455b1e62d6d541182339e96Christian König 409f8ac7e034803a1c873bf156c012fede6d2640097Christian König/* Delayed rendering funtionality */ 410f8ac7e034803a1c873bf156c012fede6d2640097Christian Königvoid vlVdpResolveDelayedRendering(vlVdpDevice *dev, struct pipe_surface *surface, struct u_rect *dirty_area); 411f8ac7e034803a1c873bf156c012fede6d2640097Christian Königvoid vlVdpSave4DelayedRendering(vlVdpDevice *dev, VdpOutputSurface surface, struct vl_compositor_state *cstate); 412f8ac7e034803a1c873bf156c012fede6d2640097Christian König 41365fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen/* Internal function pointers */ 414c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpGetErrorString vlVdpGetErrorString; 415f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpDeviceDestroy vlVdpDeviceDestroy; 416f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpGetProcAddress vlVdpGetProcAddress; 417f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpGetApiVersion vlVdpGetApiVersion; 418f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpGetInformationString vlVdpGetInformationString; 419f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpVideoSurfaceQueryCapabilities vlVdpVideoSurfaceQueryCapabilities; 420f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities; 421f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpDecoderQueryCapabilities vlVdpDecoderQueryCapabilities; 422f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpOutputSurfaceQueryCapabilities vlVdpOutputSurfaceQueryCapabilities; 423f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpOutputSurfaceQueryGetPutBitsNativeCapabilities vlVdpOutputSurfaceQueryGetPutBitsNativeCapabilities; 42438bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfaceQueryPutBitsIndexedCapabilities vlVdpOutputSurfaceQueryPutBitsIndexedCapabilities; 425f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpOutputSurfaceQueryPutBitsYCbCrCapabilities vlVdpOutputSurfaceQueryPutBitsYCbCrCapabilities; 426f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpBitmapSurfaceQueryCapabilities vlVdpBitmapSurfaceQueryCapabilities; 427f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpVideoMixerQueryFeatureSupport vlVdpVideoMixerQueryFeatureSupport; 428f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpVideoMixerQueryParameterSupport vlVdpVideoMixerQueryParameterSupport; 429f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpVideoMixerQueryParameterValueRange vlVdpVideoMixerQueryParameterValueRange; 430f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpVideoMixerQueryAttributeSupport vlVdpVideoMixerQueryAttributeSupport; 431f3e34ba6fba76870b1c91a27adb706d1b87aeec8Younes MantonVdpVideoMixerQueryAttributeValueRange vlVdpVideoMixerQueryAttributeValueRange; 4323299997bcc5a672617095adb560b3834dced39a6Thomas Balling SørensenVdpVideoSurfaceCreate vlVdpVideoSurfaceCreate; 4333299997bcc5a672617095adb560b3834dced39a6Thomas Balling SørensenVdpVideoSurfaceDestroy vlVdpVideoSurfaceDestroy; 4343299997bcc5a672617095adb560b3834dced39a6Thomas Balling SørensenVdpVideoSurfaceGetParameters vlVdpVideoSurfaceGetParameters; 4353299997bcc5a672617095adb560b3834dced39a6Thomas Balling SørensenVdpVideoSurfaceGetBitsYCbCr vlVdpVideoSurfaceGetBitsYCbCr; 4363299997bcc5a672617095adb560b3834dced39a6Thomas Balling SørensenVdpVideoSurfacePutBitsYCbCr vlVdpVideoSurfacePutBitsYCbCr; 4377f6af4909241de7197e774dee988f574cb576a3bChristian Königvoid vlVdpVideoSurfaceClear(vlVdpSurface *vlsurf); 438725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling SørensenVdpDecoderCreate vlVdpDecoderCreate; 439725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling SørensenVdpDecoderDestroy vlVdpDecoderDestroy; 44038bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpDecoderGetParameters vlVdpDecoderGetParameters; 441725e4ada3062c80623abf51477dfdc73fe294f3fThomas Balling SørensenVdpDecoderRender vlVdpDecoderRender; 442c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpOutputSurfaceCreate vlVdpOutputSurfaceCreate; 44338bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfaceDestroy vlVdpOutputSurfaceDestroy; 44438bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfaceGetParameters vlVdpOutputSurfaceGetParameters; 44538bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfaceGetBitsNative vlVdpOutputSurfaceGetBitsNative; 44638bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfacePutBitsNative vlVdpOutputSurfacePutBitsNative; 44738bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfacePutBitsIndexed vlVdpOutputSurfacePutBitsIndexed; 44838bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfacePutBitsYCbCr vlVdpOutputSurfacePutBitsYCbCr; 44938bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfaceRenderOutputSurface vlVdpOutputSurfaceRenderOutputSurface; 45038bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpOutputSurfaceRenderBitmapSurface vlVdpOutputSurfaceRenderBitmapSurface; 451c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpBitmapSurfaceCreate vlVdpBitmapSurfaceCreate; 452c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpBitmapSurfaceDestroy vlVdpBitmapSurfaceDestroy; 453c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpBitmapSurfaceGetParameters vlVdpBitmapSurfaceGetParameters; 454c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpBitmapSurfacePutBitsNative vlVdpBitmapSurfacePutBitsNative; 455c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueTargetDestroy vlVdpPresentationQueueTargetDestroy; 456c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueCreate vlVdpPresentationQueueCreate; 457c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueDestroy vlVdpPresentationQueueDestroy; 458c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueSetBackgroundColor vlVdpPresentationQueueSetBackgroundColor; 459c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueGetBackgroundColor vlVdpPresentationQueueGetBackgroundColor; 460c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueGetTime vlVdpPresentationQueueGetTime; 461c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueDisplay vlVdpPresentationQueueDisplay; 462c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueBlockUntilSurfaceIdle vlVdpPresentationQueueBlockUntilSurfaceIdle; 463c5b6f7d16699cfda696538890a9c1744847bb434Thomas Balling SørensenVdpPresentationQueueQuerySurfaceStatus vlVdpPresentationQueueQuerySurfaceStatus; 46465fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpPreemptionCallback vlVdpPreemptionCallback; 46565fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpPreemptionCallbackRegister vlVdpPreemptionCallbackRegister; 46665fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpVideoMixerSetFeatureEnables vlVdpVideoMixerSetFeatureEnables; 46765fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpVideoMixerCreate vlVdpVideoMixerCreate; 46865fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpVideoMixerRender vlVdpVideoMixerRender; 46965fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpVideoMixerSetAttributeValues vlVdpVideoMixerSetAttributeValues; 47038bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpVideoMixerGetFeatureSupport vlVdpVideoMixerGetFeatureSupport; 47138bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpVideoMixerGetFeatureEnables vlVdpVideoMixerGetFeatureEnables; 47238bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpVideoMixerGetParameterValues vlVdpVideoMixerGetParameterValues; 47338bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpVideoMixerGetAttributeValues vlVdpVideoMixerGetAttributeValues; 47438bd8131776879e9dc90d06848657756a4a13a66Christian KönigVdpVideoMixerDestroy vlVdpVideoMixerDestroy; 47565fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling SørensenVdpGenerateCSCMatrix vlVdpGenerateCSCMatrix; 47665fe0866aec7b5608419f6d184cb1fa4fe1dc45aThomas Balling Sørensen 47708f3a7cf7e9133f50adf33f800aa3696c909347fChristian König#define VDPAU_OUT 0 47808f3a7cf7e9133f50adf33f800aa3696c909347fChristian König#define VDPAU_ERR 1 47908f3a7cf7e9133f50adf33f800aa3696c909347fChristian König#define VDPAU_WARN 2 48008f3a7cf7e9133f50adf33f800aa3696c909347fChristian König#define VDPAU_TRACE 3 48108f3a7cf7e9133f50adf33f800aa3696c909347fChristian König 48208f3a7cf7e9133f50adf33f800aa3696c909347fChristian Königstatic inline void VDPAU_MSG(unsigned int level, const char *fmt, ...) 48308f3a7cf7e9133f50adf33f800aa3696c909347fChristian König{ 48408f3a7cf7e9133f50adf33f800aa3696c909347fChristian König static int debug_level = -1; 48508f3a7cf7e9133f50adf33f800aa3696c909347fChristian König 48608f3a7cf7e9133f50adf33f800aa3696c909347fChristian König if (debug_level == -1) { 48708f3a7cf7e9133f50adf33f800aa3696c909347fChristian König debug_level = MAX2(debug_get_num_option("VDPAU_DEBUG", 0), 0); 48808f3a7cf7e9133f50adf33f800aa3696c909347fChristian König } 48908f3a7cf7e9133f50adf33f800aa3696c909347fChristian König 49008f3a7cf7e9133f50adf33f800aa3696c909347fChristian König if (level <= debug_level) { 49108f3a7cf7e9133f50adf33f800aa3696c909347fChristian König va_list ap; 49208f3a7cf7e9133f50adf33f800aa3696c909347fChristian König va_start(ap, fmt); 49308f3a7cf7e9133f50adf33f800aa3696c909347fChristian König _debug_vprintf(fmt, ap); 49408f3a7cf7e9133f50adf33f800aa3696c909347fChristian König va_end(ap); 49508f3a7cf7e9133f50adf33f800aa3696c909347fChristian König } 49608f3a7cf7e9133f50adf33f800aa3696c909347fChristian König} 49708f3a7cf7e9133f50adf33f800aa3696c909347fChristian König 498c24bc6f8684abee8c9a1b263334cd7a8506657b1Emeric Grange#endif /* VDPAU_PRIVATE_H */ 499