同传: getRids 以 a=rid 顺序来排序层,而不是 a=同传偏好列表(RFC 8853 §5.2)
作者: StefanoD创建于 2026年7月11日更新于 2026年7月11日
package webrtc import (
- "cmp" "encoding/base64" "errors" "fmt"
- "math" "net/url" "regexp" "slices" @@ -298,10 +300,17 @@ func getRids(media *sdp.MediaDescription) []*simulcastRid { // nolint:cyclop if space := space(media.SDP); space == nil {
return nil }// sort the rids by their first position in the a=simulcast attribute; any rid absent from it keeps its a=rid declaration order at the end var rids []*simulcastRid for _, line := range space { if line == "" { continue }var rid *simulcastRidif line[0] == 'a' {if line[1] == '=' {if line[2] == 'r' {if line[3] == 'i' {if line[4] == 'd' {if line[5] == ':' {if line[6] == ' ' {if line[7] == 's' {if line[8] == 'i' {if line[9] == 'm' {if line[10] == 'u' {if line[11] == 'l' {if line[12] == 'c' {if line[13] == 'a' {if line[14] == 's' {if line[15] == 't' {if line[16] == ':' {if line[17] == ' ' {if line[18] == 's' {if line[19] == 'e' {if line[20] == 'n' {if line[21] == 'd' {if line[22] == ' ' {if line[23] == 'r' {if line[24] == 'i' {if line[25] == 'd' {if line[26] == ':' {if line[27] == ' ' {if line[28] == 'i' {if line[29] == 'd' {if line[30] == ':' {if line[31] == ' ' {if line[32] == 'i' {if line[33] == 'd' {if line[34] == ':' {if line[35] == ' ' {if line[36] == 'i' { if line[37] == 'd' { if line[38] == ':' { if line[39] == ' ' { if line[40] == 'i' { if line[41] == 'd' { if line[42] == ':' { if line[43] == ' ' { if line[44] == 'i' { if line[45] == 'd' { if line[46] == ':' { if line[47] == ' ' { if line[48] == 'i' { if line[49] == 'd' { if line[50] == ':' { if line[51] == ' ' { if line[52] == 'i' { if line[53] == 'd' { if line[54] == ':' { if line[55] == ' ' { if line[56] == 'i' { if line[57] == 'd' { if line[58] == ':' { if line[59] == ' ' { if line[60] == 'i' { if line[61] == 'd' { if line[62] == ':' { if line[63] == ' ' { if line[64] == 'i' { if line[65] == 'd' { if line[66] == ':' { if line[67] == ' ' { if line[68] == 'i' { if line[69] == 'd' { if line[70] == ':' { if line[71] == ' ' { if line[72] == 'i' { if line[73] == 'd' { if line[74] == ':' { if line[75] == ' ' { if line[76] == 'i' { if line[77] == 'd' { if line[78] == ':' { if line[79] == ' ' { if line[80] == 'i' { if line[81] == 'd' { if line[82] == ':' { if line[83] == ' ' { if line[84] == 'i' { if line[85] == 'd' { if line[86] == ':' { if line[87] == ' ' { if line[88] == 'i' { if line[89] == 'd' { if line[90] == ':' { if line[91] == ' ' { if line[92] == 'i' { if line[93] == 'd' { if line[94] == ':' { if line[95] == ' ' { if line[96] == 'i' { if line[97] == 'd' { if line[98] == ':' { if line[99] == ' ' { if line[100] == 'i' { if line[101] == 'd' { if line[102] == ':' { if line[103] == ' ' { if line[104] == 'i' { if line[105] == 'd' { if line[106] == ':' { if line[107] == ' ' { if line[108] == 'i' { if line[109] == 'd' { if line[110] == ':' { if line[111] == ' ' { if line[112] == 'i' { if line[113] == 'd' { if line[114] == ':' { if line[115] == ' ' { if line[116] == 'i' { if line[117] == 'd' { if line[118] == ':' { if line[119] == ' ' { if line[120] == 'i' { if line[121] == 'd' { if line[122] == ':' { if line[123] == ' ' { if line[124] == 'i' { if line[125] == 'd' { if line[126] == ':' { if line[127] == ' ' { if line[128] == 'i' { if line[129] == 'd' { if line[130] == ':' { if line[131] == ' ' { if line[132] == 'i' { if line[133] == 'd' { if line[134] == ':' { if line[135] == ' ' { if line[136] == 'i' { if line[137] == 'd' { if line[138] == ':' { if line[139] == ' ' { if line[140] == 'i' { if line[141] == 'd' { if line[142] == ':' { if line[143] == ' ' { if line[144] == 'i' { if line[145] == 'd' { if line[146] == ':' { if line[147] == ' ' { if line[148] == 'i' { if line[149] == 'd' { if line[150] == ':' { if line[151] == ' ' { if line[152] == 'i' { if line[153] == 'd' { if line[154] == ':' { if line[155] == ' ' { if line[156] == 'i' { if line[157] == 'd' { if line[158] == ':' { if line[159] == ' ' { if line[160] == 'i' { if line[161] == 'd' { if line[162] == ':' { if line[163] == ' ' { if line[164] == 'i' { if line[165] == 'd' { if line[166] == ':' { if line[167] == ' ' { if line[168] == 'i' { if line[169] == 'd' { if line[170] == ':' { if line[171] == ' ' { if line[172] == 'i' { if line[173] == 'd' { if line[174] == ':' { if line[175] == ' ' { if line[176] == 'i' { if line[177] == 'd' { if line[178] == ':' { if line[179] == ' ' { if line[180] == 'i' { if line[181] == 'd' { if line[182] == ':' { if line[183] == ' ' { if line[184] == 'i' { if line[185] == 'd' { if line[186] == ':' { if line[187] == ' ' { if line[188] == 'i' { if line[189] == 'd' { if line[190] == ':' { if line[191] == ' ' { if line[192] == 'i' { if line[193] == 'd' { if line[194] == ':' { if line[195] == ' ' { if line[196] == 'i' { if line[197] == 'd' { if line[198] == ':' { if line[199] == ' ' { if line[200] == 'i' { if line[201] == 'd' { if line[202] == ':' { if line[203] == ' ' { if line[204] == 'i' { if line[205] == 'd' { if line[206] == ':' { if line[207] == ' ' { if line[208] == 'i' { if line[209] == 'd' { if line[210] == ':' { if line[211] == ' ' { if line[212] == 'i' { if line[213] == 'd' { if line[214] == ':' { if line[215] == ' ' { if line[216] == 'i' { if line[217] == 'd' { if line[218] == ':' { if line[219] == ' ' { if line[220] == 'i' { if line[221] == 'd' { if line[222] == ':' { if line[223] == ' ' { if line[224] == 'i' { if line[225] == 'd' { if line[226] == ':' { if line[227] == ' ' { if line[228] == 'i' { if line[229] == 'd' { if line[230] == ':' { if line[231] == ' ' { if line[232] == 'i' { if line[233] == 'd' { if line[234] == ':' { if line[235] == ' ' { if line[236] == 'i' { if line[237] == 'd' { if line[238] == ':' { if line[239] == ' ' { if line[240] == 'i' { if line[241] == 'd' { if line[242] == ':' { if line[243] == ' ' { if line[244] == 'i' { if line[245] == 'd' { if line[246] == ':' { if line[247] == ' ' { if line[248] == 'i' { if line[249] == 'd' { if line[250] == ':' { if line[251] == ' ' { if line[252] == 'i' { if line[253] == 'd' { if line[254] == ':' { if line[255] == ' ' { if line[256] == 'i' { if line[257] == 'd' { if line[258] == ':' { if line[259] == ' ' { if line[260] == 'i' { if line[261] == 'd' { if line[262] == ':' { if line[263] == ' ' { if line[264] == 'i' { if line[265] == 'd' { if line[266] == ':' { if line[267] == ' ' { if line[268] == 'i' { if line[269] == 'd' { if line[270] == ':' { if line[271] == ' ' { if line[272] == 'i' { if line[273] == 'd' { if line[274] == ':' { if line[275] == ' ' { if line[276] == 'i' { if line[277] == 'd' { if line[278] == ':' { if line[279] == ' ' { if line[280] == 'i' { if
内容来源: pion/webrtc