diff options
author | Göran Jönsson <goranjn@axis.com> | 2016-02-11 11:27:57 +0100 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2016-02-26 23:56:51 +0000 |
commit | babcf4d30cf84f9f2c849ae309932e136ba37e4c (patch) | |
tree | b0f6baf8886497407e5ed5e552859eb54a5e9910 | |
parent | 625bd68da71e73369f14774d3115dedd7eb6ff64 (diff) | |
download | gstreamer-plugins-base-babcf4d30cf84f9f2c849ae309932e136ba37e4c.tar.gz |
video-converter: add direct UYVY to GRAY8 conversion function
https://bugzilla.gnome.org/show_bug.cgi?id=761851
-rw-r--r-- | gst-libs/gst/video/video-converter.c | 20 | ||||
-rw-r--r-- | gst-libs/gst/video/video-orc.orc | 11 |
2 files changed, 31 insertions, 0 deletions
diff --git a/gst-libs/gst/video/video-converter.c b/gst-libs/gst/video/video-converter.c index 75fa0a87b..f29278d02 100644 --- a/gst-libs/gst/video/video-converter.c +++ b/gst-libs/gst/video/video-converter.c @@ -3183,6 +3183,24 @@ convert_UYVY_Y444 (GstVideoConverter * convert, const GstVideoFrame * src, } static void +convert_UYVY_GRAY8 (GstVideoConverter * convert, const GstVideoFrame * src, + GstVideoFrame * dest) +{ + gint width = convert->in_width; + gint height = convert->in_height; + guint16 *s; + guint8 *d; + + s = GST_VIDEO_FRAME_PLANE_DATA (src, 0); + d = GST_VIDEO_FRAME_PLANE_DATA (dest, 0); + + video_orc_convert_UYVY_GRAY8 (d, + FRAME_GET_STRIDE (dest), s, FRAME_GET_STRIDE (src), width, height); + + convert_fill_border (convert, dest); +} + +static void convert_AYUV_I420 (GstVideoConverter * convert, const GstVideoFrame * src, GstVideoFrame * dest) { @@ -4353,6 +4371,8 @@ static const VideoTransform transforms[] = { TRUE, FALSE, FALSE, FALSE, 0, 0, convert_YUY2_Y42B}, {GST_VIDEO_FORMAT_YUY2, GST_VIDEO_FORMAT_Y444, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, 0, 0, convert_YUY2_Y444}, + {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_FORMAT_GRAY8, TRUE, TRUE, TRUE, TRUE, + TRUE, FALSE, FALSE, FALSE, 0, 0, convert_UYVY_GRAY8}, {GST_VIDEO_FORMAT_UYVY, GST_VIDEO_FORMAT_I420, TRUE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, 0, 0, convert_UYVY_I420}, diff --git a/gst-libs/gst/video/video-orc.orc b/gst-libs/gst/video/video-orc.orc index 1a8168a95..60d7c95d1 100644 --- a/gst-libs/gst/video/video-orc.orc +++ b/gst-libs/gst/video/video-orc.orc @@ -2552,3 +2552,14 @@ x4 convsuswb d, p loadpq m, masks x4 addusw p, d, e1 x4 andnw d, m, p + +.function video_orc_convert_UYVY_GRAY8 +.flags 2d +.dest 1 d guint8 +.source 2 s +.temp 1 t1 +.temp 2 t2 + +loadw t2, s +convhwb t1, t2 +storeb d, t1 |