Skip to content

Conversation

@Stream-SDK-Bot
Copy link
Collaborator

✅ Added

  • A Livestream focused AudioSessionPolicy that has support for stereo playout. #975

@Stream-SDK-Bot Stream-SDK-Bot requested a review from a team as a code owner November 28, 2025 19:11
@github-actions
Copy link

1 Warning
⚠️ Big PR

Generated by 🚫 Danger

@github-actions
Copy link

Public Interface

+ public struct LivestreamAudioSessionPolicy: AudioSessionPolicy  
+ 
+   public init()
+   
+ 
+   public func configuration(for callSettings: CallSettings,ownCapabilities: Set<OwnCapability>)-> AudioSessionConfiguration

+ public enum WebRTC  
+ 
+   case audioEngineDevice = "audio_engine_device.mm"
+   
+ 
+   public nonisolated static var mode: LogMode
+   
+ 
+   public enum LogMode  
+   
+     case none, validFilesOnly, all



- public struct AudioSessionConfiguration: ReflectiveStringConvertible, Equatable, Sendable  
+ public struct AudioSessionConfiguration: CustomStringConvertible, Equatable, Sendable  
-   public static func ==(lhs: Self,rhs: Self)-> Bool
+   public var description: String
+   
+ 
+   public static func ==(lhs: Self,rhs: Self)-> Bool

 public struct StatelessMicrophoneIconView: View  
-   @MainActor public init(call: Call?,callSettings: CallSettings = .init(),size: CGFloat = 44,controlStyle: ToggleControlStyle = .init(
+   @MainActor public init(call: Call?,callSettings: CallSettings = .default,size: CGFloat = 44,controlStyle: ToggleControlStyle = .init(

- public class ClientError: Error, ReflectiveStringConvertible, @unchecked Sendable  
+ public class ClientError: Error, CustomStringConvertible, @unchecked Sendable  
-   
+   public var description: String
- 
+   
-   public init(with error: Error? = nil,_ file: StaticString = #fileID,_ line: UInt = #line)
+ 
-   public init(_ message: String,_ file: StaticString = #fileID,_ line: UInt = #line)
+   public init(with error: Error? = nil,_ file: StaticString = #fileID,_ line: UInt = #line)
-   
+   public init(_ message: String,_ file: StaticString = #fileID,_ line: UInt = #line)
- 
+   
-   public struct Location: Equatable, Sendable  
+ 
-   
+   public struct Location: Equatable, Sendable, CustomStringConvertible  
-     public let file: String
+   
-     public let line: Int
+     public let file: String
+     public let line: Int
+     public var description: String

 public struct StatelessVideoIconView: View  
-   public init(call: Call?,callSettings: CallSettings = .init(),size: CGFloat = 44,controlStyle: ToggleControlStyle = .init(
+   public init(call: Call?,callSettings: CallSettings = .default,size: CGFloat = 44,controlStyle: ToggleControlStyle = .init(

 @MainActor public class CallState: ObservableObject  
-   @Published public internal var callSettings
+   @Published public internal var callSettings: CallSettings

 public final class MicrophoneManager: ObservableObject, CallSettingsManager, @unchecked Sendable  
-   public func toggle()async throws 
+   public func toggle(file: StaticString = #file,function: StaticString = #function,line: UInt = #line)async throws 
-   public func enable()async throws 
+   public func enable(file: StaticString = #file,function: StaticString = #function,line: UInt = #line)async throws 
-   public func disable()async throws
+   public func disable(file: StaticString = #file,function: StaticString = #function,line: UInt = #line)async throws

 public final class CallSettings: ObservableObject, Sendable, Equatable, CustomStringConvertible  
-   public let audioOn: Bool
+   public static let `default`
-   public let videoOn: Bool
+   public let audioOn: Bool
-   public let speakerOn: Bool
+   public let videoOn: Bool
-   public let audioOutputOn: Bool
+   public let speakerOn: Bool
-   public let cameraPosition: CameraPosition
+   public let audioOutputOn: Bool
-   public var shouldPublish: Bool
+   public let cameraPosition: CameraPosition
-   public var description: String
+   public var shouldPublish: Bool
-   
+   public var description: String
- 
+   
-   public convenience init(_ response: CallSettingsResponse,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)
+ 
-   public init(audioOn: Bool = true,videoOn: Bool = true,speakerOn: Bool = true,audioOutputOn: Bool = true,cameraPosition: CameraPosition = .front,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)
+   public convenience init(_ response: CallSettingsResponse,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)
-   
+   public init(audioOn: Bool = true,videoOn: Bool = true,speakerOn: Bool = true,audioOutputOn: Bool = true,cameraPosition: CameraPosition = .front,file: StaticString = #file,function: StaticString = #function,line: UInt = #line)
- 
+   
-   public static func ==(lhs: CallSettings,rhs: CallSettings)-> Bool
+ 
+   public static func ==(lhs: CallSettings,rhs: CallSettings)-> Bool

@github-actions
Copy link

Build for regression testing №297 has been uploaded to TestFlight 🎁

@Stream-SDK-Bot
Copy link
Collaborator Author

SDK Size

title previous release current release diff status
StreamVideo 8.79 MB 8.98 MB +196 KB 🟢
StreamVideoSwiftUI 2.4 MB 2.4 MB 0 KB 🟢
StreamVideoUIKit 2.52 MB 2.52 MB 0 KB 🟢
StreamWebRTC 11.01 MB 11.02 MB +17 KB 🟢

@sonarqubecloud
Copy link

@Stream-SDK-Bot
Copy link
Collaborator Author

StreamVideo XCSize

Object Diff (bytes)
Errors.o +48183
SignalServerEvent.o -46530
RTCAudioStore+State.o +36763
AudioDeviceModule.o +26852
BatteryStore.o +16827
Show 104 more objects
Object Diff (bytes)
RTCAudioStore+Action.o +15269
ApplicationLifecycleVideoMuteAdapter.o -13118
RTCAudioStore.o -12881
StreamCallAudioRecorder.o +11607
CallParticipant.o +11138
AVAudioSessionObserver.o +9503
DisposableBag.o +9209
Logger+WebRTC.o +8726
RTCAudioStore+AVAudioSessionReducer.o +8501
RTCAudioStore+StereoPlayoutEffect.o +7355
RTCAudioStore+AudioDeviceModuleMiddleware.o +7348
StreamCallAudioRecorder+AVAudioRecorderMiddleware.o +6845
WebRTCStatsCollecting.o -6658
RTCAudioStore+AVAudioSessionEffect.o +5924
CallAudioSession.o +5399
RTCAudioSessionPublisher.o +5319
RTCAudioStore+InterruptionEffect.o -5207
RTCAudioSessionReducer.o -4269
StereoEnableVisitor.o +4254
CallKitService.o +3927
RTCAudioStore+InterruptionsEffect.o +3808
RTCAudioStore+DefaultReducer.o +3450
RTCAudioStore+Coordinator.o +3447
RTCAudioStore+RestartAudioSession.o -3257
WebRTCCoordinator+Joining.o +3212
Call.o +2914
AudioEngineLevelNodeAdapter.o +2805
WebRTCLogger.o -2598
RTCAudioStore+AVAudioSessionConfigurationValidator.o +2478
Logger.o -2339
StoreEffect.o +1970
RTCAudioStore+WebRTCAudioSessionReducer.o +1929
PeerConnectionFactory.o +1764
RTCAudioStore+CallKitReducer.o +1702
RTCAudioDeviceModuleControlling.o +1617
Models.o +1512
RTCPeerConnectionCoordinator.o +1401
CallKitPushNotificationAdapter.o +1316
UpdateCallResponse.o +1295
RTCAudioStore+Namespace.o +1233
NoiseCancellationSettingsRequest.o +1168
CallKitAudioSessionReducer.o -1159
CallTimeline.o +1144
Encodable+Retroactive.o +1108
RTCAudioStoreAction+AudioSession.o -1078
CallController.o +989
MicrophoneManager.o +947
RTCAudioStoreAction.o -782
WebRTCStateAdapter.o +775
RTCAudioStoreAction+CallKit.o -660
Protobuf+SelectiveEncodable.o -596
StoreCoordinator.o +582
AudioSessionConfiguration.o +509
RTCAudioStore+RouteChangeEffect.o -498
Logger+ThrowingExecution.o +496
AVAudioSessionRouteDescription+Convenience.o -460
StreamDeviceOrientationAdapter.o -436
StreamCallAudioRecorder+CategoryMiddleware.o -416
PermissionsStore.o +392
MediaAdapter.o -392
LivestreamAudioSessionPolicy.o +380
StreamCallAudioRecorder+InterruptionMiddleware.o -372
CallSettings.o +371
DefaultRTCMediaConstraints.o +369
Call+Stage.o +366
ICEConnectionStateAdapter.o -336
CallStatsReportSummaryResponse.o -332
RingSettingsRequest.o -320
ConnectionState.o -312
LayoutSettings.o +296
Store.o +288
RTCAudioStoreAction+Generic.o -263
CallModerationBlurEvent.o -242
StoreLogger.o +223
BatteryStore+ObservationMiddleware.o -220
StopHLSBroadcastingResponse.o -216
WebRTCPermissionsAdapter.o -185
BatteryStore+State.o -182
StreamCallAudioRecorder+ShouldRecordMiddleware.o -176
ReflectiveStringConvertible.o -170
UserEventPayload.o +168
StoreTask.o +166
LocalAudioMediaAdapter.o +159
CallParticipant+Convenience.o +144
RTCAudioStoreMiddleware.o -138
RTCAudioStoreReducer.o -134
Reducer.o +131
CameraInterruptionsHandler.o -116
AudioProcessingStore.o +106
WebRTCCoordinator.o +92
Foundation.tbd +88
AVFAudio.tbd +88
CallReactionEvent.o +76
WebRTCCoordinator+CleanUp.o +74
IncomingVideoQualitySettings.o -72
PermissionStore+DefaultReducer.o +68
BroadcastBufferReader.o -52
StreamCallAudioRecorder+Namespace.o +49
RawJSON.o -48
Middleware.o -46
StreamRTCPeerConnection.o +44
PublisherAggregateStats.o +44
CallKitMissingPermissionPolicy+EndCall.o -44
HTTPClient.o -42

@Stream-SDK-Bot
Copy link
Collaborator Author

StreamVideoSwiftUI XCSize

Object Diff (bytes)
CallControlsView.o -520
ModerationWarningViewModifier.o -332
CallContainer.o +272
CallViewModel.o -175
ToastView.o +60

@ipavlidakis
Copy link
Contributor

/merge release

@testableapple
Copy link
Contributor

Publication of the release has been launched 👍

@github-actions github-actions bot merged commit ad7ed77 into main Nov 28, 2025
13 checks passed
@github-actions github-actions bot deleted the release/1.37.0 branch November 28, 2025 21:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants