本文整理汇总了C++中MediaSubsession::GetBandWidth方法的典型用法代码示例。如果您正苦于以下问题:C++ MediaSubsession::GetBandWidth方法的具体用法?C++ MediaSubsession::GetBandWidth怎么用?C++ MediaSubsession::GetBandWidth使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MediaSubsession
的用法示例。
在下文中一共展示了MediaSubsession::GetBandWidth方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: MediaNet_Thread
//.........这里部分代码省略.........
}
}
}
if (!madeProgress)
break;
// Perform additional 'setup' on each subsession, before playing them:
pThis->SetRtspStatus( RTSPStatus_Setup );
unsigned nResponseCode = NULL;
BOOL bSetupSuccess = setupStreams( &nResponseCode );
if ( !bSetupSuccess )
{
// setup失败!
if ( RTSPResp_Error_Server_Full == nResponseCode )
{
pThis->SetRtspStatus( RTSPStatus_Error_Server_Full );
}
else
{
pThis->SetRtspStatus( RTSPStatus_Idle );
}
break;
}
// Create output files:
if ( true )
{
// Create and start "FileSink"s for each subsession:
madeProgress = False;
iter.reset();
while ((subsession = iter.next()) != NULL)
{
if (subsession->readSource() == NULL) continue; // was not initiated
MediaSink *pDecodeSink = 0;
if (strcmp(subsession->mediumName(), "video") == 0 )
{
int nBandWidth = subsession->GetBandWidth();
if ( strcmp(subsession->codecName(), "MP4V-ES") == 0 )
{
CMpeg4StreamDecodeSink *pMsds = CMpeg4StreamDecodeSink::CreateNew( *env, 20000, nBandWidth );
pDecodeSink = pMsds;
}
else if ( strcmp( subsession->codecName(), "H264" ) == 0 )
{
CH264StreamDecodeSink *pHsds = CH264StreamDecodeSink::CreateNew( *env, 20000, nBandWidth );
pDecodeSink = pHsds;
}
else
{
continue;
}
}
subsession->sink = pDecodeSink;
if (subsession->sink == NULL)
{
*env << "Failed to create CH264StreamDecodeSink \"" << "\n";
}
subsession->sink->startPlaying(*(subsession->readSource()),
subsessionAfterPlaying,
subsession);
// Also set a handler to be called if a RTCP "BYE" arrives
// for this subsession:
if (subsession->rtcpInstance() != NULL)
{
subsession->rtcpInstance()->setByeHandler(subsessionByeHandler,
subsession);
}
// 发送NAT探测包。
unsigned char temp[112] = {0};
temp[0] = 0x80;
subsession->rtpSource()->RTPgs()->output( *env, 0,temp, 112 );
madeProgress = True;
}
}
// Finally, start playing each subsession, to start the data flow:
pThis->SetRtspStatus( RTSPStatus_Play );
startPlayingStreams();
pThis->SetRtspStatus( RTSPStatus_Running );
// 传入结束标志指针。
env->taskScheduler().doEventLoop( &pThis->m_runFlag );
pThis->SetRtspStatus( RTSPStatus_Idle );
} while(0);
return 0;
}