diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2014-07-03 19:05:22 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2014-07-03 19:06:26 +0200 |
commit | 73c40a3132b09adaa6abf0c0a1c10e3522983d51 (patch) | |
tree | f3148fdda3a46a1901cea20e42ffdb3997133594 /sys/d3dvideosink/d3dhelpers.c | |
parent | 74c2e64d5d1303267cd7b54a4096cd3c47febacc (diff) | |
download | gstreamer-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/d3dvideosink/d3dhelpers.c')
-rw-r--r-- | sys/d3dvideosink/d3dhelpers.c | 27 |
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; |