Appspotdemo.Mono.Droid.AppRTCDemoActivity.preferISAC C# (CSharp) Method

preferISAC() private method

private preferISAC ( string sdpDescription ) : string
sdpDescription string
return string
        private string preferISAC(string sdpDescription)
        {
            string[] lines = sdpDescription.Split("\n", true);
            int mLineIndex = -1;
            string isac16kRtpMap = null;
            Java.Util.Regex.Pattern isac16kPattern = Java.Util.Regex.Pattern.Compile("^a=rtpmap:(\\d+) ISAC/16000[\r]?$");
            for (int i = 0; (i < lines.Length) && (mLineIndex == -1 || isac16kRtpMap == null); ++i)
            {
                if (lines[i].StartsWith("m=audio "))
                {
                    mLineIndex = i;
                    continue;
                }
                Matcher isac16kMatcher = isac16kPattern.Matcher(lines[i]);
                if (isac16kMatcher.Matches())
                {
                    isac16kRtpMap = isac16kMatcher.Group(1);
                    continue;
                }
            }
            if (mLineIndex == -1)
            {
                Log.Debug(TAG, "No m=audio line, so can't prefer iSAC");
                return sdpDescription;
            }
            if (isac16kRtpMap == null)
            {
                Log.Debug(TAG, "No ISAC/16000 line, so can't prefer iSAC");
                return sdpDescription;
            }
            string[] origMLineParts = lines[mLineIndex].Split(" ", true);
            StringBuilder newMLine = new StringBuilder();
            int origPartIndex = 0;
            // Format is: m=<media> <port> <proto> <fmt> ...
            newMLine.Append(origMLineParts[origPartIndex++]).Append(" ");
            newMLine.Append(origMLineParts[origPartIndex++]).Append(" ");
            newMLine.Append(origMLineParts[origPartIndex++]).Append(" ");
            newMLine.Append(isac16kRtpMap).Append(" ");
            for (; origPartIndex < origMLineParts.Length; ++origPartIndex)
            {
                if (!origMLineParts[origPartIndex].Equals(isac16kRtpMap))
                {
                    newMLine.Append(origMLineParts[origPartIndex]).Append(" ");
                }
            }
            lines[mLineIndex] = newMLine.ToString();
            StringBuilder newSdpDescription = new StringBuilder();
            foreach (string line in lines)
            {
                newSdpDescription.Append(line).Append("\n");
            }
            return newSdpDescription.ToString();
        }

Usage Example

コード例 #1
0
 public void OnCreateSuccess(SessionDescription origSdp)
 {
     outerInstance.RunOnUiThread(() =>
     {
         outerInstance.logAndToast("Sending " + origSdp.Type);
         SessionDescription sdp = new SessionDescription(origSdp.Type, outerInstance.preferISAC(origSdp.Description));
         JSONObject json        = new JSONObject();
         jsonPut(json, "type", sdp.Type.CanonicalForm());
         jsonPut(json, "sdp", sdp.Description);
         outerInstance.sendMessage(json);
         outerInstance.pc.SetLocalDescription(outerInstance.sdpObserver, sdp);
     });
 }
All Usage Examples Of Appspotdemo.Mono.Droid.AppRTCDemoActivity::preferISAC