diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2014-12-16 15:03:55 +0100 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2014-12-16 15:03:55 +0100 |
commit | 0a6001dc6ae7f8346999e028a6ba290c35c5fc7f (patch) | |
tree | ada2d3372c9992bc1022f70b5816e5e8cb59f507 | |
parent | bdd7e85a4c1320aadae7bdc1a895197a00d93a81 (diff) |
Revert "video: Fix non-default usage of gst_video_sink_center_rect"
This reverts commit 899461d722e45f591eeddf33c405677170d63de4.
There seems to be a lot of code out there that does not properly initialize
the rectangles and then causes undefined behaviour. Including our video sinks.
Let's keep this out of 1.4, fix everything everywhere and keep it in 1.6
-rw-r--r-- | gst-libs/gst/video/gstvideosink.c | 16 | ||||
-rw-r--r-- | tests/check/libs/video.c | 61 |
2 files changed, 8 insertions, 69 deletions
diff --git a/gst-libs/gst/video/gstvideosink.c b/gst-libs/gst/video/gstvideosink.c index 26b7df21c3..47045933ad 100644 --- a/gst-libs/gst/video/gstvideosink.c +++ b/gst-libs/gst/video/gstvideosink.c @@ -87,8 +87,8 @@ gst_video_sink_center_rect (GstVideoRectangle src, GstVideoRectangle dst, if (!scaling) { result->w = MIN (src.w, dst.w); result->h = MIN (src.h, dst.h); - result->x = dst.x + (dst.w - result->w) / 2; - result->y = dst.y + (dst.h - result->h) / 2; + result->x = (dst.w - result->w) / 2; + result->y = (dst.h - result->h) / 2; } else { gdouble src_ratio, dst_ratio; @@ -98,16 +98,16 @@ gst_video_sink_center_rect (GstVideoRectangle src, GstVideoRectangle dst, if (src_ratio > dst_ratio) { result->w = dst.w; result->h = dst.w / src_ratio; - result->x = dst.x; - result->y = dst.y + (dst.h - result->h) / 2; + result->x = 0; + result->y = (dst.h - result->h) / 2; } else if (src_ratio < dst_ratio) { result->w = dst.h * src_ratio; result->h = dst.h; - result->x = dst.x + (dst.w - result->w) / 2; - result->y = dst.y; + result->x = (dst.w - result->w) / 2; + result->y = 0; } else { - result->x = dst.x; - result->y = dst.y; + result->x = 0; + result->y = 0; result->w = dst.w; result->h = dst.h; } diff --git a/tests/check/libs/video.c b/tests/check/libs/video.c index b8e5ba084f..d7cac06737 100644 --- a/tests/check/libs/video.c +++ b/tests/check/libs/video.c @@ -1693,66 +1693,6 @@ GST_START_TEST (test_overlay_composition_global_alpha) GST_END_TEST; - -GST_START_TEST (test_video_center_rect) -{ - GstVideoRectangle src, dest, result, expected; - -#define NEW_RECT(x,y,w,h) ((GstVideoRectangle) {x,y,w,h}) -#define CHECK_RECT(res, exp) \ - fail_unless_equals_int(exp.x, res.x);\ - fail_unless_equals_int(exp.y, res.y);\ - fail_unless_equals_int(exp.w, res.w);\ - fail_unless_equals_int(exp.h, res.h); - - /* 1:1 Aspect Ratio */ - src = NEW_RECT (0, 0, 100, 100); - dest = NEW_RECT (0, 0, 100, 100); - expected = NEW_RECT (0, 0, 100, 100); - gst_video_sink_center_rect (src, dest, &result, TRUE); - CHECK_RECT (result, expected); - - src = NEW_RECT (0, 0, 100, 100); - dest = NEW_RECT (0, 0, 50, 50); - expected = NEW_RECT (0, 0, 50, 50); - gst_video_sink_center_rect (src, dest, &result, TRUE); - CHECK_RECT (result, expected); - - src = NEW_RECT (0, 0, 100, 100); - dest = NEW_RECT (50, 50, 100, 100); - expected = NEW_RECT (50, 50, 100, 100); - gst_video_sink_center_rect (src, dest, &result, TRUE); - CHECK_RECT (result, expected); - - /* Aspect ratio scaling (tall) */ - src = NEW_RECT (0, 0, 50, 100); - dest = NEW_RECT (0, 0, 50, 50); - expected = NEW_RECT (12, 0, 25, 50); - gst_video_sink_center_rect (src, dest, &result, TRUE); - CHECK_RECT (result, expected); - - src = NEW_RECT (0, 0, 50, 100); - dest = NEW_RECT (50, 50, 50, 50); - expected = NEW_RECT (62, 50, 25, 50); - gst_video_sink_center_rect (src, dest, &result, TRUE); - CHECK_RECT (result, expected); - - /* Aspect ratio scaling (wide) */ - src = NEW_RECT (0, 0, 100, 50); - dest = NEW_RECT (0, 0, 50, 50); - expected = NEW_RECT (0, 12, 50, 25); - gst_video_sink_center_rect (src, dest, &result, TRUE); - CHECK_RECT (result, expected); - - src = NEW_RECT (0, 0, 100, 50); - dest = NEW_RECT (50, 50, 50, 50); - expected = NEW_RECT (50, 62, 50, 25); - gst_video_sink_center_rect (src, dest, &result, TRUE); - CHECK_RECT (result, expected); -} - -GST_END_TEST; - static Suite * video_suite (void) { @@ -1774,7 +1714,6 @@ video_suite (void) tcase_add_test (tc_chain, test_overlay_composition); tcase_add_test (tc_chain, test_overlay_composition_premultiplied_alpha); tcase_add_test (tc_chain, test_overlay_composition_global_alpha); - tcase_add_test (tc_chain, test_video_center_rect); return s; } |