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