From 84133d2fad4c392de75d41d88a19850734ea5523 Mon Sep 17 00:00:00 2001 From: Simon Farnsworth Date: Wed, 2 May 2007 17:23:48 +0100 Subject: [PATCH] Enhance logging in demux_ts, input_dvb and video_out_xv The three attached patches (against 1.1.6) each increase the amount of debug logging in their respective components. We've found the extra logging useful when trying to track down faults. I've split this into three patches to make it easier to apply only some of our changes. -- Comments welcome, Simon Farnsworth --- src/demuxers/demux_ts.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'src/demuxers') diff --git a/src/demuxers/demux_ts.c b/src/demuxers/demux_ts.c index aea0c8ca1..c57fc34ef 100644 --- a/src/demuxers/demux_ts.c +++ b/src/demuxers/demux_ts.c @@ -683,7 +683,11 @@ static int demux_ts_parse_pes_header (xine_t *xine, demux_ts_media *m, stream_id = p[3]; if (packet_len==0) + { + xprintf (xine, XINE_VERBOSITY_DEBUG, + "demux_ts: error pes length 0\n"); return 0; + } #ifdef TS_LOG printf ("demux_ts: packet stream id: %.2x len: %d (%x)\n", @@ -1244,7 +1248,7 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num case ISO_14496_PART10_VIDEO: if (this->videoPid == INVALID_PID) { #ifdef TS_PMT_LOG - printf ("demux_ts: PMT video pid 0x%.4x\n", pid); + printf ("demux_ts: PMT video pid 0x%.4x type %2.2x\n", pid, stream[0]); #endif demux_ts_pes_new(this, this->media_num, pid, this->video_fifo,stream[0]); this->videoMedia = this->media_num; @@ -1266,7 +1270,7 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num } if(!found) { #ifdef TS_PMT_LOG - printf ("demux_ts: PMT audio pid 0x%.4x\n", pid); + printf ("demux_ts: PMT audio pid 0x%.4x type %2.2x\n", pid, stream[0]); #endif demux_ts_pes_new(this, this->media_num, pid, this->audio_fifo,stream[0]); this->audio_tracks[this->audio_tracks_count].pid = pid; @@ -1280,7 +1284,7 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num break; case ISO_13818_PRIVATE: #ifdef TS_PMT_LOG - printf ("demux_ts: PMT streamtype 13818_PRIVATE, pid: 0x%.4x\n", pid); + printf ("demux_ts: PMT streamtype 13818_PRIVATE, pid: 0x%.4x type %2.2x\n", pid, stream[0]); for (i = 5; i < coded_length; i++) printf ("%.2x ", stream[i]); @@ -1289,7 +1293,7 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num break; case ISO_13818_TYPE_C: /* data carousel */ #ifdef TS_PMT_LOG - printf ("demux_ts: PMT streamtype 13818_TYPE_C, pid: 0x%.4x\n", pid); + printf ("demux_ts: PMT streamtype 13818_TYPE_C, pid: 0x%.4x type %2.2x\n", pid, stream[0]); #endif break; case ISO_13818_PES_PRIVATE: @@ -1305,7 +1309,7 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num } if(!found) { #ifdef TS_PMT_LOG - printf ("demux_ts: PMT AC3 audio pid 0x%.4x\n", pid); + printf ("demux_ts: PMT AC3 audio pid 0x%.4x type %2.2x\n", pid, stream[0]); #endif demux_ts_pes_new(this, this->media_num, pid, this->audio_fifo, 0x81); @@ -1323,7 +1327,7 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num else if (stream[i] == 0x56) { #ifdef TS_PMT_LOG - printf ("demux_ts: PMT Teletext, pid: 0x%.4x\n", pid); + printf ("demux_ts: PMT Teletext, pid: 0x%.4x type %2.2x\n", pid, stream[0]); for (i = 5; i < coded_length; i++) printf ("%.2x ", stream[i]); @@ -1358,10 +1362,11 @@ printf("Program Number is %i, looking for %i\n",program_number,this->program_num pid, this->video_fifo, stream[0]); #ifdef TS_LOG - printf("demux_ts: DVBSUB: pid 0x%.4x: %s page %ld %ld\n", + printf("demux_ts: DVBSUB: pid 0x%.4x: %s page %ld %ld type %2.2x\n", pid, lang->desc.lang, lang->desc.comp_page_id, - lang->desc.aux_page_id); + lang->desc.aux_page_id, + stream[0]); #endif } } -- cgit v1.2.3 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