summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/demuxers/demux_mpeg.c28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/demuxers/demux_mpeg.c b/src/demuxers/demux_mpeg.c
index e01cfd736..f6804752f 100644
--- a/src/demuxers/demux_mpeg.c
+++ b/src/demuxers/demux_mpeg.c
@@ -19,7 +19,7 @@
*/
/*
- * $Id: demux_mpeg.c,v 1.131 2003/11/26 19:43:30 f1rmb Exp $
+ * $Id: demux_mpeg.c,v 1.132 2003/12/06 12:03:44 rockyb Exp $
*
* demultiplexer for mpeg 1/2 program streams
* reads streams of variable blocksizes
@@ -294,6 +294,32 @@ static void parse_mpeg2_packet (demux_mpeg_t *this, int stream_id, int64_t scr)
return;
}
+ /* SVCD OGT subtitles are in stream 0x70 */
+ if((this->dummy_space[0] & 0xFF) == 0x70) {
+
+ buf = this->input->read_block (this->input, this->video_fifo, len-1);
+
+ buf->type = BUF_SPU_SVCD + (this->dummy_space[0] & 0x03);
+ buf->pts = pts;
+
+ this->video_fifo->put (this->video_fifo, buf);
+
+ return;
+ }
+
+ /* CVD subtitles are in stream 0x00-0x03 */
+ if((this->dummy_space[0] & 0xfc) == 0x00) {
+
+ buf = this->input->read_block (this->input, this->video_fifo, len-1);
+
+ buf->type = BUF_SPU_CVD + (this->dummy_space[0] & 0x03);
+ buf->pts = pts;
+
+ this->video_fifo->put (this->video_fifo, buf);
+
+ return;
+ }
+
if((this->dummy_space[0] & 0xf0) == 0x80) {
/* read rest of header - AC3 */