From 643b77d9f288b9a4f394e0f7e2bc85893882406e Mon Sep 17 00:00:00 2001 From: James Courtier-Dutton Date: Mon, 20 Aug 2001 22:56:36 +0000 Subject: *** empty log message *** CVS patchset: 457 CVS date: 2001/08/20 22:56:36 --- src/demuxers/demux_ts.c | 28 +++++++++++++++++++--------- src/xine-engine/video_decoder.c | 4 ++-- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c index 4a7b74bbc..7881fd6e9 100644 --- a/src/demuxers/demux_ts.c +++ b/src/demuxers/demux_ts.c @@ -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_ts.c,v 1.6 2001/08/13 23:10:31 jcdutton Exp $ + * $Id: demux_ts.c,v 1.7 2001/08/20 22:56:36 jcdutton Exp $ * * Demultiplexer for MPEG2 Transport Streams. * @@ -320,6 +320,12 @@ static void demux_ts_pat_parse( /* * Manage a buffer for a PES stream. + * Input is 188 bytes of Transport stream + * Build a PES packet. PES packets can get as big as 65536 + * If PES packet length was empty(zero) work it out based on seeing the next PUS. + * Once we have a complete PES packet, give PES packet a valid length field. + * then queue it. The queuing routine might have to cut it up to make bits < 4096. FIXME: implement cut up. + * Currently if PES packets are >4096, corruption occurs. */ static void demux_ts_pes_buffer( demux_ts *this, @@ -352,8 +358,6 @@ static void demux_ts_pes_buffer( return; } if (m->buf) { - fprintf(stderr, "PUS set but last PES not complete (corrupt stream?) %d %d %d\n", - m->pes_buf_next, m->pes_len, m->pes_len_zero); if(m->pes_len_zero) { /* fprintf(stderr,"Queuing ZERO PES %02X %02X %02X %02X %02X\n", m->buf->mem[3], m->buf->mem[4], m->buf->mem[5], @@ -366,10 +370,10 @@ static void demux_ts_pes_buffer( m->buf = 0; m->pes_len_zero=0; } else { -/* - fprintf(stderr, "PUS2 set but last PES not complete (corrupt stream?) %d %d %d\n", + + fprintf(stderr, "PUS set but last PES not complete (corrupt stream?) %d %d %d\n", m->pes_buf_next, m->pes_len, m->pes_len_zero); - */ + m->buf->free_buffer(m->buf); m->buf = 0; /* return; */ @@ -409,14 +413,17 @@ static void demux_ts_pes_buffer( } } } else { - fprintf(stderr, "Buffer overflow on data read for PES (corrupt stream?)\n"); + fprintf(stderr, "Buffer overflow on data read for PES (discontinuity ?)\n"); + /* FIXME: Implement discontinuity sensing */ m->buf->free_buffer(m->buf); m->buf = 0; m->pes_len_zero=0; } } else { - fprintf(stderr, "nowhere to buffer input (corrupt stream?)\n"); + /* + fprintf(stderr, "nowhere to buffer input. Waiting for PUS. \n"); + */ } } @@ -626,6 +633,7 @@ static void demux_ts_parse_ts( /* * Discard packets that are obviously bad. + * FIXME: maybe search for 0x47 is the first 188 bytes[packet size] of stream. */ if (sync_byte != 0x47) { fprintf (stderr, "demux error! invalid ts sync byte %02x\n",originalPkt[0]); @@ -676,7 +684,9 @@ static void demux_ts_parse_ts( } else if (pid == 0) { demux_ts_pat_parse(this, originalPkt, originalPkt+data_offset-4, payload_unit_start_indicator); } else if (pid == 0x1fff) { - fprintf(stderr,"Null Packet\n"); + /* + fprintf(stderr,"Null Packet\n"); + */ } } } diff --git a/src/xine-engine/video_decoder.c b/src/xine-engine/video_decoder.c index 6a5fe6ffc..03b293b17 100644 --- a/src/xine-engine/video_decoder.c +++ b/src/xine-engine/video_decoder.c @@ -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: video_decoder.c,v 1.40 2001/08/18 23:30:51 guenter Exp $ + * $Id: video_decoder.c,v 1.41 2001/08/20 22:56:36 jcdutton Exp $ * */ @@ -217,7 +217,7 @@ void video_decoder_init (xine_t *this) { pthread_attr_t pth_attrs; struct sched_param pth_params; - this->video_fifo = fifo_buffer_new (500, 4096); + this->video_fifo = fifo_buffer_new (500, 65536); if((xine_register_event_listener(this, spu_event_handler)) < 1) { fprintf(stderr, "xine_register_event_listener() failed.\n"); -- cgit v1.2.3