summaryrefslogtreecommitdiff
path: root/tests/nego/nego1.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/nego/nego1.c')
-rw-r--r--tests/nego/nego1.c59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/nego/nego1.c b/tests/nego/nego1.c
new file mode 100644
index 0000000000..23848bc87a
--- /dev/null
+++ b/tests/nego/nego1.c
@@ -0,0 +1,59 @@
+#include <gst/gst.h>
+
+/* this is an example of the src pad dictating the caps
+ * the sink pad only accepts audio/raw */
+
+static GstCaps*
+negotiate (GstPad *pad, GstCaps *caps, gint count)
+{
+ g_print ("negotiation entered\n");
+
+ if (!strcmp (gst_caps_get_mime (caps), "audio/raw"))
+ return caps;
+
+ return NULL;
+}
+
+int
+main(int argc,char *argv[])
+{
+ GstPad *srcpad, *sinkpad;
+ GstCaps *new;
+
+ gst_init(&argc,&argv);
+
+ srcpad = gst_pad_new ("src", GST_PAD_SRC);
+ sinkpad = gst_pad_new ("sink", GST_PAD_SINK);
+
+ gst_pad_connect (srcpad, sinkpad);
+
+ gst_pad_set_negotiate_function (sinkpad, negotiate);
+
+ /* fill in our desired caps */
+ new = gst_caps_new_with_props (
+ "src_caps", /* name */
+ "audio/raw", /* mime */
+ gst_props_new (
+ "format", GST_PROPS_INT (16),
+ "depth", GST_PROPS_INT (16),
+ "rate", GST_PROPS_INT (48000),
+ "channels", GST_PROPS_INT (2),
+ NULL
+ )
+ );
+
+ gst_pad_set_caps (srcpad, new);
+
+ new = gst_caps_new_with_props (
+ "src_caps", /* name */
+ "video/raw", /* mime */
+ gst_props_new (
+ "format", GST_PROPS_FOURCC ('Y','U','Y','V'),
+ NULL
+ )
+ );
+
+ gst_pad_set_caps (srcpad, new);
+
+ exit (0);
+}