diff options
author | Christian König <deathsimple@vodafone.de> | 2011-09-01 13:54:08 +0200 |
---|---|---|
committer | Christian König <deathsimple@vodafone.de> | 2011-09-01 19:20:47 +0200 |
commit | 49e24d3b8c0129e11fcc94b6e74dc2589d64c882 (patch) | |
tree | b440487c8fbad0d7ce075ff12a95af6395a011a4 /src/gallium/state_trackers/vdpau/vdpau_private.h | |
parent | 41fa51a49a7c5d39d7ab273e44652efd0a5c8153 (diff) | |
download | external_mesa3d-49e24d3b8c0129e11fcc94b6e74dc2589d64c882.zip external_mesa3d-49e24d3b8c0129e11fcc94b6e74dc2589d64c882.tar.gz external_mesa3d-49e24d3b8c0129e11fcc94b6e74dc2589d64c882.tar.bz2 |
st/vdpau: Implement VdpOutputSurfacePutBitsIndexed and VdpOutputSurfaceRenderOutputSurface
This gets mplayers menu overlay working.
Signed-off-by: Christian König <deathsimple@vodafone.de>
Diffstat (limited to 'src/gallium/state_trackers/vdpau/vdpau_private.h')
-rw-r--r-- | src/gallium/state_trackers/vdpau/vdpau_private.h | 52 |
1 files changed, 49 insertions, 3 deletions
diff --git a/src/gallium/state_trackers/vdpau/vdpau_private.h b/src/gallium/state_trackers/vdpau/vdpau_private.h index 263e254..705b57e 100644 --- a/src/gallium/state_trackers/vdpau/vdpau_private.h +++ b/src/gallium/state_trackers/vdpau/vdpau_private.h @@ -95,14 +95,14 @@ FormatYCBCRToPipe(VdpYCbCrFormat vdpau_format) case VDP_YCBCR_FORMAT_YUYV: return PIPE_FORMAT_YUYV; case VDP_YCBCR_FORMAT_Y8U8V8A8: /* Not defined in p_format.h */ - return 0; + return PIPE_FORMAT_NONE; case VDP_YCBCR_FORMAT_V8U8Y8A8: return PIPE_FORMAT_VUYA; default: assert(0); } - return -1; + return PIPE_FORMAT_NONE; } static inline VdpYCbCrFormat @@ -146,7 +146,7 @@ FormatRGBAToPipe(VdpRGBAFormat vdpau_format) assert(0); } - return -1; + return PIPE_FORMAT_NONE; } static inline VdpRGBAFormat @@ -170,6 +170,38 @@ PipeToFormatRGBA(enum pipe_format p_format) return -1; } +static inline enum pipe_format +FormatIndexedToPipe(VdpRGBAFormat vdpau_format) +{ + switch (vdpau_format) { + case VDP_INDEXED_FORMAT_A4I4: + return PIPE_FORMAT_A4R4_UNORM; + case VDP_INDEXED_FORMAT_I4A4: + return PIPE_FORMAT_R4A4_UNORM; + case VDP_INDEXED_FORMAT_A8I8: + return PIPE_FORMAT_A8R8_UNORM; + case VDP_INDEXED_FORMAT_I8A8: + return PIPE_FORMAT_R8A8_UNORM; + default: + assert(0); + } + + return PIPE_FORMAT_NONE; +} + +static inline enum pipe_format +FormatColorTableToPipe(VdpColorTableFormat vdpau_format) +{ + switch(vdpau_format) { + case VDP_COLOR_TABLE_FORMAT_B8G8R8X8: + return PIPE_FORMAT_B8G8R8X8_UNORM; + default: + assert(0); + } + return PIPE_FORMAT_NONE; +} + + static inline enum pipe_video_profile ProfileToPipe(VdpDecoderProfile vdpau_profile) { @@ -213,10 +245,24 @@ PipeToProfile(enum pipe_video_profile p_profile) } } +static inline struct pipe_video_rect * +RectToPipe(const VdpRect *src, struct pipe_video_rect *dst) +{ + if (src) { + dst->x = MIN2(src->x1, src->x0); + dst->y = MIN2(src->y1, src->y0); + dst->w = abs(src->x1 - src->x0); + dst->h = abs(src->y1 - src->y0); + return dst; + } + return NULL; +} + typedef struct { struct vl_screen *vscreen; struct vl_context *context; + struct vl_compositor compositor; } vlVdpDevice; typedef struct |