diff -ur -x Makefile.in -x aclocal.m4 -x configure -x 'config.*' -x ltmain.sh -x '*.spec' -x po ORG/gst-plugins-base/ext/ogg/gstoggmux.c NEW/gst-plugins-base/ext/ogg/gstoggmux.c
--- ORG/gst-plugins-base/ext/ogg/gstoggmux.c	2008-09-13 11:26:58.000000000 +0100
+++ NEW/gst-plugins-base/ext/ogg/gstoggmux.c	2008-09-13 11:32:16.000000000 +0100
@@ -106,7 +106,8 @@
     GST_STATIC_CAPS ("video/x-theora; "
         "audio/x-vorbis; audio/x-flac; audio/x-speex; audio/x-celt; "
         "application/x-ogm-video; application/x-ogm-audio; video/x-dirac; "
-        "video/x-smoke; text/x-cmml, encoded = (boolean) TRUE")
+        "video/x-smoke; text/x-cmml, encoded = (boolean) TRUE; "
+        "application/x-kate")
     );
 
 static void gst_ogg_mux_base_init (gpointer g_class);
diff -ur -x Makefile.in -x aclocal.m4 -x configure -x 'config.*' -x ltmain.sh -x '*.spec' -x po ORG/gst-plugins-base/ext/theora/theoraparse.c NEW/gst-plugins-base/ext/theora/theoraparse.c
--- ORG/gst-plugins-base/ext/theora/theoraparse.c	2008-09-13 11:26:58.000000000 +0100
+++ NEW/gst-plugins-base/ext/theora/theoraparse.c	2008-09-27 13:36:42.000000000 +0100
@@ -317,6 +317,7 @@
   for (i = 0; i < 3; i++) {
     ogg_packet packet;
     GstBuffer *buf;
+    int ret;
 
     buf = parse->streamheader[i];
     gst_buffer_set_caps (buf, GST_PAD_CAPS (parse->srcpad));
@@ -326,7 +327,11 @@
     packet.granulepos = GST_BUFFER_OFFSET_END (buf);
     packet.packetno = i + 1;
     packet.e_o_s = 0;
-    theora_decode_header (&parse->info, &parse->comment, &packet);
+    packet.b_o_s = (i==0);
+    ret = theora_decode_header (&parse->info, &parse->comment, &packet);
+    if (ret < 0) {
+      GST_WARNING_OBJECT (parse, "Failed to decode Theora header %d: %d\n", i+1, ret);
+    }
   }
 
   parse->fps_n = parse->info.fps_numerator;
@@ -337,7 +342,7 @@
    * where earlier the granulepos refered to the index/beginning
    * of a frame, it now refers to the end, which matches the use
    * in vorbis/speex. We check the bitstream version from the header so
-   * we know which way to interpret the incoming granuepos
+   * we know which way to interpret the incoming granulepos
    */
   bitstream_version = (parse->info.version_major << 16) |
       (parse->info.version_minor << 8) | parse->info.version_subminor;
