Skip to content

Commit 39f3054

Browse files
authored
Fix codec negotiation when mono channel is set explicitly. (#300)
1 parent e882a5c commit 39f3054

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

pkg/media/sdp/codecs.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,11 @@ func init() {
2828
media.OnRegister(func(c media.Codec) {
2929
name := c.Info().SDPName
3030
if name != "" {
31-
codecByName[strings.ToLower(name)] = c
31+
name = strings.ToLower(name)
32+
codecByName[name] = c
33+
if strings.Count(name, "/") == 1 {
34+
codecByName[name+"/1"] = c
35+
}
3236
}
3337
})
3438
}

pkg/media/sdp/offer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ func ParseMedia(d *sdp.MediaDescription) (*MediaDesc, error) {
306306
continue
307307
}
308308
name := sub[1]
309-
if name == dtmf.SDPName {
309+
if name == dtmf.SDPName || name == dtmf.SDPName+"/1" {
310310
out.DTMFType = byte(typ)
311311
continue
312312
}

pkg/media/sdp/offer_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,20 @@ func TestSDPMediaAnswer(t *testing.T) {
214214
DTMFType: 101,
215215
},
216216
},
217+
{
218+
name: "explicit mono channel",
219+
offer: sdp.MediaDescription{
220+
Attributes: []sdp.Attribute{
221+
{Key: "rtpmap", Value: "0 PCMU/8000/1"},
222+
{Key: "rtpmap", Value: "101 telephone-event/8000/1"},
223+
},
224+
},
225+
exp: &AudioConfig{
226+
Codec: getCodec(g711.ULawSDPName),
227+
Type: 0,
228+
DTMFType: 101,
229+
},
230+
},
217231
}
218232
for _, c := range cases {
219233
c := c

0 commit comments

Comments
 (0)