summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPetri Hintukainen <phintuka@users.sourceforge.net>2010-01-30 11:00:22 +0200
committerPetri Hintukainen <phintuka@users.sourceforge.net>2010-01-30 11:00:22 +0200
commitee88b6b53e875ed25073afa5ef77ef2b7f09707f (patch)
treeb8d54ca1d73bed0dd30b55b1d460af7952fefbc0
parent45183af9feca481f03d2c2df811f39799e212df3 (diff)
downloadxine-lib-ee88b6b53e875ed25073afa5ef77ef2b7f09707f.tar.gz
xine-lib-ee88b6b53e875ed25073afa5ef77ef2b7f09707f.tar.bz2
BluRay subtitles in matroska
-rw-r--r--src/demuxers/demux_matroska.c15
-rw-r--r--src/demuxers/matroska.h1
2 files changed, 16 insertions, 0 deletions
diff --git a/src/demuxers/demux_matroska.c b/src/demuxers/demux_matroska.c
index dd1f15fa6..ea1c84eea 100644
--- a/src/demuxers/demux_matroska.c
+++ b/src/demuxers/demux_matroska.c
@@ -810,6 +810,17 @@ static void init_codec_vobsub(demux_matroska_t *this,
}
}
+static void init_codec_spu(demux_matroska_t *this, matroska_track_t *track) {
+ buf_element_t *buf;
+
+ buf = track->fifo->buffer_pool_alloc (track->fifo);
+
+ buf->size = 0;
+ buf->type = track->buf_type;
+
+ track->fifo->put (track->fifo, buf);
+}
+
static void handle_realvideo (demux_plugin_t *this_gen, matroska_track_t *track,
int decoder_flags,
uint8_t *data, size_t data_len,
@@ -1429,6 +1440,10 @@ static int parse_track_entry(demux_matroska_t *this, matroska_track_t *track) {
if (track->compress_algo == MATROSKA_COMPRESS_NONE) {
track->compress_algo = MATROSKA_COMPRESS_UNKNOWN;
}
+ } else if (!strcmp(track->codec_id, MATROSKA_CODEC_ID_S_HDMV_PGS)) {
+ lprintf("MATROSKA_CODEC_ID_S_HDMV_PGS\n");
+ track->buf_type = BUF_SPU_HDMV;
+ init_codec = init_codec_spu;
} else {
lprintf("unknown codec\n");
}
diff --git a/src/demuxers/matroska.h b/src/demuxers/matroska.h
index 3cafc6441..53fee5358 100644
--- a/src/demuxers/matroska.h
+++ b/src/demuxers/matroska.h
@@ -340,6 +340,7 @@ struct matroska_track_s {
#define MATROSKA_CODEC_ID_S_SSA "S_SSA" /* deprecated */
#define MATROSKA_CODEC_ID_S_ASS "S_ASS" /* deprecated */
#define MATROSKA_CODEC_ID_S_VOBSUB "S_VOBSUB"
+#define MATROSKA_CODEC_ID_S_HDMV_PGS "S_HDMV/PGS"
/* block lacing */
#define MATROSKA_NO_LACING 0x0