summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-libs/gst-plugins-base/files/gst-0.10.32-0012-add-support-to-convert-to-YUY2-YUYV-color-format.patch')
-rw-r--r--media-libs/gst-plugins-base/files/gst-0.10.32-0012-add-support-to-convert-to-YUY2-YUYV-color-format.patch197
1 files changed, 0 insertions, 197 deletions
diff --git a/media-libs/gst-plugins-base/files/gst-0.10.32-0012-add-support-to-convert-to-YUY2-YUYV-color-format.patch b/media-libs/gst-plugins-base/files/gst-0.10.32-0012-add-support-to-convert-to-YUY2-YUYV-color-format.patch
deleted file mode 100644
index 1156754..0000000
--- a/media-libs/gst-plugins-base/files/gst-0.10.32-0012-add-support-to-convert-to-YUY2-YUYV-color-format.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From 2f3ab39353cb9dde02ba64ab89b7c7725b25ae3b Mon Sep 17 00:00:00 2001
-From: Rob Clark <rob@ti.com>
-Date: Tue, 1 Dec 2009 22:42:43 -0600
-Subject: [PATCH 12/24] add support to convert to YUY2/YUYV color format
-
----
- gst/stride/armv7.s | 63 ++++++++++++++++++++++++++++++++++++++++++
- gst/stride/convert.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++---
- 2 files changed, 133 insertions(+), 4 deletions(-)
-
-diff --git a/gst/stride/armv7.s b/gst/stride/armv7.s
-index ed636f7..2697a14 100644
---- a/gst/stride/armv7.s
-+++ b/gst/stride/armv7.s
-@@ -69,6 +69,69 @@ stride_copy_zip2_3:
- bx lr
- @}
-
-+
-+ .align
-+ .global stride_copy_zip3a
-+ .type stride_copy_zip3a, %function
-+@void
-+@stride_copy_zip3a (guchar *new_buf,
-+@ guchar *orig_buf1, guchar *orig_buf2, guchar *orig_buf3, gint sz)
-+@{
-+@@@@ note: r0-r3, q0-3, and q8-q15 do not need to be preserved
-+stride_copy_zip3a:
-+ pld [r1, #64]
-+ pld [r2, #64]
-+ pld [r3, #64]
-+ ldr ip, [sp] @ the sz arg
-+@ interleave remaining >= 32 bytes:
-+ cmp ip, #32
-+ blt stride_copy_zip3a_2
-+stride_copy_zip3a_1:
-+ vld1.8 {q8}, [r1]! @ Y
-+ vld1.8 {q10}, [r1]! @ Y
-+ vld1.8 {q9}, [r2]! @ U
-+ vld1.8 {q11}, [r3]! @ V
-+
-+ pld [r1, #64]
-+ pld [r2, #64]
-+ pld [r3, #64]
-+
-+ vzip.8 q9, q11 @ interleave U&V
-+ vzip.8 q8, q9 @ interleave Y1UV1
-+ vzip.8 q10, q11 @ interleave Y2UV2
-+
-+ vst1.8 {q8,q9}, [r0]!
-+ vst1.8 {q10,q11}, [r0]!
-+
-+ sub ip, ip, #32
-+
-+ cmp ip, #32
-+ bge stride_copy_zip3a_1
-+@ interleave remaining >= 16 bytes:
-+stride_copy_zip3a_2:
-+ cmp ip, #16
-+ blt stride_copy_zip3a_3
-+
-+ vld1.8 {d16}, [r1]! @ Y
-+ vld1.8 {d18}, [r1]! @ Y
-+ vld1.8 {d17}, [r2]! @ U
-+ vld1.8 {d19}, [r3]! @ V
-+
-+ vzip.8 d17, d19 @ interleave U&V
-+ vzip.8 d16, d17 @ interleave Y1UV1
-+ vzip.8 d18, d19 @ interleave Y2UV2
-+
-+ vst1.8 {d16,d17}, [r0]!
-+ vst1.8 {d18,d19}, [r0]!
-+
-+ sub ip, ip, #16
-+@ copy remaining >= 8 bytes:
-+stride_copy_zip3a_3:
-+@XXX
-+ bx lr
-+@}
-+
-+
- .align
- .global stride_copy
- .type stride_copy, %function
-diff --git a/gst/stride/convert.c b/gst/stride/convert.c
-index a15063b..0f59e78 100644
---- a/gst/stride/convert.c
-+++ b/gst/stride/convert.c
-@@ -58,6 +58,19 @@ stride_copy_zip2 (guchar *new_buf, guchar *orig_buf1, guchar *orig_buf2, gint sz
- }
-
- WEAK void
-+stride_copy_zip3a (guchar *new_buf,
-+ guchar *orig_buf1, guchar *orig_buf2, guchar *orig_buf3, gint sz)
-+{
-+ while (sz > 1) {
-+ *new_buf++ = *orig_buf1++;
-+ *new_buf++ = *orig_buf2++;
-+ *new_buf++ = *orig_buf1++;
-+ *new_buf++ = *orig_buf3++;
-+ sz -= 2;
-+ }
-+}
-+
-+WEAK void
- stride_copy (guchar *new_buf, guchar *orig_buf, gint sz)
- {
- memcpy (new_buf, orig_buf, sz);
-@@ -99,6 +112,36 @@ stridemove_zip2 (guchar *new_buf, guchar *orig_buf1, guchar *orig_buf2, gint new
- }
-
- /**
-+ * move to strided buffer, interleaving three planes, where the first plane
-+ * (orig_buf1) has 2x as many samples.. Ie. ABACABAC..
-+ */
-+static void
-+stridemove_zip3a (guchar *new_buf,
-+ guchar *orig_buf1, guchar *orig_buf2, guchar *orig_buf3,
-+ guint new_width, gint orig_width, gint height)
-+{
-+ gint copy_width = (new_width < orig_width) ? new_width : orig_width;
-+
-+ while (height > 0) {
-+
-+ /* even row */
-+ stride_copy_zip3a (new_buf, orig_buf1, orig_buf2, orig_buf3, copy_width);
-+ new_buf += new_width;
-+ orig_buf1 += orig_width;
-+
-+ /* odd row, recycles same U & V */
-+ stride_copy_zip3a (new_buf, orig_buf1, orig_buf2, orig_buf3, copy_width);
-+ new_buf += new_width;
-+ orig_buf1 += orig_width;
-+
-+ orig_buf2 += orig_width/2;
-+ orig_buf3 += orig_width/2;
-+
-+ height -= 2;
-+ }
-+}
-+
-+/**
- * Convert from one stride to another... like memmove, but can convert stride in
- * the process. This function is not aware of pixels, only of bytes. So widths
- * are given in bytes, not pixels. The new_buf and orig_buf can point to the
-@@ -250,14 +293,36 @@ stridify_i420_nv12 (GstStrideTransform *self, guchar *strided, guchar *unstrided
- /* XXX widths/heights/strides that are not multiple of four??: */
- stridemove_zip2 (
- strided + (height*stride),
-- unstrided + (height*width),
-- unstrided + (int)(height*width*1.25),
-- stride, width/2, height/2); /* interleave U&V */
-- stridemove (strided, unstrided, stride, width, height); /* move Y */
-+ unstrided + (height*width), /* U */
-+ unstrided + (int)(height*width*1.25), /* V */
-+ stride, width/2, height/2);
-+ stridemove (strided, unstrided, stride, width, height); /* Y */
-+
-+ return GST_FLOW_OK;
-+}
-+
-+/** convert I420 unstrided to YUY2 strided */
-+static GstFlowReturn
-+stridify_i420_yuy2 (GstStrideTransform *self, guchar *strided, guchar *unstrided)
-+{
-+ gint width = self->width;
-+ gint height = self->height;
-+ gint stride = self->out_rowstride;
-+
-+ g_return_val_if_fail (stride >= width, GST_FLOW_ERROR);
-+
-+ /* XXX widths/heights/strides that are not multiple of four??: */
-+ stridemove_zip3a (
-+ strided,
-+ unstrided, /* Y */
-+ unstrided + (height*width), /* U */
-+ unstrided + (int)(height*width*1.25), /* V */
-+ stride, width, height);
-
- return GST_FLOW_OK;
- }
-
-+
- /* last entry has GST_VIDEO_FORMAT_UNKNOWN for in/out formats */
- Conversion stride_conversions[] = {
- { { GST_VIDEO_FORMAT_NV12, GST_VIDEO_FORMAT_NV12 }, stridify_420sp_420sp, unstridify_420sp_420sp },
-@@ -266,6 +331,7 @@ Conversion stride_conversions[] = {
- { { GST_VIDEO_FORMAT_YUY2, GST_VIDEO_FORMAT_YUY2 }, stridify_422i_422i, unstridify_422i_422i },
- { { GST_VIDEO_FORMAT_UYVY, GST_VIDEO_FORMAT_UYVY }, stridify_422i_422i, unstridify_422i_422i },
- { { GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_NV12 }, stridify_i420_nv12, NULL },
-+ { { GST_VIDEO_FORMAT_I420, GST_VIDEO_FORMAT_YUY2 }, stridify_i420_yuy2, NULL },
- /* add new entries before here */
- { { GST_VIDEO_FORMAT_UNKNOWN } }
- };
---
-1.7.1
-