private bool HandleRTSPResponse200Record(RtspProtocol rtspProtocol, Variant requestHeaders, ref string requestContent, Variant responseHeaders, ref string responseContent)
{
bool forceTcp = rtspProtocol.CustomParameters["forceTcp"];
var pConnectivity = GetOutboundConnectivity(rtspProtocol, forceTcp);
if (pConnectivity == null)
{
FATAL("Unable to get outbound connectivity");
return false;
}
bool result = false;
var param = rtspProtocol.CustomParameters;
if (param["audioTransport"] != null)
{
if (forceTcp)
{
if (
!pConnectivity.RegisterTCPAudioClient(rtspProtocol.Id,
param["audioTransport", "interleaved", "data"],
param["audioTransport", "interleaved", "rtcp"]))
{
FATAL("Unable to register audio stream");
return false;
}
}
else
{
var dataAddress = new IPEndPoint((rtspProtocol.IOHandler as TCPCarrier).FarInfo.Address, (param["audioTransport", "interleaved", "data"]));
var rtcpAddress = new IPEndPoint((rtspProtocol.IOHandler as TCPCarrier).FarInfo.Address, (param["audioTransport", "interleaved", "rtcp"]));
if (
!pConnectivity.RegisterUDPAudioClient(rtspProtocol.Id,dataAddress, rtcpAddress))
{
FATAL("Unable to register audio stream");
return false;
}
}
result = true;
}
if (param["videoTransport"] != null)
{
if (forceTcp)
{
if (
!pConnectivity.RegisterTCPVideoClient(rtspProtocol.Id,
param["videoTransport", "interleaved", "data"],
param["videoTransport", "interleaved", "rtcp"]))
{
FATAL("Unable to register video stream");
return false;
}
}
else
{
var dataAddress = new IPEndPoint((rtspProtocol.IOHandler as TCPCarrier).FarInfo.Address,(param["videoTransport", "interleaved", "data"]));
var rtcpAddress = new IPEndPoint((rtspProtocol.IOHandler as TCPCarrier).FarInfo.Address,(param["videoTransport", "interleaved", "rtcp"]));
if (
!pConnectivity.RegisterUDPVideoClient(rtspProtocol.Id, dataAddress, rtcpAddress))
{
FATAL("Unable to register video stream");
return false;
}
}
result = true;
}
return result;
}