| |
| #include <gst/gst.h> |
| |
| |
| static GstCaps * |
| handler (GObject *object, GstCaps *caps, gpointer user_data) |
| { |
| g_print("in handler %p, %p, %p\n", object, caps, user_data); |
| |
| g_assert (GST_IS_PAD(object)); |
| |
| g_print("caps: %s\n", gst_caps_to_string(caps)); |
| |
| if (gst_caps_is_any (caps)) { |
| return gst_caps_new_simple ("application/x-foo", |
| "field", GST_TYPE_INT_RANGE, 1, 10, NULL); |
| } |
| |
| return NULL; |
| } |
| |
| |
| int |
| main (int argc, char *argv[]) |
| { |
| GstElement *a; |
| GstElement *b; |
| GstElement *pipeline; |
| GstPad *pad; |
| |
| gst_init(&argc, &argv); |
| |
| pipeline = gst_pipeline_new (NULL); |
| |
| a = gst_element_factory_make ("fakesrc", NULL); |
| g_assert (a); |
| b = gst_element_factory_make ("fakesink", NULL); |
| g_assert (b); |
| |
| gst_bin_add_many (GST_BIN (pipeline), a,b, NULL); |
| gst_element_link (a,b); |
| |
| pad = gst_element_get_pad (a, "src"); |
| g_signal_connect (G_OBJECT (pad), "fixate", G_CALLBACK (handler), |
| (void *)0xdeadbeef); |
| |
| gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PLAYING); |
| |
| |
| return 0; |
| } |
| |