vl: implemented a few functions and made stubs to get mplayer running
This commit is contained in:
@@ -31,6 +31,7 @@
|
|||||||
#include <util/u_inlines.h>
|
#include <util/u_inlines.h>
|
||||||
#include <util/u_memory.h>
|
#include <util/u_memory.h>
|
||||||
#include <util/u_keymap.h>
|
#include <util/u_keymap.h>
|
||||||
|
#include <util/u_draw.h>
|
||||||
#include <util/u_sampler.h>
|
#include <util/u_sampler.h>
|
||||||
#include <tgsi/tgsi_ureg.h>
|
#include <tgsi/tgsi_ureg.h>
|
||||||
#include "vl_csc.h"
|
#include "vl_csc.h"
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
#include <util/u_memory.h>
|
#include <util/u_memory.h>
|
||||||
#include <util/u_keymap.h>
|
#include <util/u_keymap.h>
|
||||||
#include <util/u_sampler.h>
|
#include <util/u_sampler.h>
|
||||||
|
#include <util/u_draw.h>
|
||||||
#include <tgsi/tgsi_ureg.h>
|
#include <tgsi/tgsi_ureg.h>
|
||||||
|
|
||||||
#define DEFAULT_BUF_ALIGNMENT 1
|
#define DEFAULT_BUF_ALIGNMENT 1
|
||||||
|
|||||||
@@ -20,7 +20,9 @@ C_SOURCES = htab.c \
|
|||||||
presentation.c \
|
presentation.c \
|
||||||
bitmap.c \
|
bitmap.c \
|
||||||
mpeg2_bitstream_parser.c \
|
mpeg2_bitstream_parser.c \
|
||||||
output.c
|
output.c \
|
||||||
|
preemption.c \
|
||||||
|
mixer.c
|
||||||
|
|
||||||
|
|
||||||
include ../../Makefile.template
|
include ../../Makefile.template
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ VdpStatus
|
|||||||
vlVdpDecoderDestroy (VdpDecoder decoder
|
vlVdpDecoderDestroy (VdpDecoder decoder
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
debug_printf("[VDPAU] Destroying decoder\n");
|
||||||
vlVdpDecoder *vldecoder;
|
vlVdpDecoder *vldecoder;
|
||||||
|
|
||||||
vldecoder = (vlVdpDecoder *)vlGetDataHTAB(decoder);
|
vldecoder = (vlVdpDecoder *)vlGetDataHTAB(decoder);
|
||||||
@@ -105,8 +106,11 @@ vlVdpDecoderDestroy (VdpDecoder decoder
|
|||||||
return VDP_STATUS_INVALID_HANDLE;
|
return VDP_STATUS_INVALID_HANDLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vldecoder->vctx->vscreen)
|
if (vldecoder->vctx)
|
||||||
vl_screen_destroy(vldecoder->vctx->vscreen);
|
{
|
||||||
|
if (vldecoder->vctx->vscreen)
|
||||||
|
vl_screen_destroy(vldecoder->vctx->vscreen);
|
||||||
|
}
|
||||||
|
|
||||||
if (vldecoder->vctx)
|
if (vldecoder->vctx)
|
||||||
vl_video_destroy(vldecoder->vctx);
|
vl_video_destroy(vldecoder->vctx);
|
||||||
@@ -125,6 +129,8 @@ vlVdpCreateSurfaceTarget (vlVdpDecoder *vldecoder,
|
|||||||
struct pipe_resource *surf_tex;
|
struct pipe_resource *surf_tex;
|
||||||
struct pipe_video_context *vpipe;
|
struct pipe_video_context *vpipe;
|
||||||
|
|
||||||
|
debug_printf("[VDPAU] Creating surface\n");
|
||||||
|
|
||||||
if(!(vldecoder && vlsurf))
|
if(!(vldecoder && vlsurf))
|
||||||
return VDP_STATUS_INVALID_POINTER;
|
return VDP_STATUS_INVALID_POINTER;
|
||||||
|
|
||||||
@@ -185,6 +191,7 @@ vlVdpDecoderRenderMpeg2 (vlVdpDecoder *vldecoder,
|
|||||||
struct pipe_mpeg12_macroblock *pipe_macroblocks;
|
struct pipe_mpeg12_macroblock *pipe_macroblocks;
|
||||||
VdpStatus ret;
|
VdpStatus ret;
|
||||||
|
|
||||||
|
debug_printf("[VDPAU] Decoding MPEG2\n");
|
||||||
|
|
||||||
vpipe = vldecoder->vctx->vpipe;
|
vpipe = vldecoder->vctx->vpipe;
|
||||||
t_vdp_surf = vlsurf;
|
t_vdp_surf = vlsurf;
|
||||||
@@ -221,7 +228,7 @@ vlVdpDecoderRenderMpeg2 (vlVdpDecoder *vldecoder,
|
|||||||
}
|
}
|
||||||
|
|
||||||
vpipe->set_decode_target(vpipe,t_surf);
|
vpipe->set_decode_target(vpipe,t_surf);
|
||||||
vpipe->decode_macroblocks(vpipe, p_surf, f_surf, num_macroblocks, (struct pipe_macroblock *)pipe_macroblocks, NULL);
|
//vpipe->decode_macroblocks(vpipe, p_surf, f_surf, num_macroblocks, (struct pipe_macroblock *)pipe_macroblocks, NULL);
|
||||||
|
|
||||||
skip_frame:
|
skip_frame:
|
||||||
return ret;
|
return ret;
|
||||||
@@ -283,3 +290,16 @@ vlVdpDecoderRender (VdpDecoder decoder,
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
VdpStatus
|
||||||
|
vlVdpGenerateCSCMatrix(
|
||||||
|
VdpProcamp *procamp,
|
||||||
|
VdpColorStandard standard,
|
||||||
|
VdpCSCMatrix *csc_matrix)
|
||||||
|
{
|
||||||
|
debug_printf("[VDPAU] Generating CSCMatrix\n");
|
||||||
|
if (!(csc_matrix && procamp))
|
||||||
|
return VDP_STATUS_INVALID_POINTER;
|
||||||
|
|
||||||
|
return VDP_STATUS_OK;
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* Copyright 2010 Younes Manton.
|
* Copyright 2010 Younes Manton og Thomas Balling Sørensen.
|
||||||
* All Rights Reserved.
|
* All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
@@ -25,21 +25,18 @@
|
|||||||
*
|
*
|
||||||
**************************************************************************/
|
**************************************************************************/
|
||||||
|
|
||||||
#include <vdpau/vdpau_x11.h>
|
|
||||||
#include <pipe/p_compiler.h>
|
#include <pipe/p_compiler.h>
|
||||||
#include <vl_winsys.h>
|
#include <vl_winsys.h>
|
||||||
#include <util/u_memory.h>
|
#include <util/u_memory.h>
|
||||||
#include <util/u_debug.h>
|
#include <util/u_debug.h>
|
||||||
#include "vdpau_private.h"
|
#include "vdpau_private.h"
|
||||||
|
|
||||||
VdpDeviceCreateX11 vdp_imp_device_create_x11;
|
|
||||||
|
|
||||||
PUBLIC VdpStatus
|
PUBLIC VdpStatus
|
||||||
vdp_imp_device_create_x11(Display *display, int screen, VdpDevice *device, VdpGetProcAddress **get_proc_address)
|
vdp_imp_device_create_x11(Display *display, int screen, VdpDevice *device, VdpGetProcAddress **get_proc_address)
|
||||||
{
|
{
|
||||||
VdpStatus ret;
|
VdpStatus ret;
|
||||||
vlVdpDevice *dev = NULL;
|
vlVdpDevice *dev = NULL;
|
||||||
struct vl_screen *vlscreen = NULL;
|
|
||||||
|
|
||||||
if (!(display && device && get_proc_address))
|
if (!(display && device && get_proc_address))
|
||||||
return VDP_STATUS_INVALID_POINTER;
|
return VDP_STATUS_INVALID_POINTER;
|
||||||
@@ -64,7 +61,6 @@ vdp_imp_device_create_x11(Display *display, int screen, VdpDevice *device, VdpGe
|
|||||||
}
|
}
|
||||||
|
|
||||||
*get_proc_address = &vlVdpGetProcAddress;
|
*get_proc_address = &vlVdpGetProcAddress;
|
||||||
|
|
||||||
debug_printf("[VDPAU] Device created succesfully\n");
|
debug_printf("[VDPAU] Device created succesfully\n");
|
||||||
|
|
||||||
return VDP_STATUS_OK;
|
return VDP_STATUS_OK;
|
||||||
@@ -77,9 +73,46 @@ no_htab:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PUBLIC VdpStatus
|
||||||
|
vlVdpPresentationQueueTargetCreateX11(VdpDevice device, Drawable drawable,VdpPresentationQueueTarget *target)
|
||||||
|
{
|
||||||
|
VdpStatus ret;
|
||||||
|
vlVdpPresentationQueueTarget *pqt = NULL;
|
||||||
|
|
||||||
|
debug_printf("[VDPAU] Creating PresentationQueueTarget\n");
|
||||||
|
|
||||||
|
if (!drawable)
|
||||||
|
return VDP_STATUS_INVALID_HANDLE;
|
||||||
|
|
||||||
|
vlVdpDevice *dev = vlGetDataHTAB(device);
|
||||||
|
if (!dev)
|
||||||
|
return VDP_STATUS_INVALID_HANDLE;
|
||||||
|
|
||||||
|
pqt = CALLOC(1, sizeof(vlVdpPresentationQueue));
|
||||||
|
if (!pqt)
|
||||||
|
return VDP_STATUS_RESOURCES;
|
||||||
|
|
||||||
|
pqt->device = dev;
|
||||||
|
pqt->drawable = drawable;
|
||||||
|
|
||||||
|
*target = vlAddDataHTAB(pqt);
|
||||||
|
if (*target == 0) {
|
||||||
|
ret = VDP_STATUS_ERROR;
|
||||||
|
goto no_handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return VDP_STATUS_OK;
|
||||||
|
no_handle:
|
||||||
|
FREE(dev);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
VdpStatus
|
VdpStatus
|
||||||
vlVdpDeviceDestroy(VdpDevice device)
|
vlVdpDeviceDestroy(VdpDevice device)
|
||||||
{
|
{
|
||||||
|
debug_printf("[VDPAU] Destroying destroy\n");
|
||||||
|
|
||||||
vlVdpDevice *dev = vlGetDataHTAB(device);
|
vlVdpDevice *dev = vlGetDataHTAB(device);
|
||||||
if (!dev)
|
if (!dev)
|
||||||
return VDP_STATUS_INVALID_HANDLE;
|
return VDP_STATUS_INVALID_HANDLE;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* Copyright 2010 Younes Manton.
|
* Copyright 2010 Younes Manton & Thomas Balling Sørensen.
|
||||||
* All Rights Reserved.
|
* All Rights Reserved.
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
@@ -33,10 +33,10 @@ static void* ftab[67] =
|
|||||||
&vlVdpGetErrorString, /* VDP_FUNC_ID_GET_ERROR_STRING */
|
&vlVdpGetErrorString, /* VDP_FUNC_ID_GET_ERROR_STRING */
|
||||||
&vlVdpGetProcAddress, /* VDP_FUNC_ID_GET_PROC_ADDRESS */
|
&vlVdpGetProcAddress, /* VDP_FUNC_ID_GET_PROC_ADDRESS */
|
||||||
&vlVdpGetApiVersion, /* VDP_FUNC_ID_GET_API_VERSION */
|
&vlVdpGetApiVersion, /* VDP_FUNC_ID_GET_API_VERSION */
|
||||||
0,
|
0x555, /* DUMMY */
|
||||||
&vlVdpGetInformationString, /* VDP_FUNC_ID_GET_INFORMATION_STRING */
|
&vlVdpGetInformationString, /* VDP_FUNC_ID_GET_INFORMATION_STRING */
|
||||||
&vlVdpDeviceDestroy, /* VDP_FUNC_ID_DEVICE_DESTROY */
|
&vlVdpDeviceDestroy, /* VDP_FUNC_ID_DEVICE_DESTROY */
|
||||||
0, /* VDP_FUNC_ID_GENERATE_CSC_MATRIX */
|
&vlVdpGenerateCSCMatrix, /* VDP_FUNC_ID_GENERATE_CSC_MATRIX */
|
||||||
&vlVdpVideoSurfaceQueryCapabilities, /* VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES */
|
&vlVdpVideoSurfaceQueryCapabilities, /* VDP_FUNC_ID_VIDEO_SURFACE_QUERY_CAPABILITIES */
|
||||||
&vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities, /* VDP_FUNC_ID_VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES */
|
&vlVdpVideoSurfaceQueryGetPutBitsYCbCrCapabilities, /* VDP_FUNC_ID_VIDEO_SURFACE_QUERY_GET_PUT_BITS_Y_CB_CR_CAPABILITIES */
|
||||||
&vlVdpVideoSurfaceCreate, /* VDP_FUNC_ID_VIDEO_SURFACE_CREATE */
|
&vlVdpVideoSurfaceCreate, /* VDP_FUNC_ID_VIDEO_SURFACE_CREATE */
|
||||||
@@ -46,62 +46,62 @@ static void* ftab[67] =
|
|||||||
&vlVdpVideoSurfacePutBitsYCbCr, /* VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR */
|
&vlVdpVideoSurfacePutBitsYCbCr, /* VDP_FUNC_ID_VIDEO_SURFACE_PUT_BITS_Y_CB_CR */
|
||||||
&vlVdpOutputSurfaceQueryCapabilities, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_CAPABILITIES */
|
&vlVdpOutputSurfaceQueryCapabilities, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_CAPABILITIES */
|
||||||
&vlVdpOutputSurfaceQueryGetPutBitsNativeCapabilities, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES */
|
&vlVdpOutputSurfaceQueryGetPutBitsNativeCapabilities, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_GET_PUT_BITS_NATIVE_CAPABILITIES */
|
||||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_INDEXED_CAPABILITIES */
|
0x2, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_INDEXED_CAPABILITIES */
|
||||||
&vlVdpOutputSurfaceQueryPutBitsYCbCrCapabilities, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_Y_CB_CR_CAPABILITIES */
|
&vlVdpOutputSurfaceQueryPutBitsYCbCrCapabilities, /* VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_Y_CB_CR_CAPABILITIES */
|
||||||
&vlVdpOutputSurfaceCreate, /* VDP_FUNC_ID_OUTPUT_SURFACE_CREATE */
|
&vlVdpOutputSurfaceCreate, /* VDP_FUNC_ID_OUTPUT_SURFACE_CREATE */
|
||||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_DESTROY */
|
0x3, /* VDP_FUNC_ID_OUTPUT_SURFACE_DESTROY */
|
||||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_GET_PARAMETERS */
|
0x4, /* VDP_FUNC_ID_OUTPUT_SURFACE_GET_PARAMETERS */
|
||||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_GET_BITS_NATIVE */
|
0x5, /* VDP_FUNC_ID_OUTPUT_SURFACE_GET_BITS_NATIVE */
|
||||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_NATIVE */
|
0x6, /* VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_NATIVE */
|
||||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_INDEXED */
|
0x7, /* VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_INDEXED */
|
||||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_Y_CB_CR */
|
0x8, /* VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_Y_CB_CR */
|
||||||
&vlVdpBitmapSurfaceQueryCapabilities, /* VDP_FUNC_ID_BITMAP_SURFACE_QUERY_CAPABILITIES */
|
&vlVdpBitmapSurfaceQueryCapabilities, /* VDP_FUNC_ID_BITMAP_SURFACE_QUERY_CAPABILITIES */
|
||||||
&vlVdpBitmapSurfaceCreate, /* VDP_FUNC_ID_BITMAP_SURFACE_CREATE */
|
&vlVdpBitmapSurfaceCreate, /* VDP_FUNC_ID_BITMAP_SURFACE_CREATE */
|
||||||
&vlVdpBitmapSurfaceDestroy, /* VDP_FUNC_ID_BITMAP_SURFACE_DESTROY */
|
&vlVdpBitmapSurfaceDestroy, /* VDP_FUNC_ID_BITMAP_SURFACE_DESTROY */
|
||||||
&vlVdpBitmapSurfaceGetParameters, /* VDP_FUNC_ID_BITMAP_SURFACE_GET_PARAMETERS */
|
&vlVdpBitmapSurfaceGetParameters, /* VDP_FUNC_ID_BITMAP_SURFACE_GET_PARAMETERS */
|
||||||
&vlVdpBitmapSurfacePutBitsNative, /* VDP_FUNC_ID_BITMAP_SURFACE_PUT_BITS_NATIVE */
|
&vlVdpBitmapSurfacePutBitsNative, /* VDP_FUNC_ID_BITMAP_SURFACE_PUT_BITS_NATIVE */
|
||||||
0,
|
0x55, /* DUMMY */
|
||||||
0,
|
0x55, /* DUMMY */
|
||||||
0,
|
0x55, /* DUMMY */
|
||||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_OUTPUT_SURFACE */
|
0x9, /* VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_OUTPUT_SURFACE */
|
||||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE */
|
0x10, /* VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_BITMAP_SURFACE */
|
||||||
0, /* VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_VIDEO_SURFACE_LUMA */
|
0x11, /* VDP_FUNC_ID_OUTPUT_SURFACE_RENDER_VIDEO_SURFACE_LUMA */
|
||||||
&vlVdpDecoderQueryCapabilities, /* VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES */
|
&vlVdpDecoderQueryCapabilities, /* VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES */
|
||||||
&vlVdpDecoderCreate, /* VDP_FUNC_ID_DECODER_CREATE */
|
&vlVdpDecoderCreate, /* VDP_FUNC_ID_DECODER_CREATE */
|
||||||
&vlVdpDecoderDestroy, /* VDP_FUNC_ID_DECODER_DESTROY */
|
&vlVdpDecoderDestroy, /* VDP_FUNC_ID_DECODER_DESTROY */
|
||||||
0, /* VDP_FUNC_ID_DECODER_GET_PARAMETERS */
|
0x12, /* VDP_FUNC_ID_DECODER_GET_PARAMETERS */
|
||||||
&vlVdpDecoderRender, /* VDP_FUNC_ID_DECODER_RENDER */
|
&vlVdpDecoderRender, /* VDP_FUNC_ID_DECODER_RENDER */
|
||||||
&vlVdpVideoMixerQueryFeatureSupport, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_FEATURE_SUPPORT */
|
&vlVdpVideoMixerQueryFeatureSupport, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_FEATURE_SUPPORT */
|
||||||
&vlVdpVideoMixerQueryParameterSupport, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_SUPPORT */
|
&vlVdpVideoMixerQueryParameterSupport, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_SUPPORT */
|
||||||
&vlVdpVideoMixerQueryAttributeSupport, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_SUPPORT */
|
&vlVdpVideoMixerQueryAttributeSupport, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_SUPPORT */
|
||||||
&vlVdpVideoMixerQueryParameterValueRange, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_VALUE_RANGE */
|
&vlVdpVideoMixerQueryParameterValueRange, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_PARAMETER_VALUE_RANGE */
|
||||||
&vlVdpVideoMixerQueryAttributeValueRange, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_VALUE_RANGE */
|
&vlVdpVideoMixerQueryAttributeValueRange, /* VDP_FUNC_ID_VIDEO_MIXER_QUERY_ATTRIBUTE_VALUE_RANGE */
|
||||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_CREATE */
|
&vlVdpVideoMixerCreate, /* VDP_FUNC_ID_VIDEO_MIXER_CREATE */
|
||||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_SET_FEATURE_ENABLES */
|
&vlVdpVideoMixerSetFeatureEnables, /* VDP_FUNC_ID_VIDEO_MIXER_SET_FEATURE_ENABLES */
|
||||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES */
|
&vlVdpVideoMixerSetAttributeValues, /* VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES */
|
||||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_SUPPORT */
|
0x16, /* VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_SUPPORT */
|
||||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_ENABLES */
|
0x17, /* VDP_FUNC_ID_VIDEO_MIXER_GET_FEATURE_ENABLES */
|
||||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_GET_PARAMETER_VALUES */
|
0x18, /* VDP_FUNC_ID_VIDEO_MIXER_GET_PARAMETER_VALUES */
|
||||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_GET_ATTRIBUTE_VALUES */
|
0x19, /* VDP_FUNC_ID_VIDEO_MIXER_GET_ATTRIBUTE_VALUES */
|
||||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_DESTROY */
|
0x20, /* VDP_FUNC_ID_VIDEO_MIXER_DESTROY */
|
||||||
0, /* VDP_FUNC_ID_VIDEO_MIXER_RENDER */
|
&vlVdpVideoMixerRender, /* VDP_FUNC_ID_VIDEO_MIXER_RENDER */
|
||||||
&vlVdpPresentationQueueTargetDestroy, /* VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_DESTROY */
|
&vlVdpPresentationQueueTargetDestroy, /* VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_DESTROY */
|
||||||
&vlVdpPresentationQueueCreate, /* VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE */
|
&vlVdpPresentationQueueCreate, /* VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE */
|
||||||
&vlVdpPresentationQueueDestroy, /* VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY */
|
&vlVdpPresentationQueueDestroy, /* VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY */
|
||||||
&vlVdpPresentationQueueSetBackgroundColor, /* VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR */
|
&vlVdpPresentationQueueSetBackgroundColor, /* VDP_FUNC_ID_PRESENTATION_QUEUE_SET_BACKGROUND_COLOR */
|
||||||
&vlVdpPresentationQueueGetBackgroundColor, /* VDP_FUNC_ID_PRESENTATION_QUEUE_GET_BACKGROUND_COLOR */
|
&vlVdpPresentationQueueGetBackgroundColor, /* VDP_FUNC_ID_PRESENTATION_QUEUE_GET_BACKGROUND_COLOR */
|
||||||
0,
|
0x55, /* DUMMY */
|
||||||
0,
|
0x55, /* DUMMY */
|
||||||
&vlVdpPresentationQueueGetTime, /* VDP_FUNC_ID_PRESENTATION_QUEUE_GET_TIME */
|
&vlVdpPresentationQueueGetTime, /* VDP_FUNC_ID_PRESENTATION_QUEUE_GET_TIME */
|
||||||
&vlVdpPresentationQueueDisplay, /* VDP_FUNC_ID_PRESENTATION_QUEUE_DISPLAY */
|
&vlVdpPresentationQueueDisplay, /* VDP_FUNC_ID_PRESENTATION_QUEUE_DISPLAY */
|
||||||
&vlVdpPresentationQueueBlockUntilSurfaceIdle, /* VDP_FUNC_ID_PRESENTATION_QUEUE_BLOCK_UNTIL_SURFACE_IDLE */
|
&vlVdpPresentationQueueBlockUntilSurfaceIdle, /* VDP_FUNC_ID_PRESENTATION_QUEUE_BLOCK_UNTIL_SURFACE_IDLE */
|
||||||
&vlVdpPresentationQueueQuerySurfaceStatus, /* VDP_FUNC_ID_PRESENTATION_QUEUE_QUERY_SURFACE_STATUS */
|
&vlVdpPresentationQueueQuerySurfaceStatus, /* VDP_FUNC_ID_PRESENTATION_QUEUE_QUERY_SURFACE_STATUS */
|
||||||
0 /* VDP_FUNC_ID_PREEMPTION_CALLBACK_REGISTER */
|
&vlVdpPreemptionCallbackRegister /* VDP_FUNC_ID_PREEMPTION_CALLBACK_REGISTER */
|
||||||
};
|
};
|
||||||
|
|
||||||
static void* ftab_winsys[1] =
|
static void* ftab_winsys[1] =
|
||||||
{
|
{
|
||||||
0 /* VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_CREATE_X11 */
|
&vlVdpPresentationQueueTargetCreateX11 /* VDP_FUNC_ID_PRESENTATION_QUEUE_TARGET_CREATE_X11 */
|
||||||
};
|
};
|
||||||
|
|
||||||
boolean vlGetFuncFTAB(VdpFuncId function_id, void **func)
|
boolean vlGetFuncFTAB(VdpFuncId function_id, void **func)
|
||||||
|
|||||||
@@ -0,0 +1,135 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2010 Thomas Balling Sørensen.
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the
|
||||||
|
* "Software"), to deal in the Software without restriction, including
|
||||||
|
* without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
* distribute, sub license, and/or sell copies of the Software, and to
|
||||||
|
* permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
* the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice (including the
|
||||||
|
* next paragraph) shall be included in all copies or substantial portions
|
||||||
|
* of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||||
|
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
|
||||||
|
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
#include <vdpau/vdpau.h>
|
||||||
|
#include <util/u_memory.h>
|
||||||
|
#include <util/u_debug.h>
|
||||||
|
#include "vdpau_private.h"
|
||||||
|
|
||||||
|
|
||||||
|
VdpStatus
|
||||||
|
vlVdpVideoMixerCreate (VdpDevice device,
|
||||||
|
uint32_t feature_count,
|
||||||
|
VdpVideoMixerFeature const *features,
|
||||||
|
uint32_t parameter_count,
|
||||||
|
VdpVideoMixerParameter const *parameters,
|
||||||
|
void const *const *parameter_values,
|
||||||
|
VdpVideoMixer *mixer)
|
||||||
|
{
|
||||||
|
VdpStatus ret;
|
||||||
|
vlVdpVideoMixer *vmixer = NULL;
|
||||||
|
|
||||||
|
debug_printf("[VDPAU] Creating VideoMixer\n");
|
||||||
|
|
||||||
|
vlVdpDevice *dev = vlGetDataHTAB(device);
|
||||||
|
if (!dev)
|
||||||
|
return VDP_STATUS_INVALID_HANDLE;
|
||||||
|
|
||||||
|
vmixer = CALLOC(1, sizeof(vlVdpVideoMixer));
|
||||||
|
if (!vmixer)
|
||||||
|
return VDP_STATUS_RESOURCES;
|
||||||
|
|
||||||
|
vmixer->device = dev;
|
||||||
|
/*
|
||||||
|
* TODO: Handle features and parameters
|
||||||
|
* */
|
||||||
|
|
||||||
|
*mixer = vlAddDataHTAB(vmixer);
|
||||||
|
if (*mixer == 0) {
|
||||||
|
ret = VDP_STATUS_ERROR;
|
||||||
|
goto no_handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return VDP_STATUS_OK;
|
||||||
|
no_handle:
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
VdpStatus
|
||||||
|
vlVdpVideoMixerSetFeatureEnables (
|
||||||
|
VdpVideoMixer mixer,
|
||||||
|
uint32_t feature_count,
|
||||||
|
VdpVideoMixerFeature const *features,
|
||||||
|
VdpBool const *feature_enables)
|
||||||
|
{
|
||||||
|
debug_printf("[VDPAU] Setting VideoMixer features\n");
|
||||||
|
|
||||||
|
if (!(features && feature_enables))
|
||||||
|
return VDP_STATUS_INVALID_POINTER;
|
||||||
|
|
||||||
|
vlVdpVideoMixer *vmixer = vlGetDataHTAB(mixer);
|
||||||
|
if (!vmixer)
|
||||||
|
return VDP_STATUS_INVALID_HANDLE;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* TODO: Set features
|
||||||
|
* */
|
||||||
|
|
||||||
|
|
||||||
|
return VDP_STATUS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
VdpStatus vlVdpVideoMixerRender (
|
||||||
|
VdpVideoMixer mixer,
|
||||||
|
VdpOutputSurface background_surface,
|
||||||
|
VdpRect const *background_source_rect,
|
||||||
|
VdpVideoMixerPictureStructure current_picture_structure,
|
||||||
|
uint32_t video_surface_past_count,
|
||||||
|
VdpVideoSurface const *video_surface_past,
|
||||||
|
VdpVideoSurface video_surface_current,
|
||||||
|
uint32_t video_surface_future_count,
|
||||||
|
VdpVideoSurface const *video_surface_future,
|
||||||
|
VdpRect const *video_source_rect,
|
||||||
|
VdpOutputSurface destination_surface,
|
||||||
|
VdpRect const *destination_rect,
|
||||||
|
VdpRect const *destination_video_rect,
|
||||||
|
uint32_t layer_count,
|
||||||
|
VdpLayer const *layers)
|
||||||
|
{
|
||||||
|
if (!(background_source_rect && video_surface_past && video_surface_future && video_source_rect && destination_rect && destination_video_rect && layers))
|
||||||
|
return VDP_STATUS_INVALID_POINTER;
|
||||||
|
|
||||||
|
return VDP_STATUS_NO_IMPLEMENTATION;
|
||||||
|
}
|
||||||
|
|
||||||
|
VdpStatus
|
||||||
|
vlVdpVideoMixerSetAttributeValues (
|
||||||
|
VdpVideoMixer mixer,
|
||||||
|
uint32_t attribute_count,
|
||||||
|
VdpVideoMixerAttribute const *attributes,
|
||||||
|
void const *const *attribute_values)
|
||||||
|
{
|
||||||
|
if (!(attributes && attribute_values))
|
||||||
|
return VDP_STATUS_INVALID_POINTER;
|
||||||
|
|
||||||
|
vlVdpVideoMixer *vmixer = vlGetDataHTAB(mixer);
|
||||||
|
if (!vmixer)
|
||||||
|
return VDP_STATUS_INVALID_HANDLE;
|
||||||
|
|
||||||
|
return VDP_STATUS_OK;
|
||||||
|
}
|
||||||
@@ -73,6 +73,8 @@ vlVdpMPEG2BitstreamToMacroblock (
|
|||||||
bool b_header_done = false;
|
bool b_header_done = false;
|
||||||
struct vdpMPEG2BitstreamParser parser;
|
struct vdpMPEG2BitstreamParser parser;
|
||||||
|
|
||||||
|
debug_printf("[VDPAU] Starting decoding MPEG2 stream");
|
||||||
|
|
||||||
num_macroblocks[0] = 0;
|
num_macroblocks[0] = 0;
|
||||||
|
|
||||||
memset(&parser,0,sizeof(parser));
|
memset(&parser,0,sizeof(parser));
|
||||||
|
|||||||
@@ -28,6 +28,7 @@
|
|||||||
#include "vdpau_private.h"
|
#include "vdpau_private.h"
|
||||||
#include <vdpau/vdpau.h>
|
#include <vdpau/vdpau.h>
|
||||||
#include <util/u_debug.h>
|
#include <util/u_debug.h>
|
||||||
|
#include <util/u_memory.h>
|
||||||
|
|
||||||
VdpStatus
|
VdpStatus
|
||||||
vlVdpOutputSurfaceCreate ( VdpDevice device,
|
vlVdpOutputSurfaceCreate ( VdpDevice device,
|
||||||
@@ -35,9 +36,29 @@ vlVdpOutputSurfaceCreate ( VdpDevice device,
|
|||||||
uint32_t width, uint32_t height,
|
uint32_t width, uint32_t height,
|
||||||
VdpOutputSurface *surface)
|
VdpOutputSurface *surface)
|
||||||
{
|
{
|
||||||
|
vlVdpOutputSurface *vlsurface = NULL;
|
||||||
|
|
||||||
debug_printf("[VDPAU] Creating output surface\n");
|
debug_printf("[VDPAU] Creating output surface\n");
|
||||||
if (!(width && height))
|
if (!(width && height))
|
||||||
return VDP_STATUS_INVALID_SIZE;
|
return VDP_STATUS_INVALID_SIZE;
|
||||||
|
|
||||||
return VDP_STATUS_NO_IMPLEMENTATION;
|
vlVdpDevice *dev = vlGetDataHTAB(device);
|
||||||
|
if (!dev)
|
||||||
|
return VDP_STATUS_INVALID_HANDLE;
|
||||||
|
|
||||||
|
vlsurface = CALLOC(1, sizeof(vlVdpOutputSurface));
|
||||||
|
if (!vlsurface)
|
||||||
|
return VDP_STATUS_RESOURCES;
|
||||||
|
|
||||||
|
vlsurface->width = width;
|
||||||
|
vlsurface->height = height;
|
||||||
|
vlsurface->format = FormatRGBAToPipe(rgba_format);
|
||||||
|
|
||||||
|
*surface = vlAddDataHTAB(vlsurface);
|
||||||
|
if (*surface == 0) {
|
||||||
|
FREE(dev);
|
||||||
|
return VDP_STATUS_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
return VDP_STATUS_OK;
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* Copyright 2010 Thomas Balling Sørensen.
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
* copy of this software and associated documentation files (the
|
||||||
|
* "Software"), to deal in the Software without restriction, including
|
||||||
|
* without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
* distribute, sub license, and/or sell copies of the Software, and to
|
||||||
|
* permit persons to whom the Software is furnished to do so, subject to
|
||||||
|
* the following conditions:
|
||||||
|
*
|
||||||
|
* The above copyright notice and this permission notice (including the
|
||||||
|
* next paragraph) shall be included in all copies or substantial portions
|
||||||
|
* of the Software.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||||
|
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||||
|
* IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
|
||||||
|
* ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
*
|
||||||
|
**************************************************************************/
|
||||||
|
|
||||||
|
#include <vdpau/vdpau.h>
|
||||||
|
|
||||||
|
void vlVdpPreemptionCallback (VdpDevice device, void *context)
|
||||||
|
{
|
||||||
|
/* TODO: Implement preemption */
|
||||||
|
}
|
||||||
|
|
||||||
|
VdpStatus vlVdpPreemptionCallbackRegister (VdpDevice device, VdpPreemptionCallback callback, void *context)
|
||||||
|
{
|
||||||
|
|
||||||
|
return VDP_STATUS_OK;
|
||||||
|
}
|
||||||
@@ -28,6 +28,7 @@
|
|||||||
#include "vdpau_private.h"
|
#include "vdpau_private.h"
|
||||||
#include <vdpau/vdpau.h>
|
#include <vdpau/vdpau.h>
|
||||||
#include <util/u_debug.h>
|
#include <util/u_debug.h>
|
||||||
|
#include <util/u_memory.h>
|
||||||
|
|
||||||
VdpStatus
|
VdpStatus
|
||||||
vlVdpPresentationQueueTargetDestroy (VdpPresentationQueueTarget presentation_queue_target)
|
vlVdpPresentationQueueTargetDestroy (VdpPresentationQueueTarget presentation_queue_target)
|
||||||
@@ -41,12 +42,39 @@ vlVdpPresentationQueueCreate ( VdpDevice device,
|
|||||||
VdpPresentationQueueTarget presentation_queue_target,
|
VdpPresentationQueueTarget presentation_queue_target,
|
||||||
VdpPresentationQueue *presentation_queue)
|
VdpPresentationQueue *presentation_queue)
|
||||||
{
|
{
|
||||||
debug_printf("[VDPAU] Creating presentation queue\n");
|
debug_printf("[VDPAU] Creating PresentationQueue\n");
|
||||||
|
VdpStatus ret;
|
||||||
|
vlVdpPresentationQueue *pq = NULL;
|
||||||
|
|
||||||
if (!presentation_queue)
|
if (!presentation_queue)
|
||||||
return VDP_STATUS_INVALID_POINTER;
|
return VDP_STATUS_INVALID_POINTER;
|
||||||
|
|
||||||
return VDP_STATUS_NO_IMPLEMENTATION;
|
vlVdpDevice *dev = vlGetDataHTAB(device);
|
||||||
|
if (!dev)
|
||||||
|
return VDP_STATUS_INVALID_HANDLE;
|
||||||
|
|
||||||
|
vlVdpPresentationQueueTarget *pqt = vlGetDataHTAB(presentation_queue_target);
|
||||||
|
if (!pqt)
|
||||||
|
return VDP_STATUS_INVALID_HANDLE;
|
||||||
|
|
||||||
|
if (dev != pqt->device)
|
||||||
|
return VDP_STATUS_HANDLE_DEVICE_MISMATCH;
|
||||||
|
|
||||||
|
pq = CALLOC(1, sizeof(vlVdpPresentationQueue));
|
||||||
|
if (!pq)
|
||||||
|
return VDP_STATUS_RESOURCES;
|
||||||
|
|
||||||
|
*presentation_queue = vlAddDataHTAB(pq);
|
||||||
|
if (*presentation_queue == 0) {
|
||||||
|
ret = VDP_STATUS_ERROR;
|
||||||
|
goto no_handle;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return VDP_STATUS_OK;
|
||||||
|
no_handle:
|
||||||
|
FREE(pq);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
VdpStatus
|
VdpStatus
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <vdpau/vdpau.h>
|
#include <vdpau/vdpau.h>
|
||||||
|
#include <vdpau/vdpau_x11.h>
|
||||||
#include <pipe/p_compiler.h>
|
#include <pipe/p_compiler.h>
|
||||||
#include <pipe/p_video_context.h>
|
#include <pipe/p_video_context.h>
|
||||||
#include <vl_winsys.h>
|
#include <vl_winsys.h>
|
||||||
@@ -73,6 +74,7 @@ static VdpChromaType PipeToType(enum pipe_video_chroma_format pipe_type)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static enum pipe_format FormatToPipe(VdpYCbCrFormat vdpau_format)
|
static enum pipe_format FormatToPipe(VdpYCbCrFormat vdpau_format)
|
||||||
{
|
{
|
||||||
switch (vdpau_format) {
|
switch (vdpau_format) {
|
||||||
@@ -95,6 +97,26 @@ static enum pipe_format FormatToPipe(VdpYCbCrFormat vdpau_format)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static enum pipe_format FormatRGBAToPipe(VdpRGBAFormat vdpau_format)
|
||||||
|
{
|
||||||
|
switch (vdpau_format) {
|
||||||
|
case VDP_RGBA_FORMAT_A8:
|
||||||
|
return PIPE_FORMAT_A8_UNORM;
|
||||||
|
case VDP_RGBA_FORMAT_B10G10R10A2:
|
||||||
|
return PIPE_FORMAT_B10G10R10A2_UNORM;
|
||||||
|
case VDP_RGBA_FORMAT_B8G8R8A8:
|
||||||
|
return PIPE_FORMAT_B8G8R8A8_UNORM;
|
||||||
|
case VDP_RGBA_FORMAT_R10G10B10A2:
|
||||||
|
return PIPE_FORMAT_R10G10B10A2_UNORM;
|
||||||
|
case VDP_RGBA_FORMAT_R8G8B8A8:
|
||||||
|
return PIPE_FORMAT_R8G8B8A8_UNORM;
|
||||||
|
default:
|
||||||
|
assert(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
static VdpYCbCrFormat PipeToFormat(enum pipe_format p_format)
|
static VdpYCbCrFormat PipeToFormat(enum pipe_format p_format)
|
||||||
{
|
{
|
||||||
switch (p_format) {
|
switch (p_format) {
|
||||||
@@ -145,6 +167,23 @@ typedef struct
|
|||||||
int screen;
|
int screen;
|
||||||
} vlVdpDevice;
|
} vlVdpDevice;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
vlVdpDevice *device;
|
||||||
|
Drawable drawable;
|
||||||
|
} vlVdpPresentationQueueTarget;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
vlVdpDevice *device;
|
||||||
|
Drawable drawable;
|
||||||
|
} vlVdpPresentationQueue;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
vlVdpDevice *device;
|
||||||
|
} vlVdpVideoMixer;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
vlVdpDevice *device;
|
vlVdpDevice *device;
|
||||||
@@ -157,6 +196,14 @@ typedef struct
|
|||||||
uint8_t *data;
|
uint8_t *data;
|
||||||
} vlVdpSurface;
|
} vlVdpSurface;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
vlVdpDevice *device;
|
||||||
|
uint32_t width;
|
||||||
|
uint32_t height;
|
||||||
|
enum pipe_format format;
|
||||||
|
} vlVdpOutputSurface;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
vlVdpDevice *device;
|
vlVdpDevice *device;
|
||||||
@@ -174,6 +221,11 @@ vlHandle vlAddDataHTAB(void *data);
|
|||||||
void* vlGetDataHTAB(vlHandle handle);
|
void* vlGetDataHTAB(vlHandle handle);
|
||||||
boolean vlGetFuncFTAB(VdpFuncId function_id, void **func);
|
boolean vlGetFuncFTAB(VdpFuncId function_id, void **func);
|
||||||
|
|
||||||
|
/* Public functions */
|
||||||
|
VdpDeviceCreateX11 vdp_imp_device_create_x11;
|
||||||
|
VdpPresentationQueueTargetCreateX11 vlVdpPresentationQueueTargetCreateX11;
|
||||||
|
|
||||||
|
/* Internal function pointers */
|
||||||
VdpGetErrorString vlVdpGetErrorString;
|
VdpGetErrorString vlVdpGetErrorString;
|
||||||
VdpDeviceDestroy vlVdpDeviceDestroy;
|
VdpDeviceDestroy vlVdpDeviceDestroy;
|
||||||
VdpGetProcAddress vlVdpGetProcAddress;
|
VdpGetProcAddress vlVdpGetProcAddress;
|
||||||
@@ -213,4 +265,13 @@ VdpPresentationQueueGetTime vlVdpPresentationQueueGetTime;
|
|||||||
VdpPresentationQueueDisplay vlVdpPresentationQueueDisplay;
|
VdpPresentationQueueDisplay vlVdpPresentationQueueDisplay;
|
||||||
VdpPresentationQueueBlockUntilSurfaceIdle vlVdpPresentationQueueBlockUntilSurfaceIdle;
|
VdpPresentationQueueBlockUntilSurfaceIdle vlVdpPresentationQueueBlockUntilSurfaceIdle;
|
||||||
VdpPresentationQueueQuerySurfaceStatus vlVdpPresentationQueueQuerySurfaceStatus;
|
VdpPresentationQueueQuerySurfaceStatus vlVdpPresentationQueueQuerySurfaceStatus;
|
||||||
|
VdpPreemptionCallback vlVdpPreemptionCallback;
|
||||||
|
VdpPreemptionCallbackRegister vlVdpPreemptionCallbackRegister;
|
||||||
|
VdpVideoMixerSetFeatureEnables vlVdpVideoMixerSetFeatureEnables;
|
||||||
|
VdpVideoMixerCreate vlVdpVideoMixerCreate;
|
||||||
|
VdpVideoMixerRender vlVdpVideoMixerRender;
|
||||||
|
VdpVideoMixerSetAttributeValues vlVdpVideoMixerSetAttributeValues;
|
||||||
|
VdpGenerateCSCMatrix vlVdpGenerateCSCMatrix;
|
||||||
|
|
||||||
|
|
||||||
#endif // VDPAU_PRIVATE_H
|
#endif // VDPAU_PRIVATE_H
|
||||||
|
|||||||
Reference in New Issue
Block a user