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