vdpau_private.h revision ea78480029450c019287c2a94d7c42a6a1d12dc3
1ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao/**************************************************************************
2ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao *
3ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * Copyright 2010 Younes Manton & Thomas Balling Sørensen.
4ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * All Rights Reserved.
5ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao *
6ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * Permission is hereby granted, free of charge, to any person obtaining a
7ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * copy of this software and associated documentation files (the
8ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * "Software"), to deal in the Software without restriction, including
9ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * without limitation the rights to use, copy, modify, merge, publish,
10ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * distribute, sub license, and/or sell copies of the Software, and to
11ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * permit persons to whom the Software is furnished to do so, subject to
12ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * the following conditions:
13ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao *
14ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * The above copyright notice and this permission notice (including the
15ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * next paragraph) shall be included in all copies or substantial portions
16ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * of the Software.
17ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao *
18ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao *
26ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao **************************************************************************/
27ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
28ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#ifndef VDPAU_PRIVATE_H
29ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#define VDPAU_PRIVATE_H
30ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
31ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#include <assert.h>
32ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
33ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#include <vdpau/vdpau.h>
34ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#include <vdpau/vdpau_x11.h>
35ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
36ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#include <pipe/p_compiler.h>
37ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#include <pipe/p_video_decoder.h>
38ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
39ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#include <util/u_debug.h>
40ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#include <vl/vl_compositor.h>
41ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
42ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#include <vl_winsys.h>
43ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
44ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#define INFORMATION G3DVL VDPAU Driver Shared Library version VER_MAJOR.VER_MINOR
45ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#define QUOTEME(x) #x
46ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#define TOSTRING(x) QUOTEME(x)
47ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#define INFORMATION_STRING TOSTRING(INFORMATION)
48ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#define VL_HANDLES
49ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao#define VL_NUM_DECODE_BUFFERS 4
50ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
51ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostatic inline enum pipe_video_chroma_format
52ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoChromaToPipe(VdpChromaType vdpau_type)
53ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{
54ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   switch (vdpau_type) {
55ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_CHROMA_TYPE_420:
56ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_VIDEO_CHROMA_FORMAT_420;
57ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_CHROMA_TYPE_422:
58ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_VIDEO_CHROMA_FORMAT_422;
59ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_CHROMA_TYPE_444:
60ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_VIDEO_CHROMA_FORMAT_444;
61ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      default:
62ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         assert(0);
63ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   }
64ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
65ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   return -1;
66ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
67ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
68ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostatic inline VdpChromaType
69ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoPipeToChroma(enum pipe_video_chroma_format pipe_type)
70ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{
71ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   switch (pipe_type) {
72ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case PIPE_VIDEO_CHROMA_FORMAT_420:
73ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return VDP_CHROMA_TYPE_420;
74ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case PIPE_VIDEO_CHROMA_FORMAT_422:
75ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return VDP_CHROMA_TYPE_422;
76ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case PIPE_VIDEO_CHROMA_FORMAT_444:
77ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return VDP_CHROMA_TYPE_444;
78ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      default:
79ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         assert(0);
80ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   }
81ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
82ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   return -1;
83ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
84ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
85ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
86ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostatic inline enum pipe_format
87ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoFormatToPipe(VdpYCbCrFormat vdpau_format)
88ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{
89ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   switch (vdpau_format) {
90ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_YCBCR_FORMAT_NV12:
91ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_FORMAT_NV12;
92ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_YCBCR_FORMAT_YV12:
93ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_FORMAT_YV12;
94ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_YCBCR_FORMAT_UYVY:
95ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_FORMAT_UYVY;
96ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_YCBCR_FORMAT_YUYV:
97ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_FORMAT_YUYV;
98ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_YCBCR_FORMAT_Y8U8V8A8: /* Not defined in p_format.h */
99ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return 0;
100ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_YCBCR_FORMAT_V8U8Y8A8:
101ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao	     return PIPE_FORMAT_VUYA;
102ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      default:
103ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         assert(0);
104ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   }
105ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
106ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   return -1;
107ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
108ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
109ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostatic inline enum pipe_format
110ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoFormatRGBAToPipe(VdpRGBAFormat vdpau_format)
111ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{
112ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   switch (vdpau_format) {
113ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_RGBA_FORMAT_A8:
114ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_FORMAT_A8_UNORM;
115ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_RGBA_FORMAT_B10G10R10A2:
116ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_FORMAT_B10G10R10A2_UNORM;
117ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_RGBA_FORMAT_B8G8R8A8:
118ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_FORMAT_B8G8R8A8_UNORM;
119ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_RGBA_FORMAT_R10G10B10A2:
120ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_FORMAT_R10G10B10A2_UNORM;
121ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_RGBA_FORMAT_R8G8B8A8:
122ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_FORMAT_R8G8B8A8_UNORM;
123ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      default:
124ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         assert(0);
125ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   }
126ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
127ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   return -1;
128ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
129ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
130ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostatic inline VdpYCbCrFormat
131ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoPipeToFormat(enum pipe_format p_format)
132ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{
133ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   switch (p_format) {
134ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case PIPE_FORMAT_NV12:
135ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return VDP_YCBCR_FORMAT_NV12;
136ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case PIPE_FORMAT_YV12:
137ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return VDP_YCBCR_FORMAT_YV12;
138ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case PIPE_FORMAT_UYVY:
139ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return VDP_YCBCR_FORMAT_UYVY;
140ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case PIPE_FORMAT_YUYV:
141ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return VDP_YCBCR_FORMAT_YUYV;
142ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      //case PIPE_FORMAT_YUVA:
143ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao        // return VDP_YCBCR_FORMAT_Y8U8V8A8;
144ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case PIPE_FORMAT_VUYA:
145ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao	 return VDP_YCBCR_FORMAT_V8U8Y8A8;
146ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      default:
147ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         assert(0);
148ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   }
149ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
150ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   return -1;
151ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
152ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
153ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaostatic inline enum pipe_video_profile
154ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoProfileToPipe(VdpDecoderProfile vdpau_profile)
155ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{
156ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   switch (vdpau_profile) {
157ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_DECODER_PROFILE_MPEG1:
158ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_VIDEO_PROFILE_MPEG1;
159ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_DECODER_PROFILE_MPEG2_SIMPLE:
160ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_VIDEO_PROFILE_MPEG2_SIMPLE;
161ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_DECODER_PROFILE_MPEG2_MAIN:
162ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_VIDEO_PROFILE_MPEG2_MAIN;
163ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_DECODER_PROFILE_H264_BASELINE:
164ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_VIDEO_PROFILE_MPEG4_AVC_BASELINE;
165ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_DECODER_PROFILE_H264_MAIN: /* Not defined in p_format.h */
166ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN;
167ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      case VDP_DECODER_PROFILE_H264_HIGH:
168ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao	     return PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH;
169ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao      default:
170ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao         return PIPE_VIDEO_PROFILE_UNKNOWN;
171ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   }
172ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao}
173ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
174ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotypedef struct
175ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{
176ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   Display *display;
177ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   int screen;
178ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   struct vl_screen *vscreen;
179ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   struct vl_context *context;
180ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} vlVdpDevice;
181ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
182ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotypedef struct
183ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{
184ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   vlVdpDevice *device;
185ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   Drawable drawable;
186ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} vlVdpPresentationQueueTarget;
187ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
188ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotypedef struct
189ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{
190ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   vlVdpDevice *device;
191ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   Drawable drawable;
192ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   struct vl_compositor compositor;
193ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} vlVdpPresentationQueue;
194ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
195ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotypedef struct
196ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{
197ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   vlVdpDevice *device;
198ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   struct vl_compositor compositor;
199ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} vlVdpVideoMixer;
200ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
201ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotypedef struct
202ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{
203ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   vlVdpDevice *device;
204ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   struct pipe_video_buffer *video_buffer;
205ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} vlVdpSurface;
206ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
207ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotypedef struct
208ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{
209ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   vlVdpDevice *device;
210ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   struct pipe_surface *surface;
211ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   struct pipe_sampler_view *sampler_view;
212ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} vlVdpOutputSurface;
213ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
214ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotypedef struct
215ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao{
216ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   vlVdpDevice *device;
217ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   struct pipe_video_decoder *decoder;
218ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   struct pipe_video_decode_buffer *buffer[VL_NUM_DECODE_BUFFERS];
219ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao   unsigned cur_buffer;
220ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao} vlVdpDecoder;
221ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
222ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaotypedef uint32_t vlHandle;
223ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
224ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoboolean vlCreateHTAB(void);
225ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid vlDestroyHTAB(void);
226ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaovlHandle vlAddDataHTAB(void *data);
227ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid* vlGetDataHTAB(vlHandle handle);
228ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaovoid vlRemoveDataHTAB(vlHandle handle);
229ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
230ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liaoboolean vlGetFuncFTAB(VdpFuncId function_id, void **func);
231ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
232ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao/* Public functions */
233ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpDeviceCreateX11 vdp_imp_device_create_x11;
234ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpPresentationQueueTargetCreateX11 vlVdpPresentationQueueTargetCreateX11;
235ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao
236ea285162342df160e7860e26528bc7110bc6c0cdShih-wei Liao/* Internal function pointers */
237ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpGetErrorString vlVdpGetErrorString;
238ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpDeviceDestroy vlVdpDeviceDestroy;
239ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpGetProcAddress vlVdpGetProcAddress;
240ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpGetApiVersion vlVdpGetApiVersion;
241ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpGetInformationString vlVdpGetInformationString;
242ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpVideoSurfaceQueryCapabilities vlVdpVideoSurfaceQueryCapabilities;
243ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities;
244ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpDecoderQueryCapabilities vlVdpDecoderQueryCapabilities;
245ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpOutputSurfaceQueryCapabilities vlVdpOutputSurfaceQueryCapabilities;
246ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpOutputSurfaceQueryGetPutBitsNativeCapabilities vlVdpOutputSurfaceQueryGetPutBitsNativeCapabilities;
247ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpOutputSurfaceQueryPutBitsIndexedCapabilities vlVdpOutputSurfaceQueryPutBitsIndexedCapabilities;
248ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpOutputSurfaceQueryPutBitsYCbCrCapabilities vlVdpOutputSurfaceQueryPutBitsYCbCrCapabilities;
249ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpBitmapSurfaceQueryCapabilities vlVdpBitmapSurfaceQueryCapabilities;
250ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpVideoMixerQueryFeatureSupport vlVdpVideoMixerQueryFeatureSupport;
251ea285162342df160e7860e26528bc7110bc6c0cdShih-wei LiaoVdpVideoMixerQueryParameterSupport vlVdpVideoMixerQueryParameterSupport;
252VdpVideoMixerQueryParameterValueRange vlVdpVideoMixerQueryParameterValueRange;
253VdpVideoMixerQueryAttributeSupport vlVdpVideoMixerQueryAttributeSupport;
254VdpVideoMixerQueryAttributeValueRange vlVdpVideoMixerQueryAttributeValueRange;
255VdpVideoSurfaceCreate vlVdpVideoSurfaceCreate;
256VdpVideoSurfaceDestroy vlVdpVideoSurfaceDestroy;
257VdpVideoSurfaceGetParameters vlVdpVideoSurfaceGetParameters;
258VdpVideoSurfaceGetBitsYCbCr vlVdpVideoSurfaceGetBitsYCbCr;
259VdpVideoSurfacePutBitsYCbCr vlVdpVideoSurfacePutBitsYCbCr;
260VdpDecoderCreate vlVdpDecoderCreate;
261VdpDecoderDestroy vlVdpDecoderDestroy;
262VdpDecoderGetParameters vlVdpDecoderGetParameters;
263VdpDecoderRender vlVdpDecoderRender;
264VdpOutputSurfaceCreate vlVdpOutputSurfaceCreate;
265VdpOutputSurfaceDestroy vlVdpOutputSurfaceDestroy;
266VdpOutputSurfaceGetParameters vlVdpOutputSurfaceGetParameters;
267VdpOutputSurfaceGetBitsNative vlVdpOutputSurfaceGetBitsNative;
268VdpOutputSurfacePutBitsNative vlVdpOutputSurfacePutBitsNative;
269VdpOutputSurfacePutBitsIndexed vlVdpOutputSurfacePutBitsIndexed;
270VdpOutputSurfacePutBitsYCbCr vlVdpOutputSurfacePutBitsYCbCr;
271VdpOutputSurfaceRenderOutputSurface vlVdpOutputSurfaceRenderOutputSurface;
272VdpOutputSurfaceRenderBitmapSurface vlVdpOutputSurfaceRenderBitmapSurface;
273VdpBitmapSurfaceCreate vlVdpBitmapSurfaceCreate;
274VdpBitmapSurfaceDestroy vlVdpBitmapSurfaceDestroy;
275VdpBitmapSurfaceGetParameters vlVdpBitmapSurfaceGetParameters;
276VdpBitmapSurfacePutBitsNative vlVdpBitmapSurfacePutBitsNative;
277VdpPresentationQueueTargetDestroy vlVdpPresentationQueueTargetDestroy;
278VdpPresentationQueueCreate vlVdpPresentationQueueCreate;
279VdpPresentationQueueDestroy vlVdpPresentationQueueDestroy;
280VdpPresentationQueueSetBackgroundColor vlVdpPresentationQueueSetBackgroundColor;
281VdpPresentationQueueGetBackgroundColor vlVdpPresentationQueueGetBackgroundColor;
282VdpPresentationQueueGetTime vlVdpPresentationQueueGetTime;
283VdpPresentationQueueDisplay vlVdpPresentationQueueDisplay;
284VdpPresentationQueueBlockUntilSurfaceIdle vlVdpPresentationQueueBlockUntilSurfaceIdle;
285VdpPresentationQueueQuerySurfaceStatus vlVdpPresentationQueueQuerySurfaceStatus;
286VdpPreemptionCallback vlVdpPreemptionCallback;
287VdpPreemptionCallbackRegister vlVdpPreemptionCallbackRegister;
288VdpVideoMixerSetFeatureEnables vlVdpVideoMixerSetFeatureEnables;
289VdpVideoMixerCreate vlVdpVideoMixerCreate;
290VdpVideoMixerRender vlVdpVideoMixerRender;
291VdpVideoMixerSetAttributeValues vlVdpVideoMixerSetAttributeValues;
292VdpVideoMixerGetFeatureSupport vlVdpVideoMixerGetFeatureSupport;
293VdpVideoMixerGetFeatureEnables vlVdpVideoMixerGetFeatureEnables;
294VdpVideoMixerGetParameterValues vlVdpVideoMixerGetParameterValues;
295VdpVideoMixerGetAttributeValues vlVdpVideoMixerGetAttributeValues;
296VdpVideoMixerDestroy vlVdpVideoMixerDestroy;
297VdpGenerateCSCMatrix vlVdpGenerateCSCMatrix;
298
299#define VDPAU_OUT   0
300#define VDPAU_ERR   1
301#define VDPAU_WARN  2
302#define VDPAU_TRACE 3
303
304static inline void VDPAU_MSG(unsigned int level, const char *fmt, ...)
305{
306   static int debug_level = -1;
307
308   if (debug_level == -1) {
309      debug_level = MAX2(debug_get_num_option("VDPAU_DEBUG", 0), 0);
310   }
311
312   if (level <= debug_level) {
313      va_list ap;
314      va_start(ap, fmt);
315      _debug_vprintf(fmt, ap);
316      va_end(ap);
317   }
318}
319
320#endif // VDPAU_PRIVATE_H
321