From: Miguel F. <mig...@us...> - 2003-04-29 18:43:26
|
Update of /cvsroot/xine/xine-lib/src/demuxers In directory sc8-pr-cvs1:/tmp/cvs-serv462 Modified Files: demux_mpeg.c demux_mpeg_block.c Log Message: lpcm support to mpeg_demux.c. i have no sample to test it, may somebody please check if it works? Index: demux_mpeg.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/demuxers/demux_mpeg.c,v retrieving revision 1.115 retrieving revision 1.116 diff -u -r1.115 -r1.116 --- demux_mpeg.c 27 Apr 2003 11:56:13 -0000 1.115 +++ demux_mpeg.c 29 Apr 2003 18:43:18 -0000 1.116 @@ -282,7 +282,9 @@ } i = this->input->read (this->input, this->dummy_space, 1); + track = this->dummy_space[0] & 0x0F ; + /* DVD spu/subtitles */ if((this->dummy_space[0] & 0xE0) == 0x20) { buf = this->input->read_block (this->input, this->video_fifo, header_len+len-1); @@ -300,12 +302,32 @@ return; } - /* read rest of header */ + /* LPCM audio */ + if((this->dummy_space[0] & 0xf0) == 0xa0) { + i = this->input->read (this->input, this->dummy_space+1, 6); + + buf = this->input->read_block (this->input, this->video_fifo, header_len+len-7); + + buf->type = BUF_AUDIO_LPCM_BE + track; + buf->decoder_flags |= BUF_FLAG_SPECIAL; + buf->decoder_info[1] = BUF_SPECIAL_LPCM_CONFIG; + buf->decoder_info[2] = this->dummy_space[5]; + buf->pts = pts; + + check_newpts( this, pts, PTS_AUDIO ); + + if(this->audio_fifo) + this->audio_fifo->put (this->audio_fifo, buf); + else + buf->free_buffer(buf); + + return; + } + + /* read rest of header - assume AC3 */ i = this->input->read (this->input, this->dummy_space+1, header_len+3); - track = this->dummy_space[0] & 0x0F ; /* contents */ - for (i = len - 4; i > 0; i -= (this->audio_fifo) ? this->audio_fifo->buffer_pool_buf_size : this->video_fifo->buffer_pool_buf_size) { if(this->audio_fifo) { Index: demux_mpeg_block.c =================================================================== RCS file: /cvsroot/xine/xine-lib/src/demuxers/demux_mpeg_block.c,v retrieving revision 1.173 retrieving revision 1.174 diff -u -r1.173 -r1.174 --- demux_mpeg_block.c 26 Apr 2003 20:16:13 -0000 1.173 +++ demux_mpeg_block.c 29 Apr 2003 18:43:20 -0000 1.174 @@ -527,9 +527,10 @@ buf->size = packet_len-1; buf->type = BUF_SPU_SVCD + spu_id; buf->pts = pts; + /* this is probably wrong: if( !preview_mode ) check_newpts( this, pts, PTS_VIDEO ); - + */ 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); @@ -546,9 +547,10 @@ buf->size = packet_len-1; buf->type = BUF_SPU_CVD + spu_id; buf->pts = pts; + /* this is probably wrong: if( !preview_mode ) check_newpts( this, pts, PTS_VIDEO ); - + */ 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); |