From: Rico Schüller Date: Sat, 14 Sep 2013 18:27:07 +0000 (+0200) Subject: vdpau/decode: Check max width and max height. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6f5229512906f8d545ed88dc2703f3c8ec45dc17;p=mesa.git vdpau/decode: Check max width and max height. Reviewed-by: Christian König --- 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);