-
Notifications
You must be signed in to change notification settings - Fork 30
[Enhancement]Stereo Playout implementation #989
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Enhancement]Stereo Playout implementation #989
Conversation
# Conflicts: # Sources/StreamVideo/Utils/Store/StoreTask.swift
| let answer = try await createAnswer() | ||
| try await setLocalDescription(answer) | ||
| var answer = try await createAnswer() | ||
| if mungeSubscriberStereo { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We need to test with RTMP tracks, to make sure we don't have the same issue as before.
| .sink { [weak self] in self?.isStereoPlayoutEnabledSubject.send($0) } | ||
| .store(in: disposableBag) | ||
|
|
||
| source |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: the spacing here is inconsistent - initially there's a new row and then not
| .sink { [weak self] in self?.isVoiceProcessingEnabledSubject.send($0) } | ||
| .store(in: disposableBag) | ||
| source | ||
| .isVoiceProcessingAGCEnabledPublisher() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what does AGC mean?
| // Adds ".allowBluetoothHFP" if present, permitting audio playback through | ||
| // Bluetooth devices. | ||
| if contains(.allowBluetoothHFP) { | ||
| options.append(".allowBluetoothHFP") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why are these passed as strings? Easy to make a typo.
| self.isExternal = Self.externalPorts.contains(source.portType) | ||
| self.isSpeaker = source.portType == .builtInSpeaker | ||
| self.isReceiver = source.portType == .builtInReceiver | ||
| self.channels = source.channels?.endIndex ?? 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
shouldn't it be 1 by default?
| private let source: RTCAudioSession | ||
|
|
||
| init(_ source: AudioSessionProtocol) { | ||
| init(_ source: RTCAudioSession) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we introduced the protocol for testing. Would this make things more difficult to test?
7a64a7a to
99d52bd
Compare
Public Interface+ public final class RTCAudioStore: @unchecked Sendable
+
+ public var state: Namespace.State
+
+
+ public func publisher(_ keyPath: KeyPath<Namespace.State, V>)-> AnyPublisher<V, Never>
+ extension RTCAudioStore: InjectionKey
+
+ public nonisolated static var currentValue: RTCAudioStore
+ public enum Namespace: StoreNamespace
public class Call: @unchecked Sendable, WSEventsSubscriber
- public func enableClientCapabilities(_ capabilities: Set<ClientCapability>)async
+ public func updateStereoPlayoutEnforcementOnExternalDevices(_ isEnforced: Bool)async
- public func disableClientCapabilities(_ capabilities: Set<ClientCapability>)async
+ public func enableClientCapabilities(_ capabilities: Set<ClientCapability>)async
- public func kickUser(userId: String,block: Bool? = nil)async throws -> KickUserResponse
+ public func disableClientCapabilities(_ capabilities: Set<ClientCapability>)async
+ public func kickUser(userId: String,block: Bool? = nil)async throws -> KickUserResponse |
SDK Size
|
StreamVideo XCSize
Show 97 more objects
|
StreamVideoSwiftUI XCSize
|
ad2ecd8 to
ebfedd9
Compare
🔗 Issue Links
Provide all JIRA tickets and/or GitHub issues related to this PR, if applicable.
🎯 Goal
Describe why we are making this change.
📝 Summary
Provide bullet points with the most important changes in the codebase.
🛠 Implementation
Provide a detailed description of the implementation and explain your decisions if you find them relevant.
🎨 Showcase
Add relevant screenshots and/or videos/gifs to easily see what this PR changes, if applicable.
imgimg🧪 Manual Testing Notes
Explain how this change can be tested manually, if applicable.
☑️ Contributor Checklist
🎁 Meme
Provide a funny gif or image that relates to your work on this pull request. (Optional)