Skip to content

Commit 42217df

Browse files
authored
fix: bug for rfc2833. (#534)
1 parent d484932 commit 42217df

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

Diff for: lib/src/rtc_session.dart

+14-6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import 'dart:async';
33

44
// Package imports:
5+
import 'package:collection/collection.dart';
56
import 'package:flutter_webrtc/flutter_webrtc.dart';
67
import 'package:sdp_transform/sdp_transform.dart' as sdp_transform;
78

@@ -95,6 +96,9 @@ class RTCSession extends EventManager implements Owner {
9596
// The RTCPeerConnection instance (public attribute).
9697
RTCPeerConnection? _connection;
9798

99+
// RTPSender List
100+
final List<RTCRtpSender> _senders = <RTCRtpSender>[];
101+
98102
// Incoming/Outgoing request being currently processed.
99103
dynamic _request;
100104

@@ -168,8 +172,10 @@ class RTCSession extends EventManager implements Owner {
168172
@override
169173
int get TerminatedCode => RtcSessionState.terminated.index;
170174

171-
RTCDTMFSender get dtmfSender =>
172-
_connection!.createDtmfSender(_localMediaStream!.getAudioTracks()[0]);
175+
RTCDTMFSender? get dtmfSender => _senders
176+
.firstWhereOrNull((RTCRtpSender item) =>
177+
item.track != null && item.track!.kind == 'audio')
178+
?.dtmfSender;
173179

174180
String? get contact => _contact;
175181

@@ -628,8 +634,9 @@ class RTCSession extends EventManager implements Owner {
628634
if (stream != null) {
629635
switch (sdpSemantics) {
630636
case 'unified-plan':
631-
stream.getTracks().forEach((MediaStreamTrack track) {
632-
_connection!.addTrack(track, stream!);
637+
stream.getTracks().forEach((MediaStreamTrack track) async {
638+
RTCRtpSender sender = await _connection!.addTrack(track, stream!);
639+
_senders.add(sender);
633640
});
634641
break;
635642
case 'plan-b':
@@ -2395,8 +2402,9 @@ class RTCSession extends EventManager implements Owner {
23952402
if (stream != null) {
23962403
switch (sdpSemantics) {
23972404
case 'unified-plan':
2398-
stream.getTracks().forEach((MediaStreamTrack track) {
2399-
_connection!.addTrack(track, stream!);
2405+
stream.getTracks().forEach((MediaStreamTrack track) async {
2406+
RTCRtpSender sender = await _connection!.addTrack(track, stream!);
2407+
_senders.add(sender);
24002408
});
24012409
break;
24022410
case 'plan-b':

Diff for: lib/src/rtc_session/dtmf.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ class DTMF extends EventManager {
7070
_interToneGap = options['interToneGap'];
7171

7272
if (_mode == DtmfMode.RFC2833) {
73-
RTCDTMFSender dtmfSender = _session.dtmfSender;
74-
dtmfSender.insertDTMF(_tone!,
73+
RTCDTMFSender? dtmfSender = _session.dtmfSender;
74+
dtmfSender?.insertDTMF(_tone!,
7575
duration: _duration!, interToneGap: _interToneGap!);
7676
} else if (_mode == DtmfMode.INFO) {
7777
extraHeaders.add('Content-Type: application/dtmf-relay');

0 commit comments

Comments
 (0)