summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2014-07-03 19:05:22 +0200
committerSebastian Dröge <sebastian@centricular.com>2014-07-03 19:06:26 +0200
commit73c40a3132b09adaa6abf0c0a1c10e3522983d51 (patch)
treef3148fdda3a46a1901cea20e42ffdb3997133594 /sys
parent74c2e64d5d1303267cd7b54a4096cd3c47febacc (diff)
downloadgstreamer-plugins-bad-73c40a3132b09adaa6abf0c0a1c10e3522983d51.tar.gz
d3dhelpers: Swap UV planes properly for YV12 as compared to I420
If we only do it in one place colors will look funny.
Diffstat (limited to 'sys')
-rw-r--r--sys/d3dvideosink/d3dhelpers.c27
1 files changed, 19 insertions, 8 deletions
diff --git a/sys/d3dvideosink/d3dhelpers.c b/sys/d3dvideosink/d3dhelpers.c
index 03ed6ee96..386f607c9 100644
--- a/sys/d3dvideosink/d3dhelpers.c
+++ b/sys/d3dvideosink/d3dhelpers.c
@@ -629,14 +629,25 @@ gst_d3dsurface_buffer_pool_alloc_buffer (GstBufferPool * bpool,
case GST_VIDEO_FORMAT_YV12:
offset[0] = 0;
stride[0] = lr.Pitch;
- offset[2] =
- offset[0] + stride[0] * GST_VIDEO_INFO_COMP_HEIGHT (&pool->info, 0);
- stride[2] = lr.Pitch / 2;
- offset[1] =
- offset[2] + stride[2] * GST_VIDEO_INFO_COMP_HEIGHT (&pool->info, 2);
- stride[1] = lr.Pitch / 2;
- size =
- offset[1] + stride[1] * GST_VIDEO_INFO_COMP_HEIGHT (&pool->info, 1);
+ if (GST_VIDEO_INFO_FORMAT (&pool->info) == GST_VIDEO_FORMAT_YV12) {
+ offset[1] =
+ offset[0] + stride[0] * GST_VIDEO_INFO_COMP_HEIGHT (&pool->info, 0);
+ stride[1] = lr.Pitch / 2;
+ offset[2] =
+ offset[1] + stride[1] * GST_VIDEO_INFO_COMP_HEIGHT (&pool->info, 1);
+ stride[2] = lr.Pitch / 2;
+ size =
+ offset[2] + stride[2] * GST_VIDEO_INFO_COMP_HEIGHT (&pool->info, 2);
+ } else {
+ offset[2] =
+ offset[0] + stride[0] * GST_VIDEO_INFO_COMP_HEIGHT (&pool->info, 0);
+ stride[2] = lr.Pitch / 2;
+ offset[1] =
+ offset[2] + stride[2] * GST_VIDEO_INFO_COMP_HEIGHT (&pool->info, 2);
+ stride[1] = lr.Pitch / 2;
+ size =
+ offset[1] + stride[1] * GST_VIDEO_INFO_COMP_HEIGHT (&pool->info, 1);
+ }
break;
case GST_VIDEO_FORMAT_NV12:
offset[0] = 0;