Re: Multicasting multiple streams on nova-t

Jean-Paul Saman <[email protected]>
Newsgroups gmane.comp.video.videolan.vls.devel
Message-ID <[email protected]>
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): [email protected]
phone  (work): 040 27 42674
------------------------------------------------------------
Ordina TA,
Science Park Eindhoven 5602, Postbus 293, 5600 AG Eindhoven
e-mail : [email protected]
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 <[email protected]>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.