[vls-devel] dvbinput module

Alexander Afanasyev alex at icn.bmstu.ru
Thu Oct 23 16:18:32 CEST 2003


Hi!

We have 2 skystar3 cards and one skystar1.
To make work cvs version of vls with multiple
dvb cards i made small patching:
line 151:
  dvb->init("", "", iNumber, iMinor);

to:
  dvb->init("", "", iMinor, iNumber);


Also was troubles with skystar1 card
(unless pesFilterParams.pes_type is not
set to DMX_PES_OTHER sound do not work,
but picture exists).
Because of this bug, I think, will be some
troubles to implement broadcasting scratched
channels. Does anybody integrated this
feature to vls?
In ss3 cards this bug/feature of course absent.

Next, not critical, but not good.
When we run in telnet command
browse program or others we do not get
real named of programs, but memory garbage.
To make it work i have to made such changed
in server/manager_program.cpp:
line 33:
    const C_Program* pPgrm = pPgrmInfo->GetProgram();
    C_String strPgrmName = pPgrm->GetName();
    ASSERT(strPgrmName != "");
    C_Answer cPgrmDescr(strPgrmName);
    cPgrmDescr.SetStatus(NO_ERR);
    cPgrmDescr.AddMessage(pPgrm->GetDescription());

to such lines:
    const C_Program* pPgrm = pPgrmInfo->GetProgram();
    C_Answer cPgrmDescr( pPgrm->GetName() );
    cPgrmDescr.AddMessage(pPgrm->GetName());
    cPgrmDescr.SetStatus( NO_ERR );
    cPgrmDescr.AddMessage(pPgrm->GetDescription());

Possible constuctor of C_Answer uncorrect works - i didn't
wathed to it.
I don't remeber, possible i made more chenges. Realy
don't remember.


Next, what have to be patched!
When we start several broadcasts and want
stop on of them we get segmentation fault
or something else. This is because of
smart string in dvbinput::OnStartStreaming
line 583:
  u16 iNumber = pBroadcast->GetProgram()->GetName().ToInt();

and than this ununical number is used as unical key
for 2 hash arrays:
line 590:
      m_cMuxes.Add(iNumber, pMux);
      m_cStreamers.Add(iNumber, pStreamer);

like thins in dvbinput::OnStopStreaming
line 667:
      u16 iNumber = pBroadcast->GetProgram()->GetName().ToInt();

      C_TsMux *pMux = m_cMuxes.Remove(iNumber);
      ASSERT(pMux);
      C_TsStreamer *pStreamer = m_cStreamers.Remove(iNumber);
      ASSERT(pStreamer);

My solution is adding unical index (i name it as GID) to each
C_Broadcast object. I can't send my pathing because i wrote
one more thing, possible you dislike - not shiny implementation
of reading some sections of configuration file from mySQL database.

I such patch is interesting, i'll send it.


___________________
Alexander Afanasyev

-- 
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