From 75eed415457a58dc03455818ce82edfb9f9e5dc7 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 22 Oct 2004 20:09:55 +0000 Subject: gst/spectrum/: Fix demo and reenable it. Yes, I'm currently playing with audio analysis tools Original commit message from CVS: * gst/spectrum/Makefile.am: * gst/spectrum/demo-osssrc.c: (spectrum_chain), (main), (idle_func): Fix demo and reenable it. Yes, I'm currently playing with audio analysis tools --- gst/spectrum/demo-osssrc.c | 86 +++++++++++++++++++--------------------------- 1 file changed, 35 insertions(+), 51 deletions(-) (limited to 'gst/spectrum/demo-osssrc.c') diff --git a/gst/spectrum/demo-osssrc.c b/gst/spectrum/demo-osssrc.c index 1bd2fa11..bba27b3a 100644 --- a/gst/spectrum/demo-osssrc.c +++ b/gst/spectrum/demo-osssrc.c @@ -1,62 +1,63 @@ -#include #include +#include extern gboolean _gst_plugin_spew; -void spectrum_chain (GstPad * pad, GstData * _data); gboolean idle_func (gpointer data); GtkWidget *drawingarea; +void +spectrum_chain (GstElement * sink, GstBuffer * buf, GstPad * pad, + gpointer unused) +{ + gint i; + guchar *data = buf->data; + GdkRectangle rect = { 0, 0, GST_BUFFER_SIZE (buf), 25 }; + + gdk_window_begin_paint_rect (drawingarea->window, &rect); + gdk_draw_rectangle (drawingarea->window, drawingarea->style->black_gc, + TRUE, 0, 0, GST_BUFFER_SIZE (buf), 25); + for (i = 0; i < GST_BUFFER_SIZE (buf); i++) { + gdk_draw_rectangle (drawingarea->window, drawingarea->style->white_gc, + TRUE, i, 32 - data[i], 1, data[i]); + } + gdk_window_end_paint (drawingarea->window); +} + int main (int argc, char *argv[]) { GstElement *bin; - GstElementFactory *srcfactory; - GstElement *src; - GstElementFactory *spectrumfactory; - GstElement *spectrum; - GstPad *spectrumpad; + GstElement *src, *spectrum, *sink; GtkWidget *appwindow; - _gst_plugin_spew = TRUE; - gst_init (&argc, &argv); - gnome_init ("Spectrum", "0.0.1", argc, argv); - - bin = gst_bin_new ("bin"); - - srcfactory = gst_element_factory_find ("osssrc"); - spectrumfactory = gst_element_factory_find ("gstspectrum"); + gtk_init (&argc, &argv); - src = gst_element_factory_create (srcfactory, "src"); - gtk_object_set (GTK_OBJECT (src), "bytes_per_read", (gulong) 1024, NULL); - spectrum = gst_element_factory_create (spectrumfactory, "spectrum"); - gtk_object_set (GTK_OBJECT (spectrum), "width", 256, NULL); + bin = gst_pipeline_new ("bin"); + src = gst_element_factory_make ("osssrc", "src"); + g_object_set (G_OBJECT (src), "buffersize", (gulong) 1024, NULL); + spectrum = gst_element_factory_make ("spectrum", "spectrum"); + g_object_set (G_OBJECT (spectrum), "width", 256, NULL); + sink = gst_element_factory_make ("fakesink", "sink"); + g_object_set (G_OBJECT (sink), "signal-handoffs", TRUE, NULL); + g_signal_connect (sink, "handoff", G_CALLBACK (spectrum_chain), NULL); - gst_bin_add (GST_BIN (bin), GST_ELEMENT (src)); - gst_bin_add (GST_BIN (bin), GST_ELEMENT (spectrum)); + gst_bin_add_many (GST_BIN (bin), src, spectrum, sink, NULL); + gst_element_link_many (src, spectrum, sink, NULL); - gst_pad_link (gst_element_get_pad (src, "src"), - gst_element_get_pad (spectrum, "sink")); - - spectrumpad = gst_pad_new ("sink", GST_PAD_SINK); - gst_pad_set_chain_function (spectrumpad, spectrum_chain); - - gst_pad_link (gst_element_get_pad (spectrum, "src"), spectrumpad); - - appwindow = gnome_app_new ("spectrum", "Spectrum"); + appwindow = gtk_window_new (GTK_WINDOW_TOPLEVEL); drawingarea = gtk_drawing_area_new (); gtk_drawing_area_size (GTK_DRAWING_AREA (drawingarea), 256, 32); - gnome_app_set_contents (GNOME_APP (appwindow), drawingarea); + gtk_container_add (GTK_CONTAINER (appwindow), drawingarea); gtk_widget_show_all (appwindow); - gst_element_set_state (GST_ELEMENT (bin), GST_STATE_READY); gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PLAYING); - g_idle_add (idle_func, src); + g_idle_add (idle_func, bin); gtk_main (); @@ -64,25 +65,8 @@ main (int argc, char *argv[]) } -void -spectrum_chain (GstPad * pad, GstData * _data) -{ - GstBuffer *buf = GST_BUFFER (_data); - gint i; - guchar *data = buf->data; - - gdk_draw_rectangle (drawingarea->window, drawingarea->style->black_gc, - TRUE, 0, 0, GST_BUFFER_SIZE (buf), 25); - for (i = 0; i < GST_BUFFER_SIZE (buf); i++) { - gdk_draw_rectangle (drawingarea->window, drawingarea->style->white_gc, - TRUE, i, 32 - data[i], 1, data[i]); - } - gst_buffer_unref (buf); -} - gboolean idle_func (gpointer data) { - /*gst_src_push(GST_SRC(data)); */ - return TRUE; + return gst_bin_iterate (data); } -- cgit v1.2.1