All pastes #20412 Raw Edit

kikidonk

public c v1 · immutable
#20412 ·published 2005-08-19 12:20 UTC
rendered paste body
#include <gst/gst.h>#include <gst/gconf/gconf.h>typedef struct{	gboolean play;	guint attempt;	GstElement *bin;} Data;static gbooleantick (Data *data){	data->attempt++;	g_print ("Attempt %d to change state", data->attempt);	if (data->play) {		g_print("State: READY->PLAYING\n");		gst_element_set_state (data->bin, GST_STATE_PLAYING);	}	else {		g_print("State: PLAYING->READY\n");		gst_element_set_state (data->bin, GST_STATE_READY);	}		data->play = !data->play;	return TRUE;}int main (int argc, char **argv){	GstElement *playbin;	GstElement *gconf;	GstElement *bin;	GstElement *tee;	GstElement *tcpserversink;	Data *data;		gst_init (&argc, &argv);		/* Here is the layout:	Playbin's Audiosink:			-Bin				-Tee					- Gconf (alsa)					- tcpserversink	*/		playbin = gst_element_factory_make ("playbin", "playbin");	//Change this to a file on your drive	g_object_set (G_OBJECT (playbin), "uri", "file:///home/kikidonk/lone-music/iced.mp3", NULL);	bin = gst_bin_new ("bin");	gconf = gst_gconf_get_default_audio_sink ();	tee = gst_element_factory_make ("tee", "tee");	tcpserversink = gst_element_factory_make ("tcpserversink", "tcp");		g_object_set (G_OBJECT (tcpserversink), 			"port", 10333,			"protocol", 1,			NULL);		gst_bin_add (GST_BIN (bin), gconf);	gst_bin_add (GST_BIN (bin), tee);	gst_bin_add (GST_BIN (bin), tcpserversink);		gst_element_link (tee, gconf);	gst_element_link (tee, tcpserversink);		gst_element_add_ghost_pad (bin, gst_element_get_pad (tee, "sink"), "sink");			g_object_set (G_OBJECT (playbin), "audio-sink", bin, NULL);	gst_element_set_state (playbin, GST_STATE_PLAYING);		/* Every 2 sec, switch between PLAYING and READY state the playbin */	data = g_new0(Data, 1);	data->play = FALSE;	data->bin = playbin;	data->attempt = 0;	g_timeout_add (2000, (GSourceFunc) tick, data);		/* Go ! */	gst_main ();		gst_element_set_state (playbin, GST_STATE_NULL);	gst_object_unref (GST_OBJECT (playbin));	g_free (data);		return 0;}