Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: A/V dropouts when switching section filters



Alfred Zastrow wrote:
> 
> Johannes Stezenbach wrote:
> 
> > Klaus Schmidinger wrote:
> 
> >>- If I disable the StartSectionHandler() call in VDR's cDvbDevice::cDvbDevice(),
> >>  the problem does not occur, so I guess it must have to do with section
> >>  filtering.
> 
> Here too,
> 
> I have less problems with vdr with my two 1.3 cards using the
> brsv2-driver (probably this one tunes faster)
> And I have no problems since I use this patch for vdr from Andreas Share:
> 
> --------------------- schnipp --------------------------------
> 
> diff -ruN vdr-1.3.11_org/device.c vdr-1.3.11/device.c
> --- vdr-1.3.11_org/device.c     2004-08-05 21:48:47.785415832 +0200
> +++ vdr-1.3.11/device.c 2004-08-05 21:51:54.699000648 +0200
> @@ -433,6 +433,10 @@
>           sectionHandler->SetChannel(NULL);
>           }
>        if (SetChannelDevice(Channel, LiveView)) {
> +       //Start section handler threat after first tune
> +       if (!sectionHandler) {
> +          StartSectionHandler();
> +          }
>           // Start section handling:
>           if (sectionHandler) {
>              sectionHandler->SetChannel(Channel);
> diff -ruN vdr-1.3.11_org/dvbdevice.c vdr-1.3.11/dvbdevice.c
> --- vdr-1.3.11_org/dvbdevice.c  2004-08-05 21:48:47.787415528 +0200
> +++ vdr-1.3.11/dvbdevice.c      2004-08-05 21:49:25.471686648 +0200
> @@ -373,7 +373,7 @@
> 
>     aPid1 = aPid2 = 0;
> 
> -  StartSectionHandler();
> +//  StartSectionHandler();
>   }
> 
>   cDvbDevice::~cDvbDevice()
> 
> --------------------- schnapp --------------------------------
> 
> My guess is that received garbage (because of slow tuning) disturbes the
> section filters.
> 
> Alfred

Moving the StartSectionHandler() from dvbdevice.c into device.c is not
the right thing to do, because the abstract cDevice can't know whether
the actual device provides any section data at all. That's why this
call is in dvbdevice.c.

Besides, even with the above change it is still not guaranteed that the
device has a lock when the section handling is started.

I guess I'll change cSectionHandler::Action() in a way that the actual
filter activation is done inside that function, only if the device has
a lock.

Klaus




Home | Main Index | Thread Index