[vdr] VDR-1.3.27: updated cVideoRepacker

Reinhard Nissl rnissl at gmx.de
Mon Jul 18 22:25:45 CEST 2005


Hi,

Simon Baxter wrote:

> Tried the new repacker, but it was not successful :

Thanks for the report. Please specify some additional information:

There are several threads involved (4972, 4969, 4970, 4968). Please send 
the lines too, where these threads were created, respectively include 
them in the next report.

Which kind of DVB hardware do you use: S, C or T?

Is it related to a single channel?

How long does it take from switching to the channel until VDR restarts?

Does it just happen for recordings (see below)?

Are you using a FF card or a softdevice solution like vdr-xine?

It might be possible, that at 08:42:04 the cVideoRepacker was resyncing, 
e. g. due to some garbage that is comming in after switching the channel.

Strange is that there are two threads (4972 and 4969) that are feeding 
cVideoRepacker. Should there be a racecondition that spawns two threads 
for this job somewhere else in VDR?

Or are these two theads driving two instances of cVideoRepacker with the 
same data as both threads report the same messages and sync in 08:42:04?

Please tell us the versions of kernel and dvb-driver. Is NPTL enabled or 
disabled?

Are you using other plugins that might attach a further receiver 
(osd-teletext triggered some threading issues some time ago)?

Thread 4968 seems to be a recorder. It considers the data stream to be 
broken as it hasn't seen any data for MAXBROKENTIMEOUT (= 30 seconds), 
i. e. since cVideoRepacker got synced. Please add two log messages to 
cRepacker::Put() so that we can see how cVideoRepacker delivers data 
after 08:42:04. Maybe a further log message at the beginning and end of 
cVideoRepacker::Repack() would be useful too, to see whether 
cVideoRepacker gets stuck.

   static int Put(.....)
   {
     esyslog(">>>>> cRepacker::Put"); // <============

     int n = ResultBuffer->Put(Data, Count);
     if (n != Count)
        esyslog(.....);

     esyslog("<<<<< cRepacker::Put"); // <============

     return n;
   }

void cVideoRepacker::Repack(.....)
{
   esyslog(">>>>> cVideoRepacker::Repack()"); // <============

   // synchronisation is detected some bytes after frame start.
   const int SkippedBytesLimit = 4;

   // reset local scanner
   localStart = -1;

.
.
.

   // report that syncing dropped some bytes
   if (skippedBytes > SkippedBytesLimit) {
      esyslog(.....);
      skippedBytes = SkippedBytesLimit;
      }

   esyslog("<<<<< cVideoRepacker::Repack()"); // <============
}

Thanks in advance for your help!

> Jul 18 08:42:04 media vdr[4972]: cVideoRepacker: found system start code: 
> stream seems to be scrambled or not demultiplexed
> Jul 18 08:42:04 media vdr[4972]: cVideoRepacker: skipped 1545 bytes while 
> syncing on next picture
> Jul 18 08:42:04 media vdr[4972]: cVideoRepacker: skipped 493 bytes while 
> syncing on next picture
> Jul 18 08:42:04 media vdr[4972]: cVideoRepacker: skipped 2039 bytes while 
> syncing on next picture
> Jul 18 08:42:04 media last message repeated 5 times
> Jul 18 08:42:04 media vdr[4972]: cVideoRepacker: skipped 1398 bytes while 
> syncing on next picture
> Jul 18 08:42:04 media vdr[4972]: cVideoRepacker: skipped 4 bytes to sync on 
> next picture
> Jul 18 08:42:04 media vdr[4969]: cVideoRepacker: found system start code: 
> stream seems to be scrambled or not demultiplexed
> Jul 18 08:42:04 media vdr[4969]: cVideoRepacker: skipped 1545 bytes while 
> syncing on next picture
> Jul 18 08:42:04 media vdr[4969]: cVideoRepacker: skipped 493 bytes while 
> syncing on next picture
> Jul 18 08:42:04 media vdr[4969]: cVideoRepacker: skipped 2039 bytes while 
> syncing on next picture
> Jul 18 08:42:04 media last message repeated 5 times
> Jul 18 08:42:04 media vdr[4969]: cVideoRepacker: skipped 1398 bytes while 
> syncing on next picture
> Jul 18 08:42:04 media vdr[4969]: cVideoRepacker: skipped 4 bytes to sync on 
> next picture
> Jul 18 08:42:20 media vdr[4970]: ERROR: 1 ring buffer overflow (65 bytes 
> dropped)
> Jul 18 08:42:26 media vdr[4970]: ERROR: 10022 ring buffer overflows (1884136 
> bytes dropped)
> Jul 18 08:42:32 media vdr[4970]: ERROR: 9840 ring buffer overflows (1849920 
> bytes dropped)
> Jul 18 08:42:35 media vdr[4968]: ERROR: video data stream broken
> Jul 18 08:42:35 media vdr[4968]: initiating emergency exit
> Jul 18 08:42:35 media vdr[4555]: emergency exit requested - shutting down

Bye.
-- 
Dipl.-Inform. (FH) Reinhard Nissl
mailto:rnissl at gmx.de



More information about the vdr mailing list