diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/demuxers/demux_mpeg.c | 28 | 
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 */ | 
