All pastes #453965 Raw Edit

Stuff

public c v1 · immutable
·published 2007-04-23 09:52 UTC
rendered paste body
void cb_padadded(GstElement *element, GstPad *pad, gpointer user_data){	GstElement* decode = GST_ELEMENT(user_data);		gchar *padname = gst_pad_get_name(pad);	g_print("pad %s was created dynamically!\n", padname);		if (strcmp(padname, "video_00")==0){		g_print("video pad %s created!\n", padname);		if (!gst_pad_is_linked(pad)){			if (!gst_element_link_pads(element, padname, decode, "sink"))				g_print("error while link demux and decode!\n");		}	}}void btn3GP_clicked_cb(GtkWidget* button, gpointer data){		gchar *filepath = "/var/opt/alp/bundles/com.access.apps.gsttest/rsc/1.3gp";	GstElement *pipeline;	GstElement *filesrc, *demux, *sink, *decode;	GMainLoop *loop;	GstBus *bus;	gst_init(NULL, NULL);	loop = g_main_loop_new(NULL, FALSE);		pipeline = gst_pipeline_new("3gpplayer");	bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));	gst_bus_add_watch(bus, my_bus_callback, loop);		filesrc = gst_element_factory_make("filesrc", "filesrc");	g_object_set(G_OBJECT(filesrc), "location", filepath, NULL);		demux = gst_element_factory_make("qtdemux", "demux");	decode = gst_element_factory_make("oki_h263_dec","decode");	sink = gst_element_factory_make("fakesink","sink");		if ((filesrc==NULL) || (demux==NULL) || (decode==NULL) || (sink==NULL))		g_print("error while create element!\n");		g_signal_connect(G_OBJECT(demux), "pad-added", G_CALLBACK(cb_padadded), decode);		gst_bin_add_many(GST_BIN(pipeline), filesrc, demux, decode, sink, NULL);	if (!gst_element_link_many(filesrc, demux, NULL))		g_print("error while link filesrc and qtdemux!\n");			if (!gst_element_link_many(decode, sink, NULL))		g_print("error while link!\n");		gst_element_set_state(pipeline, GST_STATE_PLAYING);	g_main_loop_run(loop);		//clean up	gst_element_set_state(pipeline, GST_STATE_NULL);	gst_object_unref(GST_OBJECT(pipeline));}