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

2008-02-22 Thread Stefan

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 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

Index: linux-source-2.6.23/arch/arm/common/dmabounce.c
===
--- linux-source-2.6.23.orig/arch/arm/common/dmabounce.c	2007-10-09 22:31:38.0 +0200
+++ linux-source-2.6.23/arch/arm/common/dmabounce.c	2008-01-11 18:14:16.0 +0100
@@ -29,6 +29,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 
@@ -45,6 +46,9 @@
 struct safe_buffer {
 	struct list_head node;
 
+	/* safe buffer info */
+	struct device *dev;
+
 	/* original request */
 	void		*ptr;
 	size_t		size;
@@ -125,6 +129,7 @@
 		return NULL;
 	}
 
+	buf->dev = device_info->dev;
 	buf->ptr = ptr;
 	buf->size = size;
 	buf->direction = dir;
@@ -179,6 +184,38 @@
 	read_unlock_irqrestore(&device_info->lock, flags);
 	return rb;
 }
+/* The free safe buffer part. dma_free_coherent cannot be called irq disabled.
+ To cope with that, a tasklet (do_free) does the job upon request */
+static DEFINE_SPINLOCK(buflock);
+static LIST_HEAD(buffers);
+
+static void do_free(unsigned long ignored)
+{
+ spin_lock_irq(&buflock);
+ while (!list_empty(&buffers)) {
+ struct safe_buffer *buf;
+
+ buf = list_entry(buffers.next,
+struct safe_buffer,
+node);
+ list_del(&buf->node);
+ spin_unlock_irq(&buflock);
+
+ if (buf->pool)
+ dma_pool_free(buf->pool->pool, buf->safe, buf->safe_dma_addr);
+ else
+ dma_free_coherent(buf->dev, buf->size, buf->safe,
+ buf->safe_dma_addr);
+
+ kfree(buf);
+
+ spin_lock_irq(&buflock);
+
+ }
+ spin_unlock_irq(&buflock);
+}
+
+static DECLARE_TASKLET(deferred_free, do_free, 0);
 
 static inline void
 free_safe_buffer(struct dmabounce_device_info *device_info, struct safe_buffer *buf)
@@ -193,13 +230,11 @@
 
 	write_unlock_irqrestore(&device_info->lock, flags);
 
-	if (buf->pool)
-		dma_pool_free(buf->pool->pool, buf->safe, buf->safe_dma_addr);
-	else
-		dma_free_coherent(device_info->dev, buf->size, buf->safe,
-buf->safe_dma_addr);
-
-	kfree(buf);
+	/* pass the safe buffer to the tasklet */
+	spin_lock_irqsave(&buflock, flags);
+	list_add_tail(&buf->node, &buffers);
+	tasklet_schedule(&deferred_free);
+	spin_unlock_irqrestore(&buflock, flags);
 }
 
 /* ** */

___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


Re: [vdr] [ANNOUNCE] VDR developer version 1.5.15

2008-02-22 Thread Udo Richter

Malcolm Caldwell wrote:

In case there's no older version of channels.conf, is there some simple
sed/awk/perl script to remove the extra fields, or is it not strictly
necessary?
Is it just a 's/M2O0S0//' when you only have dvb-s channels?

Should be pretty much it.


Why not make 1.6.0 ignore this field so it can just work for people who
upgrade/downgrade?


... that would be the attached patch. It just ignores the fields added 
by the temporary 1.5.14 format. When VDR saves the channels.conf next 
time, the format will be reverted to the 1.5.15 format, dropping the new 
fields. 1.5.14 and 1.7.x will re-add them anyway.


Cheers,

Udo



--- vdr-1.5.15/channels.c   2008-02-10 16:45:38.0 +0100
+++ vdr-1.5.15-patched/channels.c   2008-02-22 19:13:32.0 +0100
@@ -624,10 +624,24 @@
   return NULL;
 }
 
+static const char *DropParseParameter(const char *s)
+{
+  if (*++s) {
+ char *p = NULL;
+ errno = 0;
+ strtol(s, &p, 10);
+ if (!errno && p != s)
+return p;
+ }
+  esyslog("ERROR: invalid value for parameter '%c'", *(s - 1));
+  return NULL;
+}
+
 bool cChannel::StringToParameters(const char *s)
 {
   while (s && *s) {
 switch (toupper(*s)) {
+  case 'A': s = DropParseParameter(s); break;
   case 'B': s = ParseParameter(s, bandwidth, BandwidthValues); break;
   case 'C': s = ParseParameter(s, coderateH, CoderateValues); break;
   case 'D': s = ParseParameter(s, coderateL, CoderateValues); break;
@@ -636,7 +650,11 @@
   case 'I': s = ParseParameter(s, inversion, InversionValues); break;
   case 'L': polarization = *s++; break;
   case 'M': s = ParseParameter(s, modulation, ModulationValues); break;
+  case 'Z': s = DropParseParameter(s); break;
+  case 'O': s = DropParseParameter(s); break;
+  case 'P': s = DropParseParameter(s); break;
   case 'R': polarization = *s++; break;
+  case 'S': s = DropParseParameter(s); break;
   case 'T': s = ParseParameter(s, transmission, TransmissionValues); 
break;
   case 'V': polarization = *s++; break;
   case 'Y': s = ParseParameter(s, hierarchy, HierarchyValues); break;
___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


[vdr] [patch] channels with same pids

2008-02-22 Thread ua0lnj
Hi.
Some satellites have many channels with same sid, nid, tid on different 
transponders. This is incorrect pid table, and vdr works with it not good, need 
scan channels and change rid manually, but if you select "transponder update" 
all you settings will be rewrite and channels deleted as duplicate.
I have this trouble on ABS1 75.0 E and Express AM2 80.0 E, and I have very many 
channels with same pids on my iptv stream. 
After this patch, vdr parsing duplicate pids, and if transponders is not equal, 
channel not deleted, but rid wil be increased. If pids and transponders are 
equal, channel will be deleted as duplicate.
Patch was made for vdr-1.5.12, but works with 1.5.15 too.
Attached 3 patches, for native vdr and vdr + iptv plugin patched and for native 
reelchannelscan-0.4.1 plugin (include patch for 1.5.xx).


vdr-1.5.12-incorrect-pid.diff
Description: Binary data


vdr-1.5.12-iptv-incorrect-pid.diff
Description: Binary data


reelchannelscan-0.4.1-1.5.12-incorrect-pid.diff
Description: Binary data
___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


Re: [vdr] VDR + FF card under x11.

2008-02-22 Thread Anssi Hannula
Jean-Claude Repetto wrote:
> Albert Gall a écrit :
>> VDR + FF card works under x11 without requiring any plug mpeg decoder ?
>>
> 
> Yes, just use a V4L application such as xawtv or tvtime to display 
> /dev/dvb/adapter0/dvr0 .

You probably meant /dev/video0 :)

-- 
Anssi Hannula

___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


[vdr] How to change font data?

2008-02-22 Thread Martin Prochnow
Hi,

My ExtRecMenu-plugin (and even my Nordlicht's EPG-plugin) uses a function
to add icons to the used fonts. It changes some of the unused signs (
between 0x80 and 0x9f) by directly changing their data.

Since VDR introduced true type fonts, this function doesn't work anymore.
I tried to understand how to use CreateFont from the class cFont to do the
same with newer VDR versions but I failed.

Is it possible to change font data directly in code or do I have to create
my own true type font containing the icons?

Regards,
Martin


___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


Re: [vdr] VDR + FF card under x11.

2008-02-22 Thread Klaus Schmidinger
On 02/22/08 09:25, Torgeir Veimo wrote:
> 
> On 22 Feb 2008, at 18:20, Klaus Schmidinger wrote:
>> On 02/22/08 08:45, Jean-Claude Repetto wrote:
>>> Albert Gall a écrit :
 VDR + FF card works under x11 without requiring any plug mpeg decoder ?

>>>
>>> Yes, just use a V4L application such as xawtv or tvtime to display 
>>> /dev/dvb/adapter0/dvr0 .
>>
>> There is also KVDR: http://www.s.netic.de/gfiala
> 
> How does KVDR fetch the image off the FF card? Just blitting from the
> framebuffer?

AFAIK yes.

Klaus

___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


[vdr] Help!! Remote Problems. for Manu Abraham..

2008-02-22 Thread lucian orasanu
Hy. 
I have an SkyStar HD on an gentoo distro with latest 
multiproto drivers from http://jusst.de/hg.

afther a few revision like changeset "7200
45eec532cefa" my remote control from skystar hd card
with code "TTS35AI", works in x11org controling just
volume up and down, and mute. But I cant' make it to
work with vdr.

My lircd.conf is this but not used:
  eps30
  aeps  100

  one 0 0
  zero0 0
  gap  135992
  toggle_bit_mask 0x0

  begin codes
  10x80010002
  20x80010003
  30x80010004
  40x80010005
  50x80010006
  60x80010007
  70x80010008
  80x80010009
  90x8001000A
  00x8001000B
  -/-- 0x8001001C
  red  0x8001006A
  green0x80010069
  yelow0x80010080
  blue 0x8001008B
  vol_up   0x80010073
  vol_down 0x80010072
  channel+ 0x80010192
  channel- 0x80010193
  menu 0x800100AE
  ok   0x8001001E
  mute 0x80010071
  power0x80010074
  end codes

end remote

and remote.conf from vdr like this:
remote-event5.Up 000100010192
remote-event5.Down   000100010193
remote-event5.Menu   00010001001E
remote-event5.Ok 0001000100AE

wich is difrent from TT-S3200.

I know that skystar hd is a clone of TT-s3200, but on
remote case is a litle bit diffrent each other, even
when woked a few keys on remote never worked like
yelo, menu and tv, and they work for shure tested in
winxp with original software from card.

And now I can't make it work in vdr with vdr-remote.
is another way?, lyke remote-keys.??



  

Looking for last minute shopping deals?  
Find them fast with Yahoo! Search.  
http://tools.search.yahoo.com/newsearch/category.php?category=shopping

___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


Re: [vdr] VDR + FF card under x11.

2008-02-22 Thread Torgeir Veimo


On 22 Feb 2008, at 18:20, Klaus Schmidinger wrote:


On 02/22/08 08:45, Jean-Claude Repetto wrote:

Albert Gall a écrit :
VDR + FF card works under x11 without requiring any plug mpeg  
decoder ?




Yes, just use a V4L application such as xawtv or tvtime to display
/dev/dvb/adapter0/dvr0 .


There is also KVDR: http://www.s.netic.de/gfiala



How does KVDR fetch the image off the FF card? Just blitting from the  
framebuffer?


--
Torgeir Veimo
[EMAIL PROTECTED]



___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


Re: [vdr] VDR + FF card under x11.

2008-02-22 Thread Klaus Schmidinger
On 02/22/08 08:45, Jean-Claude Repetto wrote:
> Albert Gall a écrit :
>> VDR + FF card works under x11 without requiring any plug mpeg decoder ?
>>
> 
> Yes, just use a V4L application such as xawtv or tvtime to display 
> /dev/dvb/adapter0/dvr0 .

There is also KVDR: http://www.s.netic.de/gfiala

Klaus

___
vdr mailing list
vdr@linuxtv.org
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr