From 6f5229512906f8d545ed88dc2703f3c8ec45dc17 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rico=20Sch=C3=BCller?= Date: Sat, 14 Sep 2013 20:27:07 +0200 Subject: [PATCH] vdpau/decode: Check max width and max height. MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Reviewed-by: Christian König --- src/gallium/state_trackers/vdpau/decode.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/gallium/state_trackers/vdpau/decode.c b/src/gallium/state_trackers/vdpau/decode.c index 47ca2294eff..b144b8368d7 100644 --- a/src/gallium/state_trackers/vdpau/decode.c +++ b/src/gallium/state_trackers/vdpau/decode.c @@ -51,6 +51,7 @@ vlVdpDecoderCreate(VdpDevice device, vlVdpDecoder *vldecoder; VdpStatus ret; bool supported; + uint32_t maxwidth, maxheight; if (!decoder) return VDP_STATUS_INVALID_POINTER; @@ -84,6 +85,25 @@ vlVdpDecoderCreate(VdpDevice device, return VDP_STATUS_INVALID_DECODER_PROFILE; } + maxwidth = screen->get_video_param + ( + screen, + templat.profile, + PIPE_VIDEO_ENTRYPOINT_BITSTREAM, + PIPE_VIDEO_CAP_MAX_WIDTH + ); + maxheight = screen->get_video_param + ( + screen, + templat.profile, + PIPE_VIDEO_ENTRYPOINT_BITSTREAM, + PIPE_VIDEO_CAP_MAX_HEIGHT + ); + if (width > maxwidth || height > maxheight) { + pipe_mutex_unlock(dev->mutex); + return VDP_STATUS_INVALID_SIZE; + } + vldecoder = CALLOC(1,sizeof(vlVdpDecoder)); if (!vldecoder) { pipe_mutex_unlock(dev->mutex); -- 2.30.2