summaryrefslogtreecommitdiffstats
path: root/abs/extra/community/gstreamer0.10-base/videoscale-fix-negotiation.patch
diff options
context:
space:
mode:
Diffstat (limited to 'abs/extra/community/gstreamer0.10-base/videoscale-fix-negotiation.patch')
-rw-r--r--abs/extra/community/gstreamer0.10-base/videoscale-fix-negotiation.patch171
1 files changed, 0 insertions, 171 deletions
diff --git a/abs/extra/community/gstreamer0.10-base/videoscale-fix-negotiation.patch b/abs/extra/community/gstreamer0.10-base/videoscale-fix-negotiation.patch
deleted file mode 100644
index 6e34d41..0000000
--- a/abs/extra/community/gstreamer0.10-base/videoscale-fix-negotiation.patch
+++ /dev/null
@@ -1,171 +0,0 @@
-From 63d1316c0fd4ce22cf4a53f4aa7cb1ca16a07aa8 Mon Sep 17 00:00:00 2001
-From: Tim-Philipp Müller <tim.muller@collabora.co.uk>
-Date: Sun, 26 Feb 2012 18:19:57 +0000
-Subject: videoscale: fix negotiation after addition of new formats and methods
-
-Now that we no longer support all methods for all formats, we
-need to cater for that in the transform function: we can't
-transform formats not supported by the currently-selected
-mehod.
-
-make check, folks. It's da bomb.
----
-diff --git a/gst/videoscale/gstvideoscale.c b/gst/videoscale/gstvideoscale.c
-index 9f072a3..60dd5ff 100644
---- a/gst/videoscale/gstvideoscale.c
-+++ b/gst/videoscale/gstvideoscale.c
-@@ -424,10 +424,118 @@ gst_video_scale_get_property (GObject * object, guint prop_id, GValue * value,
- }
- }
-
-+#define NEAREST (1 << GST_VIDEO_SCALE_NEAREST)
-+#define BILINEAR (1 << GST_VIDEO_SCALE_BILINEAR)
-+#define FOURTAP (1 << GST_VIDEO_SCALE_4TAP)
-+#define LANCZOS (1 << GST_VIDEO_SCALE_LANCZOS)
-+
-+/* or we could just do lookups via table[format] if we could be bothered.. */
-+static const struct
-+{
-+ GstVideoFormat format;
-+ guint8 methods;
-+} formats_methods_table[] = {
-+ {
-+ GST_VIDEO_FORMAT_RGBx, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_xRGB, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_BGRx, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_xBGR, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_RGBA, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_ARGB, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_BGRA, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_ABGR, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_AYUV, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_ARGB64, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_AYUV64, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_RGB, NEAREST | BILINEAR | FOURTAP}, {
-+ GST_VIDEO_FORMAT_BGR, NEAREST | BILINEAR | FOURTAP}, {
-+ GST_VIDEO_FORMAT_v308, NEAREST | BILINEAR | FOURTAP}, {
-+ GST_VIDEO_FORMAT_YUY2, NEAREST | BILINEAR | FOURTAP}, {
-+ GST_VIDEO_FORMAT_YVYU, NEAREST | BILINEAR | FOURTAP}, {
-+ GST_VIDEO_FORMAT_UYVY, NEAREST | BILINEAR | FOURTAP}, {
-+ GST_VIDEO_FORMAT_Y800, NEAREST | BILINEAR | FOURTAP}, {
-+ GST_VIDEO_FORMAT_GRAY8, NEAREST | BILINEAR | FOURTAP}, {
-+ GST_VIDEO_FORMAT_GRAY16_LE, NEAREST | BILINEAR | FOURTAP}, {
-+ GST_VIDEO_FORMAT_GRAY16_BE, NEAREST | BILINEAR | FOURTAP}, {
-+ GST_VIDEO_FORMAT_Y16, NEAREST | BILINEAR | FOURTAP}, {
-+ GST_VIDEO_FORMAT_I420, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_YV12, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_Y444, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_Y42B, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_Y41B, NEAREST | BILINEAR | FOURTAP | LANCZOS}, {
-+ GST_VIDEO_FORMAT_NV12, NEAREST | BILINEAR}, {
-+ GST_VIDEO_FORMAT_RGB16, NEAREST | BILINEAR | FOURTAP}, {
-+ GST_VIDEO_FORMAT_RGB15, NEAREST | BILINEAR | FOURTAP}
-+};
-+
-+static gboolean
-+gst_video_scale_format_supported_for_method (GstVideoFormat format,
-+ GstVideoScaleMethod method)
-+{
-+ int i;
-+
-+ for (i = 0; i < G_N_ELEMENTS (formats_methods_table); ++i) {
-+ if (formats_methods_table[i].format == format)
-+ return ((formats_methods_table[i].methods & (1 << method)) != 0);
-+ }
-+ return FALSE;
-+}
-+
-+static gboolean
-+gst_video_scale_transform_supported (GstVideoScale * videoscale,
-+ GstVideoScaleMethod method, GstStructure * structure)
-+{
-+ const GValue *val;
-+ GstVideoFormat fmt;
-+ gboolean supported = TRUE;
-+ GstStructure *s;
-+ GstCaps *c;
-+
-+ /* we support these methods for all formats */
-+ if (method == GST_VIDEO_SCALE_NEAREST || method == GST_VIDEO_SCALE_BILINEAR)
-+ return TRUE;
-+
-+ /* we need fixed caps if we want to use gst_video_parse_caps() */
-+ s = gst_structure_new (gst_structure_get_name (structure),
-+ "width", G_TYPE_INT, 1, "height", G_TYPE_INT, 1, NULL);
-+
-+ if ((val = gst_structure_get_value (structure, "format"))) {
-+ gst_structure_set_value (s, "format", val);
-+ } else {
-+ if ((val = gst_structure_get_value (structure, "endianness")))
-+ gst_structure_set_value (s, "endianness", val);
-+ if ((val = gst_structure_get_value (structure, "red_mask")))
-+ gst_structure_set_value (s, "red_mask", val);
-+ if ((val = gst_structure_get_value (structure, "blue_mask")))
-+ gst_structure_set_value (s, "blue_mask", val);
-+ if ((val = gst_structure_get_value (structure, "green_mask")))
-+ gst_structure_set_value (s, "green_mask", val);
-+ if ((val = gst_structure_get_value (structure, "alpha_mask")))
-+ gst_structure_set_value (s, "alpha_mask", val);
-+ if ((val = gst_structure_get_value (structure, "depth")))
-+ gst_structure_set_value (s, "depth", val);
-+ if ((val = gst_structure_get_value (structure, "bpp")))
-+ gst_structure_set_value (s, "bpp", val);
-+ }
-+ c = gst_caps_new_full (s, NULL);
-+ if (!gst_video_format_parse_caps (c, &fmt, NULL, NULL)) {
-+ GST_ERROR_OBJECT (videoscale, "couldn't parse %" GST_PTR_FORMAT, c);
-+ } else if (!gst_video_scale_format_supported_for_method (fmt, method)) {
-+ supported = FALSE;
-+ }
-+ GST_LOG_OBJECT (videoscale, "method %d %ssupported for format %d",
-+ method, (supported) ? "" : "not ", fmt);
-+ gst_caps_unref (c);
-+
-+ return supported;
-+}
-+
- static GstCaps *
- gst_video_scale_transform_caps (GstBaseTransform * trans,
- GstPadDirection direction, GstCaps * caps)
- {
-+ GstVideoScale *videoscale = GST_VIDEO_SCALE (trans);
-+ GstVideoScaleMethod method;
- GstCaps *ret;
- GstStructure *structure;
-
-@@ -441,6 +549,13 @@ gst_video_scale_transform_caps (GstBaseTransform * trans,
- ret = gst_caps_copy (caps);
- structure = gst_structure_copy (gst_caps_get_structure (ret, 0));
-
-+ GST_OBJECT_LOCK (videoscale);
-+ method = videoscale->method;
-+ GST_OBJECT_UNLOCK (videoscale);
-+
-+ if (!gst_video_scale_transform_supported (videoscale, method, structure))
-+ goto format_not_supported;
-+
- gst_structure_set (structure,
- "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
- "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL);
-@@ -452,9 +567,19 @@ gst_video_scale_transform_caps (GstBaseTransform * trans,
- }
- gst_caps_append_structure (ret, structure);
-
-+done:
-+
- GST_DEBUG_OBJECT (trans, "returning caps: %" GST_PTR_FORMAT, ret);
-
- return ret;
-+
-+format_not_supported:
-+ {
-+ gst_structure_free (structure);
-+ gst_caps_unref (ret);
-+ ret = gst_caps_new_empty ();
-+ goto done;
-+ }
- }
-
- static gboolean
---
-cgit v0.9.0.2-2-gbebe