diff -rup gst-plugins-base-cvs/gst/typefind/gsttypefindfunctions.c gst-plugins-base/gst/typefind/gsttypefindfunctions.c
--- gst-plugins-base-cvs/gst/typefind/gsttypefindfunctions.c	2008-10-15 13:35:31.000000000 +0200
+++ gst-plugins-base/gst/typefind/gsttypefindfunctions.c	2008-10-15 13:36:18.000000000 +0200
@@ -1599,6 +1599,7 @@ mpeg4_video_type_find (GstTypeFind * tf,
    */
   guint8 *data = NULL;
   int offset = 0;
+  int extra_offset = 0;
   gboolean seen_vos = FALSE;
 
   while (TRUE) {
@@ -1606,11 +1607,13 @@ mpeg4_video_type_find (GstTypeFind * tf,
     if (data && IS_MPEG_HEADER (data)) {
       int sc = data[3];
 
+      extra_offset = 0;
       if (sc == 0xB0)           /* visual_object_sequence_start_code */
         offset += 5;
-      else if (sc == 0xB5)      /* visual_object_start_code */
+      else if (sc == 0xB5) {    /* visual_object_start_code */
         offset += 5;
-      else if (sc >= 0x00 && sc <= 0x1F) {      /* video_object_start_code */
+        extra_offset = 6; /* Can be up to 10 bytes long */
+      } else if (sc >= 0x00 && sc <= 0x1F) {    /* video_object_start_code */
         offset += 4;
         seen_vos = TRUE;
       } else if (sc >= 0x20 && sc <= 0x2F) {    /* video_object_layer_start_code */
@@ -1623,7 +1626,11 @@ mpeg4_video_type_find (GstTypeFind * tf,
       } else
         return;
     } else
-      return;
+      if (extra_offset) {
+        extra_offset--;
+        offset++;
+      } else
+        return;
   }
 }
 
Only in gst-plugins-base-cvs/gst/typefind: gsttypefindfunctions.c.orig
