summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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