Repository navigation
Conversation
RtcTracksInfoMapper.toDTO() built sfu TrackInfo without the muted flag, so every track in SetPublisher, the join request and UpdatePublish went out as unmuted, including a disabled track still attached to its sender. Android, iOS and JS all send it. RtcTrackInfo.muted has been computed correctly from the sender track's enabled flag since #1173. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
SDK Size
Measured on |
Size BreakdownWhat each SDK adds to an empty release app, per Dart package and native library. Dart sizes are uncompressed symbol sizes. Open the This run does not measure ios. Measured on android ·
|
| Component | Size | Δ vs v2 |
|---|---|---|
native:libjingle_peerconnection_so.so |
11.96 MB | 0 |
package:stream_video |
1.07 MB | +0.1 KB |
classes.dex |
261.9 KB | 0 |
dart:@unknown |
256.6 KB | -0.0 KB |
dart:_http |
153.9 KB | 0 |
package:protobuf |
146.1 KB | 0 |
dart:mixin_deduplication |
137.0 KB | 0 |
native:libdartjni.so |
121.7 KB | 0 |
dart:io |
99.3 KB | 0 |
dart:async |
75.6 KB | 0 |
package:stream_core |
68.6 KB | 0 |
package:stream_webrtc_flutter |
56.3 KB | 0 |
package:rxdart |
54.3 KB | 0 |
package:dio |
51.8 KB | 0 |
dart:core |
51.5 KB | 0 |
| other (71) | 536.8 KB | 0 |
android · stream_video_flutter: 17.36 MB (+0.1 KB)
| Component | Size | Δ vs v2 |
|---|---|---|
native:libjingle_peerconnection_so.so |
11.96 MB | 0 |
package:stream_video |
1.13 MB | +0.1 KB |
package:flutter |
698.9 KB | -0.0 KB |
classes.dex |
454.8 KB | 0 |
dart:@unknown |
431.3 KB | -0.0 KB |
dart:mixin_deduplication |
356.0 KB | +0.0 KB |
package:stream_video_flutter |
205.5 KB | 0 |
dart:_http |
154.3 KB | 0 |
package:protobuf |
145.6 KB | 0 |
dart:io |
136.4 KB | 0 |
package:stream_core_flutter |
124.2 KB | 0 |
native:libdartjni.so |
121.7 KB | 0 |
assets |
118.5 KB | 0 |
package:hive_ce |
99.2 KB | 0 |
dart:@shared |
83.4 KB | +0.0 KB |
| other (98) | 1.22 MB | 0 |
🎯 Goal
Flutter never sent
TrackInfo.mutedto the SFU.RtcTracksInfoMapper.toDTO()left the field out, so every track in SetPublisher, the join request'sannouncedTracksand UpdatePublish went out as unmuted.Muting disables a track but leaves it attached to its sender, so a muted microphone or camera keeps being announced. When another track is published while muted, for example turning the camera on with the mic muted, the SetPublisher that follows announces the mic as unmuted. The mute-state update sent at mute time isn't sent again after that.
Android, iOS and JS all send the flag:
Publisher.kt,muted = !track.enabled()Local{Audio,Video,ScreenShare}MediaAdapter.swift,trackInfo.muted = !track.isEnabledPublisher.ts,muted: !isTrackLiveGetStream/stream-video-android#1896 shows the SFU acts on this field. Hosts that wrongly announced
muted=truethere were treated as audio-only.🛠 Implementation details
RtcTracksInfoMapper.toDTO()passesmuted: info.muted.RtcTrackInfo.mutedwas added in feat: codec negotiation #811 with inverted logic. feat(llc): hifi stereo playout (Android and iOS) #1173 corrected it to!sender.track.enabled, but it was never mapped. Nothing else changes.🧪 Testing
rtc_tracks_info_mapper_test.dartchecks a muted and an unmuted track. The muted case fails without the fix.stream_videosuite passes.🤖 Generated with Claude Code