From: <co...@fr...> - 2004-10-28 02:56:57
|
CVS Root: /home/cvs/gstreamer Module: gst-sandbox Changes by: company Date: Wed Oct 27 2004 19:56:54 PDT Log message: * libs/gstui/Makefile.am: * libs/gstui/equalizer.c: * libs/gstui/equalizer.h: Hi. I'm a dead simple equalizer UI. Make me pretty, please. * configure.ac: * tests/stuff/.cvsignore: * tests/stuff/Makefile.am: * tests/stuff/equalizer.c: (do_quit), (idle_func), (main): add dir for simple tools and with it a simple tool. This one plays a file and gives you an equalizer to play with. Modified files: libgstui : ChangeLog configure.ac libgstui/libs/gstui: Makefile.am Added files: libgstui/libs/gstui: equalizer.c equalizer.h libgstui/tests/stuff: .cvsignore Makefile.am equalizer.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-sandbox/libgstui/ChangeLog.diff?r1=1.14&r2=1.15 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-sandbox/libgstui/configure.ac.diff?r1=1.10&r2=1.11 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-sandbox/libgstui/libs/gstui/Makefile.am.diff?r1=1.3&r2=1.4 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-sandbox/libgstui/libs/gstui/equalizer.c?rev=1.1&content-type=text/vnd.viewcvs-markup http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-sandbox/libgstui/libs/gstui/equalizer.h?rev=1.1&content-type=text/vnd.viewcvs-markup http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-sandbox/libgstui/tests/stuff/.cvsignore?rev=1.1&content-type=text/vnd.viewcvs-markup http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-sandbox/libgstui/tests/stuff/Makefile.am?rev=1.1&content-type=text/vnd.viewcvs-markup http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-sandbox/libgstui/tests/stuff/equalizer.c?rev=1.1&content-type=text/vnd.viewcvs-markup ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /home/cvs/gstreamer/gst-sandbox/libgstui/ChangeLog,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- ChangeLog 3 May 2004 19:17:57 -0000 1.14 +++ ChangeLog 28 Oct 2004 02:56:42 -0000 1.15 @@ -1,3 +1,16 @@ +2004-10-28 Benjamin Otte <ot...@gn...> + + * libs/gstui/Makefile.am: + * libs/gstui/equalizer.c: + * libs/gstui/equalizer.h: + Hi. I'm a dead simple equalizer UI. Make me pretty, please. + * configure.ac: + * tests/stuff/.cvsignore: + * tests/stuff/Makefile.am: + * tests/stuff/equalizer.c: (do_quit), (idle_func), (main): + add dir for simple tools and with it a simple tool. This one plays a + file and gives you an equalizer to play with. 2004-05-03 David Schleef <ds...@sc...> * configure.ac: A few build fixes. Index: configure.ac RCS file: /home/cvs/gstreamer/gst-sandbox/libgstui/configure.ac,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- configure.ac 3 May 2004 19:17:57 -0000 1.10 +++ configure.ac 28 Oct 2004 02:56:42 -0000 1.11 @@ -91,5 +91,6 @@ src/Makefile tests/Makefile tests/basevideo/Makefile + tests/stuff/Makefile ]) Index: Makefile.am RCS file: /home/cvs/gstreamer/gst-sandbox/libgstui/libs/gstui/Makefile.am,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Makefile.am 6 Jan 2004 06:52:37 -0000 1.3 +++ Makefile.am 28 Oct 2004 02:56:42 -0000 1.4 @@ -5,6 +5,7 @@ libgstui_@GSTUI_MAJORMINOR@_includedir = $(includedir)/libgstui-@GSTUI_MAJORMINOR@/gstui libgstui_@GSTUI_MAJORMINOR@_include_HEADERS = \ basevideo.h \ + equalizer.h \ video.h noinst_HEADERS = \ @@ -12,6 +13,7 @@ libgstui_@GSTUI_MAJORMINOR@_la_SOURCES = \ basevideo.c \ + equalizer.c \ video.c libgstui_@GSTUI_MAJORMINOR@_la_CFLAGS = $(EXTERNAL_CFLAGS) --- NEW FILE: equalizer.c --- /* GStreamer * Copyright (C) 2003 Benjamin Otte <in...@pu...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #include "equalizer.h" #include "unbreak.h" #include <libgnome/gnome-i18n.h> #include <gtk/gtkvscale.h> /* Signals and Args */ enum { ARG_0, ARG_ELEMENT }; static void gstui_equalizer_class_init (gpointer g_class, gpointer class_data); static void gstui_equalizer_init (GTypeInstance * instance, gpointer g_class); static void gstui_equalizer_dispose (GObject * object); static void gstui_equalizer_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void gstui_equalizer_get_property (GObject * object, GValue * value, static void gstui_equalizer_size_request (GtkWidget * widget, GtkRequisition * requisition); static GtkHBoxClass *parent_class = NULL; GType gstui_equalizer_get_type (void) { static GType type = 0; if (!type) { static const GTypeInfo info = { sizeof (GstuiEqualizerClass), NULL, gstui_equalizer_class_init, sizeof (GstuiEqualizer), 0, gstui_equalizer_init, }; type = g_type_register_static (GTK_TYPE_HBOX, "GstuiEqualizer", &info, (GTypeFlags) 0); } return type; } static void gstui_equalizer_class_init (gpointer g_class, gpointer class_data) GObjectClass *gobject_class = G_OBJECT_CLASS (g_class); GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (g_class); parent_class = g_type_class_peek_parent (g_class); gobject_class->set_property = gstui_equalizer_set_property; gobject_class->get_property = gstui_equalizer_get_property; gobject_class->dispose = gstui_equalizer_dispose; g_object_class_install_property (gobject_class, ARG_ELEMENT, g_param_spec_object ("element", _("Element"), _("The current equalizer GstElement that is used"), GST_TYPE_ELEMENT, G_PARAM_READWRITE)); widget_class->size_request = gstui_equalizer_size_request; value_changed_cb (GtkVScale *scale, GstuiEqualizer *widget) guint i = 0; while (GTK_WIDGET (scale) != widget->scales[i]) i++; widget->values[i] = gtk_range_get_value (GTK_RANGE (scale)); if (widget->element) g_object_set (widget->element, "values", widget->values, NULL); gstui_equalizer_init (GTypeInstance *instance, gpointer g_class) guint i; GtkWidget *scale; GtkBox *box = GTK_BOX (instance); GstuiEqualizer *equ = GSTUI_EQUALIZER (instance); gtk_box_set_homogeneous (box, TRUE); for (i = 0; i < 15; i++) { scale = gtk_vscale_new_with_range (-1.0, 1.0, 0.1); gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE); gtk_range_set_inverted (GTK_RANGE (scale), TRUE); gtk_range_set_value (GTK_RANGE (scale), 0.0); g_signal_connect (scale, "value-changed", G_CALLBACK (value_changed_cb), instance); gtk_box_pack_start (box, scale, TRUE, FALSE, 0); equ->scales[i] = scale; gstui_equalizer_dispose (GObject *object) GstuiEqualizer *widget = GSTUI_EQUALIZER (object); gstui_equalizer_set_element (widget, NULL); gstui_equalizer_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) switch (prop_id) { case ARG_ELEMENT: gstui_equalizer_set_element (widget, GST_ELEMENT (g_value_get_object (value))); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } gstui_equalizer_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) g_value_set_object (value, gstui_equalizer_get_element (widget)); gstui_equalizer_size_request (GtkWidget *widget, GtkRequisition *requisition) GTK_WIDGET_CLASS (parent_class)->size_request (widget, requisition); requisition->height *= 3; void gstui_equalizer_set_element (GstuiEqualizer *widget, GstElement *equalizer) g_return_if_fail (GSTUI_IS_EQUALIZER (widget)); g_return_if_fail (equalizer == NULL || GST_IS_ELEMENT (equalizer)); /* FIXME: need an interface */ g_return_if_fail (equalizer == NULL || g_str_equal (G_OBJECT_TYPE_NAME(equalizer), "GstIirEqualizer")); gst_object_replace ((GstObject **) &GSTUI_EQUALIZER (widget)->element, GST_OBJECT (equalizer)); GstElement * gstui_equalizer_get_element (GstuiEqualizer *widget) g_return_val_if_fail (GSTUI_IS_EQUALIZER (widget), NULL); return GSTUI_EQUALIZER (widget)->element; GtkWidget * gstui_equalizer_new (void) return GTK_WIDGET (g_object_new (GSTUI_TYPE_EQUALIZER, NULL)); --- NEW FILE: equalizer.h --- * Copyright (C) 2004 Benjamin Otte <ot...@gn...> #ifndef __GSTUI_EQUALIZER_H__ #define __GSTUI_EQUALIZER_H__ #include <gtk/gtkhbox.h> #include <gdk-pixbuf/gdk-pixbuf.h> #include <gst/xoverlay/xoverlay.h> #include <gst/gst.h> #define GSTUI_TYPE_EQUALIZER (gstui_equalizer_get_type ()) #define GSTUI_EQUALIZER(obj) (GTK_CHECK_CAST ((obj), GSTUI_TYPE_EQUALIZER, GstuiEqualizer)) #define GSTUI_EQUALIZER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GSTUI_TYPE_EQUALIZER, GstuiEqualizerClass)) #define GSTUI_IS_EQUALIZER(obj) (GTK_CHECK_TYPE ((obj), GSTUI_TYPE_EQUALIZER)) #define GSTUI_IS_EQUALIZER_CLASS(obj) (GTK_CHECK_CLASS_TYPE ((klass), GSTUI_TYPE_EQUALIZER)) typedef struct _GstuiEqualizer GstuiEqualizer; typedef struct _GstuiEqualizerClass GstuiEqualizerClass; struct _GstuiEqualizer GtkHBox hbox; GtkWidget * scales[15]; gdouble values[15]; GstElement * element; gpointer _gst_reserved[GST_PADDING]; struct _GstuiEqualizerClass GtkHBoxClass hbox_class; GType gstui_equalizer_get_type (void); GtkWidget * gstui_equalizer_new (void); void gstui_equalizer_set_element (GstuiEqualizer * widget, GstElement * equalizer); GstElement * gstui_equalizer_get_element (GstuiEqualizer * widget); #endif /* __GSTUI_EQUALIZER_H__ */ --- NEW FILE: .cvsignore --- equalizer --- NEW FILE: Makefile.am --- noinst_PROGRAMS = equalizer AM_CFLAGS = $(APP_CFLAGS) AM_LDFLAGS = $(APP_LIBS) #include <gstui/equalizer.h> #include <gtk/gtk.h> static gboolean do_quit (gpointer data) gtk_main_quit (); return FALSE; idle_func (gpointer pipeline) if (!gst_bin_iterate (pipeline)) { gtk_main_quit (); return FALSE; } else { return TRUE; gint main (int argc, gchar **argv) GtkWidget *window, *equalizer; GstElement *pipeline, *equ, *src; GError *error = NULL; gst_init (&argc, &argv); gtk_init (&argc, &argv); if (argc < 2) { g_print ("Usage: %s <file>\n", argv[0]); return 1; /* gst stuff */ pipeline = gst_parse_launch ("gnomevfssrc name=src ! spider ! audioconvert ! equalizer name=equ ! osssink", &error); if (error) { g_print ("Error creating pipeline: %s\n", error->message); return 2; src = gst_bin_get_by_name (GST_BIN (pipeline), "src"); g_object_set (src, "location", argv[1], NULL); equ = gst_bin_get_by_name (GST_BIN (pipeline), "equ"); g_assert (equ); if (gst_element_set_state (pipeline, GST_STATE_PLAYING) != GST_STATE_SUCCESS) { g_print ("Couldn't set pipeline to playing.\n"); return 3; g_idle_add (idle_func, pipeline); /* gtk stuff */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); equalizer = gstui_equalizer_new (); gtk_container_add (GTK_CONTAINER (window), equalizer); gstui_equalizer_set_element (GSTUI_EQUALIZER (equalizer), equ); g_signal_connect (window, "delete-event", G_CALLBACK (do_quit), NULL); gtk_widget_show_all (window); gtk_main (); return 0; |