private string ComputeSDP(RtspProtocol pFrom,string localStreamName, string targetStreamName, string host)
{
StreamCapabilities pCapabilities = null;
var pInboundStream = GetInboundStream(localStreamName);
if (pInboundStream == null)
FATAL("Stream {0} not found", localStreamName);
else
pCapabilities = pInboundStream.Capabilities;
if (pCapabilities == null)
{
FATAL("Inbound stream {0} not found", (localStreamName));
return "";
}
Debug(pCapabilities.AudioCodecId.ToString());
string audioTrack = GetAudioTrack(pFrom, pCapabilities);
string videoTrack = GetVideoTrack(pFrom, pCapabilities);
if (audioTrack == "" && videoTrack == "")
return "";
string nearAddress = "0.0.0.0";
string farAddress = "0.0.0.0";
if ((pFrom.IOHandler != null)
&& (pFrom.IOHandler.Type == IOHandlerType.IOHT_TCP_CARRIER))
{
nearAddress = ((TCPCarrier)pFrom.IOHandler).NearIP;
farAddress = ((TCPCarrier)pFrom.IOHandler).FarIP;
}
if (targetStreamName == "")
targetStreamName = localStreamName;
//3. Prepare the body of the response
var sw = new StringBuilder();
sw.AppendLine("v=0");
sw.AppendLine($"o=- {pFrom.Id} 0 IN IP4 {nearAddress}");
sw.AppendLine("s=" + targetStreamName);
sw.AppendLine("u=http://www.linkage.com");
//result += "[email protected]\r\n";
sw.AppendLine("c=IN IP4 " + nearAddress);
sw.AppendLine("t=0 0");
//result += "a=recvonly\r\n";
sw.Append(audioTrack);
sw.Append(videoTrack);
//FINEST("result:\n%s", STR(result));
return sw.ToString();
}