summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Kiagiadakis <george.kiagiadakis@collabora.com>2014-04-29 22:18:23 +0200
committerGeorge Kiagiadakis <george.kiagiadakis@collabora.com>2014-05-03 22:31:56 +0300
commit1e11b1ec3f4757aeb4bf039eb6c1d5947124e506 (patch)
treeec90dbadae0fcbd30da9d645f7d03138aceeb894
parent54cbc81aaea7a71d2ae16e1824ed4ef8fa9cd9ad (diff)
gstqtquick2videosink: use a static pad template
This was implemented in code in 0.10 because all the RGB formats were a PITA to do right in static caps.
-rw-r--r--elements/gstqtvideosink/gstqtquick2videosink.cpp29
1 files changed, 8 insertions, 21 deletions
diff --git a/elements/gstqtvideosink/gstqtquick2videosink.cpp b/elements/gstqtvideosink/gstqtquick2videosink.cpp
index 7a8470d..57a08fd 100644
--- a/elements/gstqtvideosink/gstqtquick2videosink.cpp
+++ b/elements/gstqtvideosink/gstqtquick2videosink.cpp
@@ -25,6 +25,8 @@
#include <cstring>
#include <QCoreApplication>
+#define CAPS_FORMATS "{ BGRA, BGRx, ARGB, xRGB, RGB, RGB16, BGR, v308, AYUV, YV12, I420 }"
+
#define GST_QT_QUICK2_VIDEO_SINK_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE ((obj), GST_TYPE_QT_QUICK2_VIDEO_SINK, GstQtQuick2VideoSinkPrivate))
@@ -430,28 +432,13 @@ gst_qt_quick2_video_sink_class_init (GstQtQuick2VideoSinkClass *klass)
g_type_class_add_private (klass, sizeof (GstQtQuick2VideoSinkPrivate));
- static GstVideoFormat supportedFormats[] = {
- GST_VIDEO_FORMAT_BGRA,
- GST_VIDEO_FORMAT_BGRx,
- GST_VIDEO_FORMAT_ARGB,
- GST_VIDEO_FORMAT_xRGB,
- GST_VIDEO_FORMAT_RGB,
- GST_VIDEO_FORMAT_RGB16,
- GST_VIDEO_FORMAT_BGR,
- GST_VIDEO_FORMAT_v308,
- GST_VIDEO_FORMAT_AYUV,
- GST_VIDEO_FORMAT_YV12,
- GST_VIDEO_FORMAT_I420
- };
-
- GstCaps *caps = gst_caps_new_empty();
- for (uint i = 0; i < sizeof(supportedFormats) / sizeof(GstVideoFormat); i++) {
- gst_caps_append(caps, BufferFormat::newTemplateCaps(supportedFormats[i]));
- }
+ static GstStaticPadTemplate sink_pad_template =
+ GST_STATIC_PAD_TEMPLATE("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (CAPS_FORMATS))
+ );
- GstPadTemplate *pad_tmpl = gst_pad_template_new ("sink",
- GST_PAD_SINK, GST_PAD_ALWAYS, caps);
- gst_element_class_add_pad_template(element_class, pad_tmpl);
+ gst_element_class_add_pad_template(
+ element_class, gst_static_pad_template_get(&sink_pad_template));
gst_element_class_set_details_simple(element_class,
"QtQuick2 video sink", "Sink/Video",