Streamdev HTTP attach not grabbing a free DVB card?

Message ID 43FB6747.6070809@gmail.com
State New
Headers

Commit Message

Anssi Hannula Feb. 21, 2006, 7:17 p.m. UTC
  Niko Mikkila wrote:
> On Mon, 20 Feb 2006 23:03:27 +0200
> "Jukka Vaisanen" <Jukka.Vaisanen@exomi.com> wrote:
> 
>>- I restart VDR "fresh" with only dxr3 and streamdev plugin loaded
>>- I switch my primary output (dxr3) to the preferred channel, works fine
>>- I connect via the streamdev HTTP server to a channel which is on
>>another mux and my dxr3 output switches to the first channel in that
>>mux. Apparently the streamdev is somehow grabbing the same budget card
>>and forcing the mux switch.
> 

> I recall something like this when I first tried streamdev with a VDR
> client. I "fixed" the problem by forcing each DVB card to a specific
> mux in channels.conf. Somehow I thought this wasn't a problem with HTTP
> streaming, but that doesn't make sense, so I probably remember it wrong.
> I've also kept the forced settings for other reasons, which keeps me
> from experiencing these annoying switches.
> 

And I worked-around this bug by changing the transfer-mode primary
limit. This however has the side effect that *any* channel change to a
non-tuned channel (i.e. the mux is not already tuned in any of the
cards) will require an additional DVB card as the tuner of the current
channel is not regarded as free when selecting the card to tune to the
new channel. I have no problem with that, as I have 3 cards and 3 muxes.
  

Patch

--- transfer.c.old	2005-06-29 03:50:18.000000000 +0300
+++ transfer.c	2005-06-29 03:59:26.000000000 +0300
@@ -15,7 +15,7 @@ 
 // --- cTransfer -------------------------------------------------------------
 
 cTransfer::cTransfer(int VPid, const int *APids, const int *DPids, const int *SPids)
-:cReceiver(0, -1, VPid, APids, Setup.UseDolbyDigital ? DPids : NULL, SPids)
+:cReceiver(0, Setup.PrimaryLimit, VPid, APids, Setup.UseDolbyDigital ? DPids : NULL, SPids)
 ,cThread("transfer")
 {
   ringBuffer = new cRingBufferLinear(TRANSFERBUFSIZE, TS_SIZE * 2, true, "Transfer");