gnomemm r1413 - in gstreamermm/trunk: . tests
- From: jaalburqu svn gnome org
- To: svn-commits-list gnome org
- Subject: gnomemm r1413 - in gstreamermm/trunk: . tests
- Date: Wed, 19 Mar 2008 23:52:52 +0000 (GMT)
Author: jaalburqu
Date: Wed Mar 19 23:52:51 2008
New Revision: 1413
URL: http://svn.gnome.org/viewvc/gnomemm?rev=1413&view=rev
Log:
2008-03-19 Josà Alburquerque <jaalburqu svn gnome org>
* tests/test-caps.cc: Modified test to use a Gst::Caps to link two
Gst::Elements using feature (caps) negotiation (filtered linking) as
exemplified in Gstreamer Application Development Manual (GADM) section
8.3.2
Modified:
gstreamermm/trunk/ChangeLog
gstreamermm/trunk/tests/test-caps.cc
Modified: gstreamermm/trunk/tests/test-caps.cc
==============================================================================
--- gstreamermm/trunk/tests/test-caps.cc (original)
+++ gstreamermm/trunk/tests/test-caps.cc Wed Mar 19 23:52:51 2008
@@ -22,24 +22,52 @@
#include <gstreamermm.h>
#include <iostream>
+// Following code adapted from GStreamer Application Development Manual
+// section 8.3.2 (feature negotiation)
+
+int link_elements_with_filter (const Glib::RefPtr<Gst::Element> e1,
+ const Glib::RefPtr<Gst::Element> e2)
+{
+ Glib::Value<int> widthValue;
+ widthValue.init(Glib::Value<int>::value_type());
+ widthValue.set(384);
+
+ Glib::Value<int> heightValue;
+ heightValue.init(Glib::Value<int>::value_type());
+ heightValue.set(288);
+
+ Glib::Value<Gst::Fraction> rateValue;
+ rateValue.init(Glib::Value<Gst::Fraction>::value_type());
+ rateValue.set(Gst::Fraction(25, 1));
+
+ Glib::RefPtr<Gst::Caps> caps = Gst::Caps::create(
+ Gst::Structure("video/x-raw-yuv").set_field("width", widthValue).set_field("height", heightValue).set_field("framerate", rateValue));
+
+ caps->append_structure(
+ Gst::Structure("video/x-raw-rgb").set_field("width", widthValue)
+ .set_field("height", heightValue).set_field("framerate", rateValue));
+
+ return e1->link_filtered(e2, caps);
+}
+
int main (int argc, char* argv[])
{
+ Glib::RefPtr<Gst::Pipeline> pipeline;
+ Glib::RefPtr<Gst::Element> e1, e2;
+
Gst::init(argc, argv);
- Glib::RefPtr<Gst::Caps> caps = Gst::Caps::create_simple("video/x-raw-yuv");
-
- //caps->set_simple("width", Glib::Value<int>(384));
- //caps->set_simple("height", Glib::Value<int>(288));
-
- Glib::Value<int> width, height;
- width.init(G_TYPE_INT);
- width.set(384);
+ pipeline = Gst::Pipeline::create("pipeline");
+
+ e1 = Gst::ElementFactory::create("fakesrc", "source");
+ e2 = Gst::ElementFactory::create("fakesink", "sink");
- height.init(G_TYPE_INT);
- height.set(288);
+ pipeline->add(e1)->add(e2);
- caps->set_simple("width", width);
- caps->set_simple("height", height);
+ if (!link_elements_with_filter(e1, e2))
+ std::cerr << "Falied to link e1 and e2." << std::endl;
+ else
+ std::cerr << "Succeeded linking e1 and e2 with filter." << std::endl;
return 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]