Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[linux-dvb] Re: Problems after reloading vdr
Looks like this message got lost the first time, so I'll try again.
Sorry if it comes twice...
Klaus Schmidinger wrote:
>
> Peter Seyringer wrote:
> >
> > Hello!
> >
> > I have a problem with the channel switching after reloading vdr.
> > If i have played a recorded scene and exit vdr with Strg-C and reload it again and i can switch the channel but there are troubles with the picture or sound. On some channels i get a picture but no sound on other i get the sound of the last channel but no picture or i get the right picture but a sound of an other channel.
> > After reloading the driver there is no problem. I think there is a bug in the demux (?) lib and it is the same problem with the CAM after replay.
> >
> > My system is a fresh installation of the latest dvb driver and vdr software, kernel version is 2.4.7 and my DVB-s Card is the new one.
>
> I also have observed this problem several times lately.
> Must be something they have changed in recent driver versions.
>
> Klaus
I believe I found what's causing this. Apparently the filters were not all
released when an application ended, so after a few restarts all the 32 filters
were used up.
Here's what I did in DVB/driver/dmxdev.c to cure this (don't know if this
really is a "fix" or just a "workaround" - maybe the driver developers can
say more about this).
--- dmxdev.c.001 Fri Aug 10 08:28:24 2001
+++ dmxdev.c Sun Aug 12 13:36:48 2001
@@ -394,7 +394,14 @@
/* We used to return EINVAL here but resetting a free filter
should be valid too. But since in this case there is nothing
to do, just return */
- if (dmxdevfilter->state<=DMXDEV_STATE_ALLOCATED)
+ /* Only return if the state is actually DMXDEV_STATE_FREE,
+ otherwise filters are not properly released when the
+ files are closed (i.e. when an application ends) and
+ after a few restarts of an application all the 32 filters
+ are used up. Maybe the check here should actually be
+ 'if (dmxdevfilter->state==DMXDEV_STATE_FREE)'?
+ kls 2001-08-12 *///XXX
+ if (dmxdevfilter->state<DMXDEV_STATE_ALLOCATED)
return 0;
switch (dmxdevfilter->type) {
@@ -433,7 +440,11 @@
dmxdevfilter->feed.ts=0;
break;
default:
- return -EINVAL;
+ /* due to the above change it can happen that filters with type==0
+ get through here, which shouldn't be considered an error.
+ kls 2001-08-12 *///XXX
+ if (dmxdevfilter->type != 0)
+ return -EINVAL;
}
dmxdevfilter->buffer.pwrite=dmxdevfilter->buffer.pread=0;
return 0;
--
_______________________________________________________________
Klaus Schmidinger Phone: +49-8635-6989-10
CadSoft Computer GmbH Fax: +49-8635-6989-40
Hofmark 2 Email: kls@cadsoft.de
D-84568 Pleiskirchen, Germany URL: www.cadsoft.de
_______________________________________________________________
--
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.
Home |
Main Index |
Thread Index