[vls-devel] Re: Multicasting multiple streams on nova-t

Jean-Paul Saman saman at natlab.research.philips.com
Wed Apr 23 09:26:00 CEST 2003


Richard Hindley wrote:
> http://www.via.ecp.fr/via/ml/vls/200212/msg00035.html and follow-ups
> suggest a patch for a problem with the nova-t card. It should be
> possible to multicast multiple programs simultaneously from the same mux
> - but only one works at a time.
> 
> Unless I'm doing something wrong, it looks like an "official" patch for
> this didn't make it into 0.5.0, because this problem still seems to
> exist. The patches suggested in the archives are against CSV at that
> time, so they're not directly usable. Maybe someone can help? It would
> certainly be useful to incorporate this into a future release.
> 
> My plan is to build a server which offers a selection of DVB stations
> across the LAN via multicast. VideoLan with nova-t looks like the best
> way to go at present. I'm thinking maybe two servers each which two
> nova-t cards to cover 4 muxes.
> 
> Richard

According to this code inside src/module/dvbinput/dvbinput.cpp:

void C_DvbInput::OnStartStreaming(C_Broadcast* pBroadcast)
{
.....

   // Lock the demux usage
   m_cDemuxUsageM.Lock();

   //If we have not already started the demux, do so and wait for the 
first PAT
   if (m_iDemuxUsageCount == 0)
   {
     // Set the frontend up
     dvb->SetTP(dvb->chans[iIndex].tpid, dvb->chans[iIndex].satid);
     dvb->set_front();

     sleep(3);

     //Launch the demux
     m_pConverter->Create();

     // Add a filter for PAT
     SelectPid(&m_cPatDecoder, 0x0000, TS_TYPE_NULL);

     // Wait for the first PAT
     m_cEndInit.Wait();
     m_cEndInit.Release();
     m_iGotTpid = dvb->chans[iIndex].tpid; // Remember the transponder
   }
   else
   {
     //Check that if we have already got one broadcast going this
     //new one is on the same mux (transponder)
     if(m_iGotTpid != dvb->chans[iIndex].tpid)
     {
       Log(m_hLog, LOG_ERROR, C_String("Attempting to start reception 
from" \
           " different transponder.Existing Transponder is") +m_iGotTpid +
             " New transponder is" + dvb->chans[iIndex].tpid);
       m_cDemuxUsageM.UnLock();
       return;
     }
   }

   // Update Demux Counter and unlock
   m_iDemuxUsageCount++;
   m_cDemuxUsageM.UnLock();

.....


It should work, because it tracks the Usage counts on the DVBinput 
module. Which should be equivalent to checking if the first PAT is 
found. I suggest you debug this piece of code to find what the problem is.

-- 
Kind greetings,

Jean-Paul Saman

Software Architect

e-mail (work): saman at natlab.research.philips.com
phone  (work): 040 27 42674
------------------------------------------------------------
Ordina TA,
Science Park Eindhoven 5602, Postbus 293, 5600 AG Eindhoven
e-mail : jean-paul.saman at ordina.nl
phone  : 040 2601200
fax    : 040 2601199


-- 
This is the vls-devel mailing-list, see http://www.videolan.org/streaming/
To unsubscribe, please read http://developers.videolan.org/lists.html
If you are in trouble, please contact <postmaster at videolan.org>



More information about the vls-devel mailing list