[vdr] vdr on arm (little endian) has problems with epg

Stefan Yknott at gmx.net
Fri Feb 22 22:29:09 CET 2008


Hi,

I'm trying to setup vdr with debian unstable on arm (little endian) 
(NSLU2) with a WideView WT-220U PenType Receiver (USB). At first the 
system would freeze when the device got activated by vdr or scan. This 
is because arm has some problems with cache coherence. The appended 
patch fixes that.

The next thing is that although video output is working, there's still 
some trouble with the epg.data not properly handled. epg.data file looks 
like this:
C T-8468-12289-2 arte
c
C T-8468-12289-3 Phoenix
c
...

The same setup on x86 works fine, I double checked that. So I started 
debugging with gdb and had a look at the raw epg data that is copied 
from usb, comparing the output from arm and x86 looks quite similar so I 
guess to that point things are ok. In case you wonder I compared the 
output of  unsigned char buf[4096] in void cSectionHandler::Action(void).
I tried to narrow things further down with lots of debugging and I think 
the problem is related to the following code in libsi/si.h

template <class T> class StructureLoop : public Loop {
public:
   //currently you must use a while-loop testing for hasNext()
   //i must be 0 to get the first descriptor (with the first call)
   bool getNext(T &obj, Iterator &it)
      {
         if (!isValid() || it.i >= getLength())
            return false;
         CharArray d=data;
         d.addOffset(it.i);
         T ret;
         ret.setData(d);
         ret.CheckParse();
         if (!checkSize(ret.getLength()))
            return false;
         it.i+=ret.getLength();
         obj=ret;
         return true;
      }

By putting in some printf statements I found out it.i gets increased 
some bytes, these bytes are processes and that happens till getLength is 
reached. Then the chunk has been processed completely. That works fine 
on x86 but not on arm, I observed it.i increase far beyond getLength 
after a while. At this point things get pretty low-level and I'm stuck.

    Stefan

-------------- next part --------------
A non-text attachment was scrubbed...
Name: cache-coherency.patch
Type: text/x-patch
Size: 2360 bytes
Desc: not available
Url : http://www.linuxtv.org/pipermail/vdr/attachments/20080222/14a20e8b/attachment-0001.bin 


More information about the vdr mailing list