From f7bd2c6ee4e3f066248e087cbf5f97a21103ebd1 Mon Sep 17 00:00:00 2001 From: Simon Farnsworth Date: Wed, 2 May 2007 17:31:11 +0100 Subject: [PATCH] Remove packet count from demux_ts, to remove a long delay The attached patch applies after my logging patches (I can regenerate if needed). demux_ts attempted to read packets from the input 200 times before giving up. When playing a local file, this is harmless, as it will hit EOF 200 times; however, input_dvb waits 5 seconds for packets on each call to read, resulting in a 1000 second delay if tuning fails. Remove the counting of input packets, and add a comment to read() in input_plugin.h, to indicate that we expect inputs to try and return some data when read() is called. This fixes the delay, and makes it clear to future maintainers that they shouldn't expect to loop like this. -- Simon Farnsworth --- src/demuxers/demux_ts.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) (limited to 'src/demuxers') diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c index c57fc34ef..f2da5f268 100644 --- a/src/demuxers/demux_ts.c +++ b/src/demuxers/demux_ts.c @@ -337,7 +337,6 @@ typedef struct { int32_t packet_number; /* NEW: var to keep track of number of last read packets */ int32_t npkt_read; - int32_t read_zero; uint8_t buf[BUF_SIZE]; /* == PKT_SIZE * NPKT_PER_READ */ @@ -1536,12 +1535,7 @@ static unsigned char * demux_synchronise(demux_ts_t* this) { */ if (this->npkt_read == 0) { - /* printf ("demux_ts: read 0 packets! (%d)\n", this->read_zero); */ - this->read_zero++; - } else this->read_zero = 0; - - if (this->read_zero > 200) { - xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_ts: read 0 packets too many times!\n"); + xprintf (this->stream->xine, XINE_VERBOSITY_DEBUG, "demux_ts: read 0 packets\n"); this->status = DEMUX_FINISHED; return NULL; } -- cgit v1.2.3