diff -Naur gst-plugins-bad-0.10.22.org/gst/videoparsers/gsth264parse.c gst-plugins-bad-0.10.22/gst/videoparsers/gsth264parse.c
--- gst-plugins-bad-0.10.22.org/gst/videoparsers/gsth264parse.c	2011-11-11 15:01:18.000000000 -0800
+++ gst-plugins-bad-0.10.22/gst/videoparsers/gsth264parse.c	2011-11-15 07:29:19.000000000 -0800
@@ -316,13 +316,16 @@
     guint size)
 {
   GstBuffer *buf;
-  const guint nl = h264parse->nal_length_size;
+  guint nl = h264parse->nal_length_size;
 
   buf = gst_buffer_new_and_alloc (size + nl + 4);
   if (format == GST_H264_PARSE_FORMAT_AVC) {
     GST_WRITE_UINT32_BE (GST_BUFFER_DATA (buf), size << (32 - 8 * nl));
   } else {
-    g_assert (nl == 4);
+    /* HACK: nl should always be 4 here, otherwise this won't work. 
+     * There are legit cases where nl in avc stream is 2, but byte-stream
+     * SC is still always 4 bytes. */
+    nl = 4;
     GST_WRITE_UINT32_BE (GST_BUFFER_DATA (buf), 1);
   }
 
