4 extern gboolean _gst_plugin_spew;
6 void spectrum_chain (GstPad * pad, GstData * _data);
7 gboolean idle_func (gpointer data);
9 GtkWidget *drawingarea;
12 main (int argc, char *argv[])
15 GstElementFactory *srcfactory;
17 GstElementFactory *spectrumfactory;
23 _gst_plugin_spew = TRUE;
25 gst_init (&argc, &argv);
26 gnome_init ("Spectrum", "0.0.1", argc, argv);
28 bin = gst_bin_new ("bin");
30 srcfactory = gst_element_factory_find ("osssrc");
31 spectrumfactory = gst_element_factory_find ("gstspectrum");
33 src = gst_element_factory_create (srcfactory, "src");
34 gtk_object_set (GTK_OBJECT (src), "bytes_per_read", (gulong) 1024, NULL);
35 spectrum = gst_element_factory_create (spectrumfactory, "spectrum");
36 gtk_object_set (GTK_OBJECT (spectrum), "width", 256, NULL);
39 gst_bin_add (GST_BIN (bin), GST_ELEMENT (src));
40 gst_bin_add (GST_BIN (bin), GST_ELEMENT (spectrum));
42 gst_pad_link (gst_element_get_pad (src, "src"),
43 gst_element_get_pad (spectrum, "sink"));
45 spectrumpad = gst_pad_new ("sink", GST_PAD_SINK);
46 gst_pad_set_chain_function (spectrumpad, spectrum_chain);
48 gst_pad_link (gst_element_get_pad (spectrum, "src"), spectrumpad);
50 appwindow = gnome_app_new ("spectrum", "Spectrum");
51 drawingarea = gtk_drawing_area_new ();
52 gtk_drawing_area_size (GTK_DRAWING_AREA (drawingarea), 256, 32);
53 gnome_app_set_contents (GNOME_APP (appwindow), drawingarea);
54 gtk_widget_show_all (appwindow);
56 gst_element_set_state (GST_ELEMENT (bin), GST_STATE_READY);
57 gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PLAYING);
59 g_idle_add (idle_func, src);
68 spectrum_chain (GstPad * pad, GstData * _data)
70 GstBuffer *buf = GST_BUFFER (_data);
72 guchar *data = buf->data;
74 gdk_draw_rectangle (drawingarea->window, drawingarea->style->black_gc,
75 TRUE, 0, 0, GST_BUFFER_SIZE (buf), 25);
76 for (i = 0; i < GST_BUFFER_SIZE (buf); i++) {
77 gdk_draw_rectangle (drawingarea->window, drawingarea->style->white_gc,
78 TRUE, i, 32 - data[i], 1, data[i]);
80 gst_buffer_unref (buf);
84 idle_func (gpointer data)
86 /*gst_src_push(GST_SRC(data)); */