#include <gnome.h> #include <gst/gst.h> extern gboolean _gst_plugin_spew; gboolean idle_func(gpointer data); GtkWidget *drawingarea; int main(int argc,char *argv[]) { GstElement *bin; GstElementFactory *srcfactory; GstElement *src; GstElementFactory *wavefactory; GstElement *wave; GtkWidget *appwindow; _gst_plugin_spew = TRUE; gst_init(&argc,&argv); gst_plugin_load("libsmoothwave.so"); gnome_init("Wave","0.0.1",argc,argv); bin = gst_bin_new("bin"); srcfactory = gst_elementfactory_find("audiosrc"); g_return_val_if_fail(srcfactory != NULL, -1); wavefactory = gst_elementfactory_find("smoothwave"); g_return_val_if_fail(wavefactory != NULL, -1); src = gst_elementfactory_create(srcfactory,"src"); gtk_object_set(GTK_OBJECT(src),"bytes_per_read",(gulong)2048,NULL); wave = gst_elementfactory_create(wavefactory,"wave"); gtk_object_set(GTK_OBJECT(wave),"width",256,"height",100,NULL); gst_bin_add(GST_BIN(bin),GST_ELEMENT(src)); gst_bin_add(GST_BIN(bin),GST_ELEMENT(wave)); gst_pad_connect(gst_element_get_pad(src,"src"), gst_element_get_pad(wave,"sink")); appwindow = gnome_app_new("wave","Wave"); gnome_app_set_contents(GNOME_APP(appwindow),gst_util_get_pointer_arg(GTK_OBJECT(wave),"widget")); 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,bin); gtk_main(); return 0; } gboolean idle_func(gpointer data) { gst_bin_iterate(GST_BIN(data)); return TRUE; }