vdpau/vl 422 chroma width/height mix up
authorAndy Furniss <adf.lists@gmail.com>
Wed, 24 Jul 2013 23:40:11 +0000 (00:40 +0100)
committerChristian König <christian.koenig@amd.com>
Mon, 19 Aug 2013 16:31:26 +0000 (18:31 +0200)
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 <christian.koenig@amd.com>
src/gallium/auxiliary/vl/vl_mpeg12_decoder.c
src/gallium/auxiliary/vl/vl_video_buffer.c
src/gallium/state_trackers/vdpau/surface.c

index b60b22fc265e16f5d6266a95c6546351007b3386..5782f620e615e957a664536afad60f4e29358129 100644 (file)
@@ -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;
index f0ba3891eb6dbe232dc1395ed862aa85a0dc0100..3b599fcd12f444134c316e62cc382542484f8e16 100644 (file)
@@ -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;
       }
    }
 }
index a26f9b6bb496b04c4bbd36d7b86e69533bd36e14..ab4d725cb362fe149b1966ee33467535daead19c 100644 (file)
@@ -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)