diff options
Diffstat (limited to 'src/demuxers/demux_mpeg_block.c')
-rw-r--r-- | src/demuxers/demux_mpeg_block.c | 48 |
1 files changed, 46 insertions, 2 deletions
diff --git a/src/demuxers/demux_mpeg_block.c b/src/demuxers/demux_mpeg_block.c index a640449d8..0a2b99954 100644 --- a/src/demuxers/demux_mpeg_block.c +++ b/src/demuxers/demux_mpeg_block.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2000-2002 the xine project + * Copyright (C) 2000-2003 the xine project * * This file is part of xine, a free video player. * @@ -17,7 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA * - * $Id: demux_mpeg_block.c,v 1.160 2003/02/15 18:27:29 mroi Exp $ + * $Id: demux_mpeg_block.c,v 1.161 2003/03/07 22:19:20 rockyb Exp $ * * demultiplexer for mpeg 1/2 program streams * @@ -479,6 +479,50 @@ static void demux_mpeg_block_parse_pack (demux_mpeg_block_t *this, int preview_m return; } + /* SVCD OGT subtitles in stream 0x70 */ + if(p[0] == 0x70 && (p[1] & 0xFC) == 0x00) { + spu_id = p[1]; + + buf->content = p+1; + buf->size = packet_len-1; + buf->type = BUF_SPU_SVCD + spu_id; + buf->pts = pts; + if( !preview_mode ) + check_newpts( this, pts, PTS_VIDEO ); + + buf->extra_info->input_pos = this->input->get_current_pos(this->input); + buf->extra_info->input_length = this->input->get_length (this->input); + + this->video_fifo->put (this->video_fifo, buf); +#ifdef LOG + printf ("demux_mpeg_block: SPU SVCD PACK (%lld, %d) put on fifo\n", pts, spu_id); +#endif + + return; + } + + /* SVCD CVD subtitles in streams 0x00-0x03 */ + if((p[0] & 0xFC) == 0x00) { + spu_id = (p[0] & 0x03); + + buf->content = p+1; + buf->size = packet_len-1; + buf->type = BUF_SPU_CVD + spu_id; + buf->pts = pts; + if( !preview_mode ) + check_newpts( this, pts, PTS_VIDEO ); + + buf->extra_info->input_pos = this->input->get_current_pos(this->input); + buf->extra_info->input_length = this->input->get_length (this->input); + + this->video_fifo->put (this->video_fifo, buf); +#ifdef LOG + printf ("demux_mpeg_block: SPU CVD PACK (%lld, %d) put on fifo\n", pts, spu_id); +#endif + + return; + } + if ((p[0]&0xF0) == 0x80) { /* printf ( "ac3 PES packet, track %02x\n",track); */ |