state_trackers/vdpau: Test if profile is supported first before trying to create decoder

So a nicer error message is returned.

Signed-off-by: Maarten Lankhorst <m.b.lankhorst@gmail.com>
This commit is contained in:
Maarten Lankhorst
2011-10-31 10:26:02 +01:00
committed by Christian König
parent c4d47f065a
commit 1eb48c5500
+12
View File
@@ -43,15 +43,18 @@ vlVdpDecoderCreate(VdpDevice device,
{
enum pipe_video_profile p_profile;
struct pipe_context *pipe;
struct pipe_screen *screen;
vlVdpDevice *dev;
vlVdpDecoder *vldecoder;
VdpStatus ret;
unsigned i;
bool supported;
VDPAU_MSG(VDPAU_TRACE, "[VDPAU] Creating decoder\n");
if (!decoder)
return VDP_STATUS_INVALID_POINTER;
*decoder = 0;
if (!(width && height))
return VDP_STATUS_INVALID_VALUE;
@@ -65,6 +68,15 @@ vlVdpDecoderCreate(VdpDevice device,
return VDP_STATUS_INVALID_HANDLE;
pipe = dev->context->pipe;
screen = dev->vscreen->pscreen;
supported = screen->get_video_param
(
screen,
p_profile,
PIPE_VIDEO_CAP_SUPPORTED
);
if (!supported)
return VDP_STATUS_INVALID_DECODER_PROFILE;
vldecoder = CALLOC(1,sizeof(vlVdpDecoder));
if (!vldecoder)