#include #include 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 *wave_widget; GtkWidget *appwindow; gst_init(&argc,&argv); gst_plugin_load("libsmoothwave.so"); gtk_init(&argc,&argv); bin = gst_pipeline_new("bin"); srcfactory = gst_element_factory_find("sinesrc"); g_return_val_if_fail(srcfactory != NULL, -1); wavefactory = gst_element_factory_find("smoothwave"); g_return_val_if_fail(wavefactory != NULL, -1); src = gst_element_factory_create(srcfactory,"src"); //g_object_set(G_OBJECT(src),"bytes_per_read",(gulong)2048,NULL); wave = gst_element_factory_create(wavefactory,"wave"); g_object_set(G_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_link(gst_element_get_pad(src,"src"), gst_element_get_pad(wave,"sink")); appwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_object_get(G_OBJECT(wave),"widget",&wave_widget,NULL); gtk_container_add(GTK_CONTAINER(appwindow), 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; }