diff options
author | Andy Furniss <[email protected]> | 2013-07-25 00:40:11 +0100 |
---|---|---|
committer | Christian König <[email protected]> | 2013-08-19 18:31:26 +0200 |
commit | 3448b66dac521fb16ccaa7cdf3427343a6e355a2 (patch) | |
tree | da3ca63cf7f532d5a4f97978cce29c868b68d7f2 | |
parent | b1d05eeb1f14e06ba122857927eb4661621df8f6 (diff) |
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 <[email protected]>
-rw-r--r-- | src/gallium/auxiliary/vl/vl_mpeg12_decoder.c | 4 | ||||
-rw-r--r-- | src/gallium/auxiliary/vl/vl_video_buffer.c | 2 | ||||
-rw-r--r-- | src/gallium/state_trackers/vdpau/surface.c | 2 |
3 files changed, 4 insertions, 4 deletions
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) |