8000 fix: Pass MediaConstraints for getUserAudio. (#1732) · flutter-webrtc/flutter-webrtc@751f8ed · GitHub
[go: up one dir, main page]

Skip to content

Commit 751f8ed

Browse files
authored
fix: Pass MediaConstraints for getUserAudio. (#1732)
* fix: Pass MediaConstraints for getUserAudio. * release: 0.12.5+hotfix.1
1 parent b4e0362 commit 751f8ed

File tree

3 files changed

+19
-6
lines changed

3 files changed

+19
-6
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
# Changelog
22

33
--------------------------------------------
4+
[0.12.5+hotfix.1] - 2024-12-25
5+
6+
* [iOS/macOS] fix: Pass MediaConstraints for getUserAudio.
7+
48
[0.12.5] - 2024-12-23
59

610
* [iOS/Android] Fixed buf for screen capture.

common/darwin/Classes/FlutterRTCMediaStream.m

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ - (NSDictionary*)defaultVideoConstraints {
5151
return @{@"minWidth" : @"1280", @"minHeight" : @"720", @"minFrameRate" : @"30"};
5252
}
5353

54+
- (NSDictionary*)defaultAudioConstraints {
55+
return @{};
56+
}
57+
58+
5459
- (RTCMediaConstraints*)defaultMediaStreamConstraints {
5560
RTCMediaConstraints* constraints =
5661
[[RTCMediaConstraints alloc] initWithMandatoryConstraints:[self defaultVideoConstraints]
@@ -114,7 +119,7 @@ - (void)getUserAudio:(NSDictionary*)constraints
114119
mediaStream:(RTCMediaStream*)mediaStream {
115120
id audioConstraints = constraints[@"audio"];
116121
NSString* audioDeviceId = @"";
117-
122+
RTCMediaConstraints *rtcConstraints;
118123
if ([audioConstraints isKindOfClass:[NSDictionary class]]) {
119124
// constraints.audio.deviceId
120125
NSString* deviceId = audioConstraints[@"deviceId"];
@@ -123,11 +128,12 @@ - (void)getUserAudio:(NSDictionary*)constraints
123128
audioDeviceId = deviceId;
124129
}
125130

131+
rtcConstraints = [self parseMediaConstraints:audioConstraints];
126132
// constraints.audio.optional.sourceId
127-
id optionalVideoConstraints = audioConstraints[@"optional"];
128-
if (optionalVideoConstraints && [optionalVideoConstraints isKindOfClass:[NSArray class]] &&
133+
id optionalConstraints = audioConstraints[@"optional"];
134+
if (optionalConstraints && [optionalConstraints isKindOfClass:[NSArray class]] &&
129135
!deviceId) {
130-
NSArray* options = optionalVideoConstraints;
136+
NSArray* options = optionalConstraints;
131137
for (id item in options) {
132138
if ([item isKindOfClass:[NSDictionary class]]) {
133139
NSString* sourceId = ((NSDictionary*)item)[@"sourceId"];
@@ -137,6 +143,8 @@ - (void)getUserAudio:(NSDictionary*)constraints
137143
}
138144
}
139145
}
146+
} else {
147+
rtcConstraints = [self parseMediaConstraints:[self defaultAudioConstraints]];
140148
}
141149

142150
#if !defined(TARGET_OS_IPHONE)
@@ -146,7 +154,8 @@ - (void)getUserAudio:(NSDictionary*)constraints
146154
#endif
147155

148156
NSString* trackId = [[NSUUID UUID] UUIDString];
149-
RTCAudioTrack* audioTrack = [self.peerConnectionFactory audioTrackWithTrackId:trackId];
157+
RTCAudioSource *audioSource = [self.peerConnectionFactory audioSourceWithConstraints:rtcConstraints];
158+
RTCAudioTrack* audioTrack = [self.peerConnectionFactory audioTrackWithSource:audioSource trackId:trackId];
150159
LocalAudioTrack *localAudioTrack = [[LocalAudioTrack alloc] initWithTrack:audioTrack];
151160

152161
audioTrack.settings = @{

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: flutter_webrtc
22
description: Flutter WebRTC plugin for iOS/Android/Destkop/Web, based on GoogleWebRTC.
3-
version: 0.12.5
3+
version: 0.12.5+hotfix.1
44
homepage: https://github.com/cloudwebrtc/flutter-webrtc
55
environment:
66
sdk: '>=3.3.0 <4.0.0'

0 commit comments

Comments
 (0)
0