1 /**************************************************************************
3 * Copyright 2010 Younes Manton.
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
14 * The above copyright notice and this permission notice (including the
15 * next paragraph) shall be included in all copies or substantial portions
18 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
21 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
22 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26 **************************************************************************/
28 #ifndef VDPAU_PRIVATE_H
29 #define VDPAU_PRIVATE_H
32 #include <vdpau/vdpau.h>
33 #include <vdpau/vdpau_x11.h>
34 #include <pipe/p_compiler.h>
35 #include <pipe/p_video_context.h>
36 #include <vl_winsys.h>
39 #define INFORMATION G3DVL VDPAU Driver Shared Library version VER_MAJOR.VER_MINOR
41 #define TOSTRING(x) QUOTEME(x)
42 #define INFORMATION_STRING TOSTRING(INFORMATION)
45 static enum pipe_video_chroma_format
TypeToPipe(VdpChromaType vdpau_type
)
48 case VDP_CHROMA_TYPE_420
:
49 return PIPE_VIDEO_CHROMA_FORMAT_420
;
50 case VDP_CHROMA_TYPE_422
:
51 return PIPE_VIDEO_CHROMA_FORMAT_422
;
52 case VDP_CHROMA_TYPE_444
:
53 return PIPE_VIDEO_CHROMA_FORMAT_444
;
61 static VdpChromaType
PipeToType(enum pipe_video_chroma_format pipe_type
)
64 case PIPE_VIDEO_CHROMA_FORMAT_420
:
65 return VDP_CHROMA_TYPE_420
;
66 case PIPE_VIDEO_CHROMA_FORMAT_422
:
67 return VDP_CHROMA_TYPE_422
;
68 case PIPE_VIDEO_CHROMA_FORMAT_444
:
69 return VDP_CHROMA_TYPE_444
;
78 static enum pipe_format
FormatToPipe(VdpYCbCrFormat vdpau_format
)
80 switch (vdpau_format
) {
81 case VDP_YCBCR_FORMAT_NV12
:
82 return PIPE_FORMAT_NV12
;
83 case VDP_YCBCR_FORMAT_YV12
:
84 return PIPE_FORMAT_YV12
;
85 case VDP_YCBCR_FORMAT_UYVY
:
86 return PIPE_FORMAT_UYVY
;
87 case VDP_YCBCR_FORMAT_YUYV
:
88 return PIPE_FORMAT_YUYV
;
89 case VDP_YCBCR_FORMAT_Y8U8V8A8
: /* Not defined in p_format.h */
91 case VDP_YCBCR_FORMAT_V8U8Y8A8
:
92 return PIPE_FORMAT_VUYA
;
100 static enum pipe_format
FormatRGBAToPipe(VdpRGBAFormat vdpau_format
)
102 switch (vdpau_format
) {
103 case VDP_RGBA_FORMAT_A8
:
104 return PIPE_FORMAT_A8_UNORM
;
105 case VDP_RGBA_FORMAT_B10G10R10A2
:
106 return PIPE_FORMAT_B10G10R10A2_UNORM
;
107 case VDP_RGBA_FORMAT_B8G8R8A8
:
108 return PIPE_FORMAT_B8G8R8A8_UNORM
;
109 case VDP_RGBA_FORMAT_R10G10B10A2
:
110 return PIPE_FORMAT_R10G10B10A2_UNORM
;
111 case VDP_RGBA_FORMAT_R8G8B8A8
:
112 return PIPE_FORMAT_R8G8B8A8_UNORM
;
120 static VdpYCbCrFormat
PipeToFormat(enum pipe_format p_format
)
123 case PIPE_FORMAT_NV12
:
124 return VDP_YCBCR_FORMAT_NV12
;
125 case PIPE_FORMAT_YV12
:
126 return VDP_YCBCR_FORMAT_YV12
;
127 case PIPE_FORMAT_UYVY
:
128 return VDP_YCBCR_FORMAT_UYVY
;
129 case PIPE_FORMAT_YUYV
:
130 return VDP_YCBCR_FORMAT_YUYV
;
131 //case PIPE_FORMAT_YUVA:
132 // return VDP_YCBCR_FORMAT_Y8U8V8A8;
133 case PIPE_FORMAT_VUYA
:
134 return VDP_YCBCR_FORMAT_V8U8Y8A8
;
142 static enum pipe_video_profile
ProfileToPipe(VdpDecoderProfile vdpau_profile
)
144 switch (vdpau_profile
) {
145 case VDP_DECODER_PROFILE_MPEG1
:
146 return PIPE_VIDEO_PROFILE_MPEG1
;
147 case VDP_DECODER_PROFILE_MPEG2_SIMPLE
:
148 return PIPE_VIDEO_PROFILE_MPEG2_SIMPLE
;
149 case VDP_DECODER_PROFILE_MPEG2_MAIN
:
150 return PIPE_VIDEO_PROFILE_MPEG2_MAIN
;
151 case VDP_DECODER_PROFILE_H264_BASELINE
:
152 return PIPE_VIDEO_PROFILE_MPEG4_AVC_BASELINE
;
153 case VDP_DECODER_PROFILE_H264_MAIN
: /* Not defined in p_format.h */
154 return PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN
;
155 case VDP_DECODER_PROFILE_H264_HIGH
:
156 return PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH
;
158 PIPE_VIDEO_PROFILE_UNKNOWN
;
174 } vlVdpPresentationQueueTarget
;
180 } vlVdpPresentationQueue
;
193 struct pipe_surface
*psurface
;
194 enum pipe_format format
;
195 enum pipe_video_chroma_format chroma_format
;
204 enum pipe_format format
;
205 } vlVdpOutputSurface
;
210 struct vl_screen
*vlscreen
;
211 struct vl_context
*vctx
;
212 enum pipe_video_chroma_format chroma_format
;
213 enum pipe_video_profile profile
;
216 typedef uint32_t vlHandle
;
218 boolean
vlCreateHTAB(void);
219 void vlDestroyHTAB(void);
220 vlHandle
vlAddDataHTAB(void *data
);
221 void* vlGetDataHTAB(vlHandle handle
);
222 boolean
vlGetFuncFTAB(VdpFuncId function_id
, void **func
);
224 /* Public functions */
225 VdpDeviceCreateX11 vdp_imp_device_create_x11
;
226 VdpPresentationQueueTargetCreateX11 vlVdpPresentationQueueTargetCreateX11
;
228 /* Internal function pointers */
229 VdpGetErrorString vlVdpGetErrorString
;
230 VdpDeviceDestroy vlVdpDeviceDestroy
;
231 VdpGetProcAddress vlVdpGetProcAddress
;
232 VdpGetApiVersion vlVdpGetApiVersion
;
233 VdpGetInformationString vlVdpGetInformationString
;
234 VdpVideoSurfaceQueryCapabilities vlVdpVideoSurfaceQueryCapabilities
;
235 VdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities
;
236 VdpDecoderQueryCapabilities vlVdpDecoderQueryCapabilities
;
237 VdpOutputSurfaceQueryCapabilities vlVdpOutputSurfaceQueryCapabilities
;
238 VdpOutputSurfaceQueryGetPutBitsNativeCapabilities vlVdpOutputSurfaceQueryGetPutBitsNativeCapabilities
;
239 VdpOutputSurfaceQueryPutBitsYCbCrCapabilities vlVdpOutputSurfaceQueryPutBitsYCbCrCapabilities
;
240 VdpBitmapSurfaceQueryCapabilities vlVdpBitmapSurfaceQueryCapabilities
;
241 VdpVideoMixerQueryFeatureSupport vlVdpVideoMixerQueryFeatureSupport
;
242 VdpVideoMixerQueryParameterSupport vlVdpVideoMixerQueryParameterSupport
;
243 VdpVideoMixerQueryParameterValueRange vlVdpVideoMixerQueryParameterValueRange
;
244 VdpVideoMixerQueryAttributeSupport vlVdpVideoMixerQueryAttributeSupport
;
245 VdpVideoMixerQueryAttributeValueRange vlVdpVideoMixerQueryAttributeValueRange
;
246 VdpVideoSurfaceCreate vlVdpVideoSurfaceCreate
;
247 VdpVideoSurfaceDestroy vlVdpVideoSurfaceDestroy
;
248 VdpVideoSurfaceGetParameters vlVdpVideoSurfaceGetParameters
;
249 VdpVideoSurfaceGetBitsYCbCr vlVdpVideoSurfaceGetBitsYCbCr
;
250 VdpVideoSurfacePutBitsYCbCr vlVdpVideoSurfacePutBitsYCbCr
;
251 VdpDecoderCreate vlVdpDecoderCreate
;
252 VdpDecoderDestroy vlVdpDecoderDestroy
;
253 VdpDecoderRender vlVdpDecoderRender
;
254 VdpOutputSurfaceCreate vlVdpOutputSurfaceCreate
;
255 VdpBitmapSurfaceCreate vlVdpBitmapSurfaceCreate
;
256 VdpBitmapSurfaceDestroy vlVdpBitmapSurfaceDestroy
;
257 VdpBitmapSurfaceGetParameters vlVdpBitmapSurfaceGetParameters
;
258 VdpBitmapSurfacePutBitsNative vlVdpBitmapSurfacePutBitsNative
;
259 VdpPresentationQueueTargetDestroy vlVdpPresentationQueueTargetDestroy
;
260 VdpPresentationQueueCreate vlVdpPresentationQueueCreate
;
261 VdpPresentationQueueDestroy vlVdpPresentationQueueDestroy
;
262 VdpPresentationQueueSetBackgroundColor vlVdpPresentationQueueSetBackgroundColor
;
263 VdpPresentationQueueGetBackgroundColor vlVdpPresentationQueueGetBackgroundColor
;
264 VdpPresentationQueueGetTime vlVdpPresentationQueueGetTime
;
265 VdpPresentationQueueDisplay vlVdpPresentationQueueDisplay
;
266 VdpPresentationQueueBlockUntilSurfaceIdle vlVdpPresentationQueueBlockUntilSurfaceIdle
;
267 VdpPresentationQueueQuerySurfaceStatus vlVdpPresentationQueueQuerySurfaceStatus
;
268 VdpPreemptionCallback vlVdpPreemptionCallback
;
269 VdpPreemptionCallbackRegister vlVdpPreemptionCallbackRegister
;
270 VdpVideoMixerSetFeatureEnables vlVdpVideoMixerSetFeatureEnables
;
271 VdpVideoMixerCreate vlVdpVideoMixerCreate
;
272 VdpVideoMixerRender vlVdpVideoMixerRender
;
273 VdpVideoMixerSetAttributeValues vlVdpVideoMixerSetAttributeValues
;
274 VdpGenerateCSCMatrix vlVdpGenerateCSCMatrix
;
277 #endif // VDPAU_PRIVATE_H