From: Andy Furniss Date: Wed, 24 Jul 2013 23:40:11 +0000 (+0100) Subject: vdpau/vl 422 chroma width/height mix up X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=3448b66dac521fb16ccaa7cdf3427343a6e355a2;p=mesa.git vdpau/vl 422 chroma width/height mix up I was looking into some minor 422 issues/discrepencies I noticed long ago using vdpau on my rv790. I noticed that there is code that is halving height rather than width - 422 is full height AFAIK. Making the changes below doesn't actually make any noticable difference to what I was looking into. Maybe there are more but here's three I've found so far Reviewed-by: Christian König --- diff --git a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c index b60b22fc265..5782f620e61 100644 --- a/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c +++ b/src/gallium/auxiliary/vl/vl_mpeg12_decoder.c @@ -1053,8 +1053,8 @@ vl_create_mpeg12_decoder(struct pipe_context *context, dec->chroma_height = dec->base.height / 2; dec->num_blocks = dec->num_blocks * 2; } else if (dec->base.chroma_format == PIPE_VIDEO_CHROMA_FORMAT_422) { - dec->chroma_width = dec->base.width; - dec->chroma_height = dec->base.height / 2; + dec->chroma_width = dec->base.width / 2; + dec->chroma_height = dec->base.height; dec->num_blocks = dec->num_blocks * 2 + dec->num_blocks; } else { dec->chroma_width = dec->base.width; diff --git a/src/gallium/auxiliary/vl/vl_video_buffer.c b/src/gallium/auxiliary/vl/vl_video_buffer.c index f0ba3891eb6..3b599fcd12f 100644 --- a/src/gallium/auxiliary/vl/vl_video_buffer.c +++ b/src/gallium/auxiliary/vl/vl_video_buffer.c @@ -240,7 +240,7 @@ vl_video_buffer_template(struct pipe_resource *templ, templ->width0 /= 2; templ->height0 /= 2; } else if (tmpl->chroma_format == PIPE_VIDEO_CHROMA_FORMAT_422) { - templ->height0 /= 2; + templ->width0 /= 2; } } } diff --git a/src/gallium/state_trackers/vdpau/surface.c b/src/gallium/state_trackers/vdpau/surface.c index a26f9b6bb49..ab4d725cb36 100644 --- a/src/gallium/state_trackers/vdpau/surface.c +++ b/src/gallium/state_trackers/vdpau/surface.c @@ -174,7 +174,7 @@ vlVdpVideoSurfaceSize(vlVdpSurface *p_surf, int component, *width /= 2; *height /= 2; } else if (p_surf->templat.chroma_format == PIPE_VIDEO_CHROMA_FORMAT_422) { - *height /= 2; + *width /= 2; } } if (p_surf->templat.interlaced)