vdpau_private.h revision e06a09ac37c1ab55326922abc314fe84e3ac5824
18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/************************************************************************** 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Copyright 2010 Younes Manton & Thomas Balling Sørensen. 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * All Rights Reserved. 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * Permission is hereby granted, free of charge, to any person obtaining a 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * copy of this software and associated documentation files (the 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * "Software"), to deal in the Software without restriction, including 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * without limitation the rights to use, copy, modify, merge, publish, 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * distribute, sub license, and/or sell copies of the Software, and to 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * permit persons to whom the Software is furnished to do so, subject to 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * the following conditions: 138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * The above copyright notice and this permission notice (including the 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * next paragraph) shall be included in all copies or substantial portions 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * of the Software. 178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR 228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project * 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project **************************************************************************/ 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#ifndef VDPAU_PRIVATE_H 298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define VDPAU_PRIVATE_H 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <assert.h> 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <vdpau/vdpau.h> 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <vdpau/vdpau_x11.h> 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <pipe/p_compiler.h> 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <pipe/p_video_context.h> 388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <util/u_debug.h> 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <vl_winsys.h> 428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define INFORMATION G3DVL VDPAU Driver Shared Library version VER_MAJOR.VER_MINOR 448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define QUOTEME(x) #x 458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define TOSTRING(x) QUOTEME(x) 468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define INFORMATION_STRING TOSTRING(INFORMATION) 478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define VL_HANDLES 488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define VL_NUM_DECODE_BUFFERS 4 498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline enum pipe_video_chroma_format 518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectChromaToPipe(VdpChromaType vdpau_type) 528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project switch (vdpau_type) { 548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_CHROMA_TYPE_420: 558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_VIDEO_CHROMA_FORMAT_420; 568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_CHROMA_TYPE_422: 578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_VIDEO_CHROMA_FORMAT_422; 588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_CHROMA_TYPE_444: 598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_VIDEO_CHROMA_FORMAT_444; 608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project default: 618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project assert(0); 628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return -1; 658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline VdpChromaType 688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectPipeToChroma(enum pipe_video_chroma_format pipe_type) 698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project switch (pipe_type) { 718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case PIPE_VIDEO_CHROMA_FORMAT_420: 728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return VDP_CHROMA_TYPE_420; 738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case PIPE_VIDEO_CHROMA_FORMAT_422: 748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return VDP_CHROMA_TYPE_422; 758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case PIPE_VIDEO_CHROMA_FORMAT_444: 768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return VDP_CHROMA_TYPE_444; 778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project default: 788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project assert(0); 798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return -1; 828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline enum pipe_format 868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectFormatToPipe(VdpYCbCrFormat vdpau_format) 878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project switch (vdpau_format) { 898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_YCBCR_FORMAT_NV12: 908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_FORMAT_NV12; 918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_YCBCR_FORMAT_YV12: 928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_FORMAT_YV12; 938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_YCBCR_FORMAT_UYVY: 9497d795c955f8d261a0a5294d49ea06d5a473ed03David 'Digit' Turner return PIPE_FORMAT_UYVY; 958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_YCBCR_FORMAT_YUYV: 968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_FORMAT_YUYV; 978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_YCBCR_FORMAT_Y8U8V8A8: /* Not defined in p_format.h */ 988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return 0; 998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_YCBCR_FORMAT_V8U8Y8A8: 1008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_FORMAT_VUYA; 1018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project default: 1028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project assert(0); 1038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 1048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 10597d795c955f8d261a0a5294d49ea06d5a473ed03David 'Digit' Turner return -1; 10697d795c955f8d261a0a5294d49ea06d5a473ed03David 'Digit' Turner} 1078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline enum pipe_format 1098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectFormatRGBAToPipe(VdpRGBAFormat vdpau_format) 1108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project switch (vdpau_format) { 1128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_RGBA_FORMAT_A8: 1138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_FORMAT_A8_UNORM; 1148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_RGBA_FORMAT_B10G10R10A2: 1158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_FORMAT_B10G10R10A2_UNORM; 1168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_RGBA_FORMAT_B8G8R8A8: 1178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_FORMAT_B8G8R8A8_UNORM; 1188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_RGBA_FORMAT_R10G10B10A2: 1198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_FORMAT_R10G10B10A2_UNORM; 1208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_RGBA_FORMAT_R8G8B8A8: 1218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_FORMAT_R8G8B8A8_UNORM; 1228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project default: 1238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project assert(0); 1248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 1258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return -1; 1278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 1288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline VdpYCbCrFormat 1308b870f0a99f484e4357b2664471eab12dadec327David 'Digit' TurnerPipeToFormat(enum pipe_format p_format) 1317e61121b1801fdc63722a402bb9839746b63ddf9soledad penades{ 1328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project switch (p_format) { 1338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case PIPE_FORMAT_NV12: 1348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return VDP_YCBCR_FORMAT_NV12; 1358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case PIPE_FORMAT_YV12: 1368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return VDP_YCBCR_FORMAT_YV12; 1378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case PIPE_FORMAT_UYVY: 1388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return VDP_YCBCR_FORMAT_UYVY; 1398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case PIPE_FORMAT_YUYV: 1408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return VDP_YCBCR_FORMAT_YUYV; 1418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project //case PIPE_FORMAT_YUVA: 1428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project // return VDP_YCBCR_FORMAT_Y8U8V8A8; 1438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case PIPE_FORMAT_VUYA: 1448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return VDP_YCBCR_FORMAT_V8U8Y8A8; 1458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project default: 1468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project assert(0); 1478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 1488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return -1; 1508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 1518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline enum pipe_video_profile 1538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectProfileToPipe(VdpDecoderProfile vdpau_profile) 1548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project switch (vdpau_profile) { 1568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_DECODER_PROFILE_MPEG1: 1578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_VIDEO_PROFILE_MPEG1; 1588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_DECODER_PROFILE_MPEG2_SIMPLE: 1598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_VIDEO_PROFILE_MPEG2_SIMPLE; 1608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_DECODER_PROFILE_MPEG2_MAIN: 1618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_VIDEO_PROFILE_MPEG2_MAIN; 1628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_DECODER_PROFILE_H264_BASELINE: 1638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_VIDEO_PROFILE_MPEG4_AVC_BASELINE; 1648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_DECODER_PROFILE_H264_MAIN: /* Not defined in p_format.h */ 1658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_VIDEO_PROFILE_MPEG4_AVC_MAIN; 1668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project case VDP_DECODER_PROFILE_H264_HIGH: 1678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_VIDEO_PROFILE_MPEG4_AVC_HIGH; 1688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project default: 1698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return PIPE_VIDEO_PROFILE_UNKNOWN; 1708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 1718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 1728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct 1748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project Display *display; 1768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project int screen; 1778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct vl_screen *vscreen; 1788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct vl_context *context; 1798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} vlVdpDevice; 1808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct 1828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project vlVdpDevice *device; 1848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project Drawable drawable; 1858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} vlVdpPresentationQueueTarget; 1868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 1878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct 1888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 1898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project vlVdpDevice *device; 19062ffc423bdf158d98ee2902916963c4fde7fbe47Maciek Molerus Drawable drawable; 19162ffc423bdf158d98ee2902916963c4fde7fbe47Maciek Molerus struct pipe_video_compositor *compositor; 19262ffc423bdf158d98ee2902916963c4fde7fbe47Maciek Molerus} vlVdpPresentationQueue; 19362ffc423bdf158d98ee2902916963c4fde7fbe47Maciek Molerus 19462ffc423bdf158d98ee2902916963c4fde7fbe47Maciek Molerustypedef struct 19562ffc423bdf158d98ee2902916963c4fde7fbe47Maciek Molerus{ 19662ffc423bdf158d98ee2902916963c4fde7fbe47Maciek Molerus vlVdpDevice *device; 19762ffc423bdf158d98ee2902916963c4fde7fbe47Maciek Molerus struct pipe_video_compositor *compositor; 19862ffc423bdf158d98ee2902916963c4fde7fbe47Maciek Molerus} vlVdpVideoMixer; 19962ffc423bdf158d98ee2902916963c4fde7fbe47Maciek Molerus 20062ffc423bdf158d98ee2902916963c4fde7fbe47Maciek Molerustypedef struct 20162ffc423bdf158d98ee2902916963c4fde7fbe47Maciek Molerus{ 20262ffc423bdf158d98ee2902916963c4fde7fbe47Maciek Molerus vlVdpDevice *device; 20362ffc423bdf158d98ee2902916963c4fde7fbe47Maciek Molerus struct pipe_video_buffer *video_buffer; 2048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} vlVdpSurface; 2058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct 2078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 2088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project vlVdpDevice *device; 2098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct pipe_surface *surface; 2108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct pipe_sampler_view *sampler_view; 2118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} vlVdpOutputSurface; 2128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef struct 2148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 2158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project vlVdpDevice *device; 2168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct pipe_video_decoder *decoder; 2178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project struct pipe_video_decode_buffer *buffer[VL_NUM_DECODE_BUFFERS]; 2188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project unsigned cur_buffer; 2198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} vlVdpDecoder; 2208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projecttypedef uint32_t vlHandle; 2228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectboolean vlCreateHTAB(void); 2248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid vlDestroyHTAB(void); 2258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectvlHandle vlAddDataHTAB(void *data); 2268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid* vlGetDataHTAB(vlHandle handle); 2278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectvoid vlRemoveDataHTAB(vlHandle handle); 2288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectboolean vlGetFuncFTAB(VdpFuncId function_id, void **func); 2308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Public functions */ 2328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpDeviceCreateX11 vdp_imp_device_create_x11; 2338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpPresentationQueueTargetCreateX11 vlVdpPresentationQueueTargetCreateX11; 2348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project/* Internal function pointers */ 2368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpGetErrorString vlVdpGetErrorString; 2378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpDeviceDestroy vlVdpDeviceDestroy; 2388b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpGetProcAddress vlVdpGetProcAddress; 2398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpGetApiVersion vlVdpGetApiVersion; 2408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpGetInformationString vlVdpGetInformationString; 2418b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoSurfaceQueryCapabilities vlVdpVideoSurfaceQueryCapabilities; 2428b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities; 2438b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpDecoderQueryCapabilities vlVdpDecoderQueryCapabilities; 2448b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpOutputSurfaceQueryCapabilities vlVdpOutputSurfaceQueryCapabilities; 2458b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpOutputSurfaceQueryGetPutBitsNativeCapabilities vlVdpOutputSurfaceQueryGetPutBitsNativeCapabilities; 2468b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpOutputSurfaceQueryPutBitsIndexedCapabilities vlVdpOutputSurfaceQueryPutBitsIndexedCapabilities; 2478b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpOutputSurfaceQueryPutBitsYCbCrCapabilities vlVdpOutputSurfaceQueryPutBitsYCbCrCapabilities; 2488b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpBitmapSurfaceQueryCapabilities vlVdpBitmapSurfaceQueryCapabilities; 2498b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoMixerQueryFeatureSupport vlVdpVideoMixerQueryFeatureSupport; 2508b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoMixerQueryParameterSupport vlVdpVideoMixerQueryParameterSupport; 2518b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoMixerQueryParameterValueRange vlVdpVideoMixerQueryParameterValueRange; 2528b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoMixerQueryAttributeSupport vlVdpVideoMixerQueryAttributeSupport; 2538b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoMixerQueryAttributeValueRange vlVdpVideoMixerQueryAttributeValueRange; 2548b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoSurfaceCreate vlVdpVideoSurfaceCreate; 2558b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoSurfaceDestroy vlVdpVideoSurfaceDestroy; 2568b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoSurfaceGetParameters vlVdpVideoSurfaceGetParameters; 2578b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoSurfaceGetBitsYCbCr vlVdpVideoSurfaceGetBitsYCbCr; 2588b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoSurfacePutBitsYCbCr vlVdpVideoSurfacePutBitsYCbCr; 2598b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpDecoderCreate vlVdpDecoderCreate; 2608b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpDecoderDestroy vlVdpDecoderDestroy; 2618b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpDecoderGetParameters vlVdpDecoderGetParameters; 2628b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpDecoderRender vlVdpDecoderRender; 2638b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpOutputSurfaceCreate vlVdpOutputSurfaceCreate; 2648b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpOutputSurfaceDestroy vlVdpOutputSurfaceDestroy; 2658b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpOutputSurfaceGetParameters vlVdpOutputSurfaceGetParameters; 2668b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpOutputSurfaceGetBitsNative vlVdpOutputSurfaceGetBitsNative; 2678b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpOutputSurfacePutBitsNative vlVdpOutputSurfacePutBitsNative; 2688b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpOutputSurfacePutBitsIndexed vlVdpOutputSurfacePutBitsIndexed; 2698b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpOutputSurfacePutBitsYCbCr vlVdpOutputSurfacePutBitsYCbCr; 2708b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpOutputSurfaceRenderOutputSurface vlVdpOutputSurfaceRenderOutputSurface; 2718b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpOutputSurfaceRenderBitmapSurface vlVdpOutputSurfaceRenderBitmapSurface; 2728b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpBitmapSurfaceCreate vlVdpBitmapSurfaceCreate; 2738b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpBitmapSurfaceDestroy vlVdpBitmapSurfaceDestroy; 2748b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpBitmapSurfaceGetParameters vlVdpBitmapSurfaceGetParameters; 2758b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpBitmapSurfacePutBitsNative vlVdpBitmapSurfacePutBitsNative; 2768b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpPresentationQueueTargetDestroy vlVdpPresentationQueueTargetDestroy; 2778b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpPresentationQueueCreate vlVdpPresentationQueueCreate; 2788b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpPresentationQueueDestroy vlVdpPresentationQueueDestroy; 2798b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpPresentationQueueSetBackgroundColor vlVdpPresentationQueueSetBackgroundColor; 2808b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpPresentationQueueGetBackgroundColor vlVdpPresentationQueueGetBackgroundColor; 2818b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpPresentationQueueGetTime vlVdpPresentationQueueGetTime; 2828b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpPresentationQueueDisplay vlVdpPresentationQueueDisplay; 2838b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpPresentationQueueBlockUntilSurfaceIdle vlVdpPresentationQueueBlockUntilSurfaceIdle; 2848b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpPresentationQueueQuerySurfaceStatus vlVdpPresentationQueueQuerySurfaceStatus; 2858b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpPreemptionCallback vlVdpPreemptionCallback; 2868b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpPreemptionCallbackRegister vlVdpPreemptionCallbackRegister; 2878b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoMixerSetFeatureEnables vlVdpVideoMixerSetFeatureEnables; 2888b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoMixerCreate vlVdpVideoMixerCreate; 2898b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoMixerRender vlVdpVideoMixerRender; 2908b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoMixerSetAttributeValues vlVdpVideoMixerSetAttributeValues; 2918b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoMixerGetFeatureSupport vlVdpVideoMixerGetFeatureSupport; 2928b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoMixerGetFeatureEnables vlVdpVideoMixerGetFeatureEnables; 2938b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoMixerGetParameterValues vlVdpVideoMixerGetParameterValues; 2948b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoMixerGetAttributeValues vlVdpVideoMixerGetAttributeValues; 2958b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpVideoMixerDestroy vlVdpVideoMixerDestroy; 2968b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source ProjectVdpGenerateCSCMatrix vlVdpGenerateCSCMatrix; 2978b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 2988b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define VDPAU_OUT 0 2998b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define VDPAU_ERR 1 3008b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define VDPAU_WARN 2 3018b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#define VDPAU_TRACE 3 3028b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3038b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectstatic inline void VDPAU_MSG(unsigned int level, const char *fmt, ...) 3048b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project{ 3058b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project static int debug_level = -1; 3068b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3078b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (debug_level == -1) { 3088b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project debug_level = MAX2(debug_get_num_option("VDPAU_DEBUG", 0), 0); 3098b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 3108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (level <= debug_level) { 3128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project va_list ap; 3138b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project va_start(ap, fmt); 3148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project _debug_vprintf(fmt, ap); 3158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project va_end(ap); 3168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project } 3178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 3188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif // VDPAU_PRIVATE_H 3208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project