コード例 #1
0
ファイル: MpMisc.cpp プロジェクト: LordGaav/sipxecs
OsStatus mpStartTasks(void)
{
        if (OS_SUCCESS != dmaStartup(MpMisc.frameSamples)) {
            return OS_TASK_NOT_STARTED;
        }

        if (OS_SUCCESS != startNetInTask()) {
            return OS_TASK_NOT_STARTED;
        }

        return OS_SUCCESS;
}
コード例 #2
0
ファイル: MpMisc.cpp プロジェクト: Jaroslav23/sipxtapi
// audio buffer grows if there aren't enough buffers
OsStatus mpStartUp()
{
   MpMisc.m_audioSamplesPerSec = SAMPLES_PER_SECOND;
   MpMisc.m_audioSamplesPerFrame = SAMPLES_PER_FRAME;

   // Create buffer for audio data in mediagraph
   MpMisc.m_pRawAudioPool = new MpBufPool(MpMisc.m_audioSamplesPerFrame*sizeof(MpAudioSample) + MpArrayBuf::getHeaderSize(),
                                          DEFAULT_INITIAL_AUDIO_BUFFERS);

   // Create buffer for audio headers
   int audioBuffers  = MpMisc.m_pRawAudioPool->getNumBlocks();
   MpMisc.m_pAudioHeadersPool = new MpBufPool(sizeof(MpAudioBuf), audioBuffers);
   MpAudioBuf::smpDefaultPool = MpMisc.m_pAudioHeadersPool;

   /*
   * Go get a buffer and fill with silence.  We will use this for muting
   * either or both of input and output, and whenever we are starved for
   * audio data.
   */
   MpAudioBufPtr sb = MpMisc.m_pRawAudioPool->getBuffer();

   if (!sb.isValid())
   {
      return OS_FAILED;
   }

   sb->setSamplesNumber(MpMisc.m_audioSamplesPerFrame);
   memset(sb->getSamplesWritePtr(), 0, sb->getSamplesNumber()*sizeof(MpAudioSample));
   sb->setSpeechType(MP_SPEECH_SILENT);
   MpMisc.m_fgSilence = sb;

   // Create buffer for RTP packets
   MpMisc.m_pRtpPool = new MpBufPool(RTP_MTU + MpArrayBuf::getHeaderSize(), RTP_BUFS);

   // Create buffer for RTCP packets
   MpMisc.m_pRtcpPool = new MpBufPool(RTCP_MTU + MpArrayBuf::getHeaderSize(), RTCP_BUFS);

   // Create buffer for RTP and RTCP headers
   MpMisc.m_pRtpHeadersPool = new MpBufPool(sizeof(MpRtpBuf),
                    MpMisc.m_pRtpPool->getNumBlocks() + MpMisc.m_pRtcpPool->getNumBlocks());

   MpRtpBuf::smpDefaultPool = MpMisc.m_pRtpHeadersPool;

   // Create buffer for UDP packets
   MpMisc.m_pUdpPool = new MpBufPool(UDP_MTU + MpArrayBuf::getHeaderSize(), UDP_BUFS);

   // Create buffer for UDP packet headers
   MpMisc.m_pUdpHeadersPool = new MpBufPool(sizeof(MpUdpBuf), MpMisc.m_pUdpPool->getNumBlocks());
   MpUdpBuf::smpDefaultPool = MpMisc.m_pUdpHeadersPool;

   // create queue for echo canceller
   MpMisc.m_pEchoQ = new OsMsgQ(ECHO_BUFFER_Q_LEN);

#ifndef DISABLE_LOCAL_AUDIO
   // create audio driver manager, which creates audio driver
   if (!MpAudioDriverManager::getInstance(TRUE))
   {
      return OS_FAILED;
   }
#endif

   // start media task
   if (!MpMediaTask::getMediaTask())
   {
      return OS_TASK_NOT_STARTED;
   }

   // start netintask
   if (startNetInTask() != OS_SUCCESS)
   {
      return OS_TASK_NOT_STARTED;
   }

   return OS_SUCCESS;
}