Various cleanups. Moved the overlay code to a specialized widget.
authorWim Taymans <wim.taymans@gmail.com>
Mon, 13 Mar 2000 22:13:11 +0000 (22:13 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Mon, 13 Mar 2000 22:13:11 +0000 (22:13 +0000)
Original commit message from CVS:
Various cleanups. Moved the overlay code to a specialized widget.
One error I cannot seem to fix: switching desktops does not disable the
overlay.

12 files changed:
configure.in
gst/gst.c
gst/gstbuffer.h
gst/gstelementfactory.c
gst/gstmeta.c
gst/gstplugin.h
gst/gstthread.c
gst/gsttype.h
gst/meta/videoraw.h
gst/types/gsttypes.c
test/Makefile.am
test/videotest.c

index b31bd50..44d220e 100644 (file)
@@ -297,6 +297,8 @@ gst/xml/Makefile
 plugins/Makefile
 plugins/au/Makefile
 plugins/wav/Makefile
+plugins/riff/Makefile
+plugins/riff/avi/Makefile
 plugins/mp3decode/Makefile
 plugins/mp3decode/xa/Makefile
 plugins/mp3decode/xing/Makefile
index f12f6aa..7c2da8a 100644 (file)
--- a/gst/gst.c
+++ b/gst/gst.c
@@ -31,7 +31,6 @@ extern gint _gst_trace_on;
  */
 void gst_init(int *argc,char **argv[]) {
   GstTrace *gst_trace;
-  GstElementFactory *factory;
 
   gtk_init(argc,argv);
 
index bd412b4..0bc62f7 100644 (file)
@@ -99,6 +99,8 @@ struct _GstBuffer {
   GstBuffer *parent;
 };
 
+/* initialisation */
+void _gst_buffer_initialize();
 /* creating a new buffer from scratch */
 GstBuffer *gst_buffer_new();
 
index c6f185f..51f65d8 100644 (file)
@@ -110,8 +110,8 @@ GstElement *gst_elementfactory_create(GstElementFactory *factory,
   GstElement *element;
   GstElementClass *oclass;
 
-  g_return_if_fail(factory != NULL);
-  g_return_if_fail(factory->type != 0);
+  g_return_val_if_fail(factory != NULL, NULL);
+  g_return_val_if_fail(factory->type != 0, NULL);
 
   // create an instance of the element
   element = GST_ELEMENT(gtk_type_new(factory->type));
index 2af356c..4b9665f 100644 (file)
@@ -25,7 +25,7 @@
 GstMeta *gst_meta_new_size(gint size) {
   GstMeta *meta;
 
-  meta = g_malloc(size);
+  meta = g_malloc0(size);
   gst_meta_ref(meta);
 
   return meta;
index 164ca85..eb57c13 100644 (file)
@@ -49,7 +49,7 @@ typedef GstPlugin * (*GstPluginInitFunc) (GModule *module);
 GstPlugin *gst_plugin_new(gchar *name);
 void gst_plugin_set_longname(GstPlugin *plugin,gchar *longname);
 
-void gst_plugin_init();
+void _gst_plugin_initialize();
 void gst_plugin_load_all();
 gboolean gst_plugin_load(gchar *name);
 gboolean gst_plugin_load_absolute(gchar *name);
index e35d52b..0a3c52a 100644 (file)
@@ -94,7 +94,7 @@ gst_thread_class_init(GstThreadClass *klass) {
                           GTK_ARG_READWRITE, ARG_CREATE_THREAD);
 
   gstelement_class->change_state = gst_thread_change_state;
-//  gstelement_class->save_thyself = gst_thread_save_thyself;
+  gstelement_class->save_thyself = gst_thread_save_thyself;
 
   gtkobject_class->set_arg = gst_thread_set_arg;
   gtkobject_class->get_arg = gst_thread_get_arg;
index fa96bf8..dc48eef 100644 (file)
@@ -52,7 +52,7 @@ struct _GstTypeFactory {
 
 
 /* initialize the subsystem */
-void gst_type_initialize();
+void _gst_type_initialize();
 
 /* create a new type, or find/merge an existing one */
 guint16 gst_type_register(GstTypeFactory *factory);
index 8901db4..321621b 100644 (file)
@@ -58,11 +58,14 @@ struct _MetaOverlay {
        // the position of the window
        int wx, wy;
        // a reference to the object sending overlay change events
-       GstObject *overlay_element;
+       GtkWidget *overlay_element;
        // the number of overlay regions
        int clip_count;
        // the overlay regions of the display window
        struct _OverlayClip overlay_clip[32];
+
+  gint width;
+  gint height;
        
        gboolean did_overlay;
        gboolean fully_obscured;
index 907c86c..c88f08d 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <gtk/gtk.h>
 #include <gst/gst.h>
+#include <string.h>
 
 gint mp3_typefind(GstBuffer *buf,gpointer *private);
 gint wav_typefind(GstBuffer *buf,gpointer *private);
@@ -30,7 +31,8 @@ GstTypeFactory _factories[] = {
   { "audio/wav", ".wav", wav_typefind },
   { "audio/ac3", ".ac3", NULL },
   { "video/raw", ".raw", NULL },
-  { "video/mpeg video/mpeg1", ".mpg", NULL },
+  { "video/mpeg video/mpeg1 video/mpeg-system", ".mpg", NULL },
+  { "video/x-msvideo video/msvideo video/avi", ".avi", NULL },
   { NULL, NULL, NULL },
 };
 
@@ -58,8 +60,8 @@ gboolean mp3_typefind(GstBuffer *buf,gpointer *private) {
 gboolean wav_typefind(GstBuffer *buf,gpointer *private) {
   gulong *data = (gulong *)GST_BUFFER_DATA(buf);
 
-  if (data[0] != "RIFF") return FALSE;
-  if (data[2] != "WAVE") return FALSE;
+  if (strncmp((char *)data[0], "RIFF", 4)) return FALSE;
+  if (strncmp((char *)data[2], "WAVE", 4)) return FALSE;
 
   return TRUE;
 }
index ca58fd4..80b9ca0 100644 (file)
@@ -1,6 +1,7 @@
 #noinst_PROGRAMS = basic m types a r plugin w s args mpg123 mcut push qtest
 noinst_PROGRAMS = qtest spectrum record wave mp3 teardown buffer mp3parse \
-                 mpeg2parse mp1parse mp3play ac3parse ac3play dvdcat fake cobin videotest
+                 mpeg2parse mp1parse mp3play ac3parse ac3play dvdcat fake cobin videotest \
+                       aviparse
 
 SUBDIRS = xml cothreads bindings
 
@@ -10,6 +11,8 @@ wave_CFLAGS = $(shell gnome-config --cflags gnomeui)
 wave_LDFLAGS = $(shell gnome-config --libs gnomeui)
 videotest_CFLAGS = $(shell gnome-config --cflags gnomeui)
 videotest_LDFLAGS = $(shell gnome-config --libs gnomeui)
+aviparse_CFLAGS = $(shell gnome-config --cflags gnomeui)
+aviparse_LDFLAGS = $(shell gnome-config --libs gnomeui)
 mp1parse_CFLAGS = $(shell gnome-config --cflags gnomeui)
 mp1parse_LDFLAGS = $(shell gnome-config --libs gnomeui)
 
index 0c97387..ed058e0 100644 (file)
@@ -8,23 +8,15 @@ gboolean idle_func(gpointer data);
 GstElement *videosink;
 GstElement *src;
 
-void eof(GstSrc *src) {
-  g_print("have eos, quitting\n");
-  exit(0);
-}
-
-void resize(GtkWidget *wid, GtkRequisition *req, gpointer sink) {
-  g_print("have resize %d %d\n", req->width, req->height);
-  gtk_object_set(GTK_OBJECT(videosink),"width",req->width,"height",req->height,NULL);
-}
-
-
 int main(int argc,char *argv[]) {
   GstElement *bin;
   GstElementFactory *srcfactory;
   GstElementFactory *videosinkfactory;
 
   GtkWidget *appwindow;
+  GtkWidget *vbox1;
+  GtkWidget *button;
+  GtkWidget *draw;
 
 
        _gst_plugin_spew = TRUE;
@@ -51,16 +43,27 @@ int main(int argc,char *argv[]) {
   gst_pad_connect(gst_element_get_pad(src,"src"),
                   gst_element_get_pad(videosink,"sink"));
 
-       gtk_signal_connect(GTK_OBJECT(src),"eos",
-                                                                GTK_SIGNAL_FUNC(eof),NULL);
-
   appwindow = gnome_app_new("Videotest","Videotest");
-  gnome_app_set_contents(GNOME_APP(appwindow),
-                                                                       gst_util_get_widget_arg(GTK_OBJECT(videosink),"widget"));
+
+       vbox1 = gtk_vbox_new (FALSE, 0);
+       gtk_widget_show (vbox1);
+
+  button = gtk_button_new_with_label(_("test"));//_with_label (_("chup"));
+       gtk_widget_show (button);
+  gtk_box_pack_start (GTK_BOX (vbox1), button, FALSE, FALSE, 0);
+  //gtk_widget_set_usize (button, 50, 50);
+  //gtk_widget_set_usize (button, 0, 0);
+
+       draw = gst_util_get_widget_arg(GTK_OBJECT(videosink),"widget"),
+  gtk_box_pack_start (GTK_BOX (vbox1), 
+                                                                       draw,
+                                                               TRUE, TRUE, 0);
+       gtk_widget_show (draw);
+       
+  gnome_app_set_contents(GNOME_APP(appwindow), vbox1);
+                                                               
   gtk_object_set(GTK_OBJECT(appwindow),"allow_grow",TRUE,NULL);
   gtk_object_set(GTK_OBJECT(appwindow),"allow_shrink",TRUE,NULL);
-//     gtk_signal_connect(GTK_OBJECT(appwindow),"size-request",
-//                                                      GTK_SIGNAL_FUNC(resize),videosink);
 
   gtk_widget_show_all(appwindow);