diff options
author | Vincent Penquerc'h <ogg.k.ogg.k@googlemail.com> | 2010-01-23 20:15:08 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim.muller@collabora.co.uk> | 2010-01-25 23:49:53 +0000 |
commit | 25873a050f6d2742a855caa9b5a466f35b530cbc (patch) | |
tree | e896391945ccf7901e2903f46d994753cebf1021 | |
parent | d6108b8fad9dffee0a0e3a9040ea3399783fd346 (diff) |
oggdemux: properly set up the media type for kate streams
See #600929.
-rw-r--r-- | ext/ogg/gstoggstream.c | 14 |
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; } |