summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Penquerc'h <ogg.k.ogg.k@googlemail.com>2010-01-23 20:15:08 +0000
committerTim-Philipp Müller <tim.muller@collabora.co.uk>2010-01-25 23:49:53 +0000
commit25873a050f6d2742a855caa9b5a466f35b530cbc (patch)
treee896391945ccf7901e2903f46d994753cebf1021
parentd6108b8fad9dffee0a0e3a9040ea3399783fd346 (diff)
oggdemux: properly set up the media type for kate streams
See #600929.
-rw-r--r--ext/ogg/gstoggstream.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/ext/ogg/gstoggstream.c b/ext/ogg/gstoggstream.c
index d0c9fa36..a99510fc 100644
--- a/ext/ogg/gstoggstream.c
+++ b/ext/ogg/gstoggstream.c
@@ -1089,6 +1089,10 @@ static gboolean
setup_kate_mapper (GstOggStream * pad, ogg_packet * packet)
{
guint8 *data = packet->packet;
+ const char *category;
+
+ if (packet->bytes < 64)
+ return FALSE;
pad->granulerate_n = GST_READ_UINT32_LE (data + 24);
pad->granulerate_d = GST_READ_UINT32_LE (data + 28);
@@ -1100,8 +1104,14 @@ setup_kate_mapper (GstOggStream * pad, ogg_packet * packet)
if (pad->granulerate_n == 0)
return FALSE;
- pad->caps = gst_caps_new_simple ("audio/x-kate",
- "rate", G_TYPE_INT, pad->granulerate_n, NULL);
+ category = (const char *) data + 48;
+ if (strcmp (category, "subtitles") == 0 || strcmp (category, "SUB") == 0 ||
+ strcmp (category, "spu-subtitles") == 0 ||
+ strcmp (category, "K-SPU") == 0) {
+ pad->caps = gst_caps_new_simple ("subtitle/x-kate", NULL);
+ } else {
+ pad->caps = gst_caps_new_simple ("application/x-kate", NULL);
+ }
return TRUE;
}