caps = gst_pad_query_caps(pad, NULL);
gchar *caps_str = gst_caps_to_string(caps);
+ gst_caps_unref(caps);
if (strstr(caps_str, "h264")) {
parse = gst_element_factory_make("h264parse", NULL);
codec = gst_element_factory_make(codec_list[H264].plugins[0], NULL);
- sink = gst_element_factory_make("fakesink", NULL);
-
- gst_bin_add_many(GST_BIN(pipeline), parse, codec, sink, NULL);
- gst_element_link_many(demux, parse, codec, sink, NULL);
-
- gst_element_set_state(parse, GST_STATE_PAUSED);
- gst_element_set_state(codec, GST_STATE_PAUSED);
- gst_element_set_state(sink, GST_STATE_PAUSED);
} else if (strstr(caps_str, "h263")) {
parse = gst_element_factory_make("h263parse", NULL);
codec = gst_element_factory_make(codec_list[H263].plugins[0], NULL);
- sink = gst_element_factory_make("fakesink", NULL);
-
- gst_bin_add_many(GST_BIN(pipeline), codec, sink, NULL);
- gst_element_link_many(demux, codec, sink, NULL);
-
- gst_element_set_state(parse, GST_STATE_PAUSED);
- gst_element_set_state(codec, GST_STATE_PAUSED);
- gst_element_set_state(sink, GST_STATE_PAUSED);
} else if (strstr(caps_str, "video/mpeg")) {
parse = gst_element_factory_make("mpeg4videoparse", NULL);
codec = gst_element_factory_make(codec_list[MPEG4].plugins[0], NULL);
- sink = gst_element_factory_make("fakesink", NULL);
-
- gst_bin_add_many(GST_BIN(pipeline), parse, codec, sink, NULL);
- gst_element_link_many(demux, parse, codec, sink, NULL);
-
- gst_element_set_state(parse, GST_STATE_PAUSED);
- gst_element_set_state(codec, GST_STATE_PAUSED);
- gst_element_set_state(sink, GST_STATE_PAUSED);
} else {
GST_WARNING_OBJECT(pad, "non video pad");
+ g_free(caps_str);
+ return;
}
- gst_caps_unref(caps);
+ sink = gst_element_factory_make("fakesink", NULL);
+ gst_bin_add_many(GST_BIN(pipeline), parse, codec, sink, NULL);
+ gst_element_link_many(demux, parse, codec, sink, NULL);
+
+ gst_element_set_state(parse, GST_STATE_PAUSED);
+ gst_element_set_state(codec, GST_STATE_PAUSED);
+ gst_element_set_state(sink, GST_STATE_PAUSED);
+ g_free(caps_str);
}
static GstBusSyncReply