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