diff -ru a/gst/mpegtsmux/mpegtsmux.c b/gst/mpegtsmux/mpegtsmux.c
--- a/gst/mpegtsmux/mpegtsmux.c	2012-11-28 22:42:32.000000000 +0400
+++ b/gst/mpegtsmux/mpegtsmux.c	2013-03-18 11:47:31.487379693 +0400
@@ -945,8 +945,15 @@
   stream_time = gst_segment_to_stream_time (segment,
       GST_FORMAT_TIME, timestamp);
 
-  gst_video_event_parse_upstream_force_key_unit (pending_event,
-      NULL, &all_headers, &count);
+  if (GST_EVENT_TYPE (pending_event) == GST_EVENT_CUSTOM_DOWNSTREAM) {
+    gst_video_event_parse_downstream_force_key_unit (pending_event,
+        NULL, NULL, NULL, &all_headers, &count);
+  } else {
+    g_return_val_if_fail (
+        GST_EVENT_TYPE (pending_event) == GST_EVENT_CUSTOM_UPSTREAM, NULL);
+    gst_video_event_parse_upstream_force_key_unit (pending_event,
+        NULL, &all_headers, &count);
+  }
 
   event =
       gst_video_event_new_downstream_force_key_unit (timestamp, stream_time,
