MPEG2 types added for better autoplugging. MPEG2 works more or less. fix in autoplugg...
authorWim Taymans <wim.taymans@gmail.com>
Sat, 21 Oct 2000 12:04:40 +0000 (12:04 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Sat, 21 Oct 2000 12:04:40 +0000 (12:04 +0000)
Original commit message from CVS:
MPEG2 types added for better autoplugging. MPEG2 works more or less.
fix in autoplugging. avi now works.

configure.in
docs/manual/gstreamer-manual.sgml
gst/Makefile.am
gst/cothreads.c
gst/elements/gstdisksrc.c
gst/gstbin.c
gst/gstpad.c
gst/gstpad.h
gst/gstpipeline.c
plugins/elements/gstdisksrc.c

index 28c59fe5fc4df086593a460e402ee7e94b7c83bd..e65c6dc2330bc7ac2c80e387ccf48750fcc297c9 100644 (file)
@@ -433,6 +433,8 @@ plugins/mpeg2/ac3dec/Makefile
 plugins/mpeg2/video/Makefile
 plugins/mpeg2/mpeg2enc/Makefile
 plugins/mpeg2/subtitles/Makefile
+plugins/mpeg2/videoparse/Makefile
+plugins/mpeg2/mpegtypes/Makefile
 plugins/mpeg1/Makefile
 plugins/mpeg1/mpegtypes/Makefile
 plugins/mpeg1/mpeg_play/Makefile
index b043418bac4fd23ad684f936f44e57a069017aa5..1526bfbb8b779fc13abd0ebf08e5a8f94956d625 100644 (file)
@@ -1,4 +1,4 @@
-<!doctype book PUBLIC "-//GNOME//DTD DocBook PNG Variant V1.0//EN" [ 
+<!DOCTYPE book PUBLIC "-//GNOME//DTD DocBook PNG Variant V1.0//EN" "" [ 
 <!ENTITY INTRO SYSTEM "intro.sgml">
 <!ENTITY MOTIVATION SYSTEM "motivation.sgml">
 <!ENTITY GOALS SYSTEM "goals.sgml">
index 53d458d097a16ee52e43a7f54bcf32878195ed90..2b71fc95f6fdf46c0f97823bed8412df8f18fbf3 100644 (file)
@@ -78,7 +78,7 @@ noinst_HEADERS =      \
        gsti386.h       \
        gstppc.h        
 
-CFLAGS += -O2 -Wall -fomit-frame-pointer
+CFLAGS += -O2 -Wall 
 
 libgst_la_LIBADD = $(GLIB_LIBS) $(GTK_LIBS) $(XML_LIBS)
 libgst_la_LDFLAGS = -version-info $(STREAMER_CURRENT):$(STREAMER_REVISION):$(STREAMER_AGE)
index dd14b9d7b9a226cd696242950c133317b53d9bb1..dea05945c827ac232df37f36d16ccb30797b614a 100644 (file)
@@ -19,7 +19,8 @@ cothread_state *cothread_create(cothread_context *ctx) {
   cothread_state *s;
 
   DEBUG("cothread: pthread_self() %ld\n",pthread_self());
-  if (pthread_self() == 0) {
+  if (0) {
+  //if (pthread_self() == 0) {
     s = (cothread_state *)malloc(sizeof(int) * COTHREAD_STACKSIZE);
     DEBUG("cothread: new stack at %p\n",s);
   } else {
index 1ec3591d8d18acc55cfee6462390ee93f5346e2d..fc50da5acf426333497961164779978632d2b27d 100644 (file)
@@ -22,6 +22,8 @@
 #include <fcntl.h>
 #include <unistd.h>
 
+//#define DEBUG_ENABLED
+
 #include <gstdisksrc.h>
 
 
@@ -241,6 +243,7 @@ void gst_disksrc_push(GstSrc *src) {
   DEBUG("pushing with offset %d\n", GST_BUFFER_OFFSET(buf));
   /* we're done, push the buffer off now */
   gst_pad_push(disksrc->srcpad,buf);
+  DEBUG("pushing with offset %d done\n", GST_BUFFER_OFFSET(buf));
 }
 
 
index 430d656250928234f44ba4c22405cf8c78fc8b8b..d3a0d1e14017ad91feddcb76f65194de7dc9fe41 100644 (file)
@@ -716,6 +716,8 @@ void gst_bin_iterate_func(GstBin *bin) {
     DEBUG("** in gst_bin_iterate_func()==================================%s\n",
           gst_element_get_name(GST_ELEMENT(bin->children->data)));
     cothread_switch(GST_ELEMENT(bin->children->data)->threadstate);
+    DEBUG("** out gst_bin_iterate_func()==================================%s\n",
+          gst_element_get_name(GST_ELEMENT(bin->children->data)));
   } else {
     if (bin->numentries <= 0) {
       printf("gstbin: no entries in bin \"%s\" trying children...\n", gst_element_get_name(GST_ELEMENT(bin)));
index c5cfc024ae3f4bd0adb9dd50538b4781beb6df58..063a44d2d59b276181a41fca8ba805dfc0ca5af0 100644 (file)
@@ -225,7 +225,8 @@ GstBuffer *gst_pad_pull(GstPad *pad) {
 //      g_print("-- gst_pad_pull(): calling pull handler\n");
       (pad->pullfunc)(pad->peer);
     } else {
-      g_print("-- gst_pad_pull(): no buffer in pen, and no handler to get one there!!!\n");
+      g_print("-- gst_pad_pull(%s:%s): no buffer in pen, and no handler to get one there!!!\n", 
+                     GST_ELEMENT(pad->parent)->name, pad->name);
     }
   }
 
@@ -237,7 +238,8 @@ GstBuffer *gst_pad_pull(GstPad *pad) {
     return buf;
   // else we have a big problem...
   } else {
-    g_print("-- gst_pad_pull(): uh, nothing in pen and no handler\n");
+    g_print("-- gst_pad_pull(%s:%s): no buffer in pen, and no handler\n", 
+                     GST_ELEMENT(pad->parent)->name, pad->peer->name);
     return NULL;
   }
 
index e92eff360f4f2a1c784aa43464db8b23c5ed5a43..72919c494f2aec91de8e8a2fcb96eec8d3aa28db 100644 (file)
@@ -39,8 +39,8 @@ extern "C" {
 #define GST_IS_PAD_CLASS(obj)        (GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_PAD))
 
 // quick test to see if the pad is connected
-#define GST_PAD_CONNECTED(pad) ((pad)->peer != NULL)
-#define GST_PAD_CAN_PULL(pad) ((pad)->pullfunc != NULL)
+#define GST_PAD_CONNECTED(pad) (pad && (pad)->peer != NULL)
+#define GST_PAD_CAN_PULL(pad) (pad && (pad)->pullfunc != NULL)
 
 typedef struct _GstPad GstPad;
 typedef struct _GstPadClass GstPadClass;
index b636204d69e917d1b8f503a7fc653035dd105e85..076aa7983745d457062945a5e6d48fc73d5ec156 100644 (file)
@@ -303,6 +303,7 @@ gboolean gst_pipeline_autoplug(GstPipeline *pipeline) {
   GList *elements;
   GstElement *element, *srcelement = NULL, *sinkelement= NULL;
   GList **factories;
+  GList **base_factories;
   GstElementFactory *factory;
   GList *src_types;
   guint16 src_type = 0, sink_type = 0;
@@ -354,6 +355,7 @@ gboolean gst_pipeline_autoplug(GstPipeline *pipeline) {
 
   numsinks = g_list_length(elements);
   factories = g_new0(GList *, numsinks);
+  base_factories = g_new0(GList *, numsinks);
 
   i = 0;
   // fase 2, loop over all the sinks.. 
@@ -376,8 +378,7 @@ gboolean gst_pipeline_autoplug(GstPipeline *pipeline) {
       pads = g_list_next(pads);
     }
 
-    factories[i] = gst_type_get_sink_to_src(src_type, sink_type);
-    //factories[i] = g_list_append(factories[i], element);
+    base_factories[i] = factories[i] = gst_type_get_sink_to_src(src_type, sink_type);
     i++;
 
     elements = g_list_next(elements);
@@ -419,7 +420,7 @@ differ:
     GstElement *thesrcelement = srcelement;
     GstElement *thebin = GST_ELEMENT(pipeline);
 
-    if (g_list_length(factories[i]) < 1) goto next;
+    if (g_list_length(base_factories[i]) == 0) goto next;
 
     sinkelement = (GstElement *)elements->data;
 
index 1ec3591d8d18acc55cfee6462390ee93f5346e2d..fc50da5acf426333497961164779978632d2b27d 100644 (file)
@@ -22,6 +22,8 @@
 #include <fcntl.h>
 #include <unistd.h>
 
+//#define DEBUG_ENABLED
+
 #include <gstdisksrc.h>
 
 
@@ -241,6 +243,7 @@ void gst_disksrc_push(GstSrc *src) {
   DEBUG("pushing with offset %d\n", GST_BUFFER_OFFSET(buf));
   /* we're done, push the buffer off now */
   gst_pad_push(disksrc->srcpad,buf);
+  DEBUG("pushing with offset %d done\n", GST_BUFFER_OFFSET(buf));
 }