Fix 288ms UI hang in video publishing flow#838
Open
sampepose wants to merge 1 commit intoGetStream:developfrom
Open
Fix 288ms UI hang in video publishing flow#838sampepose wants to merge 1 commit intoGetStream:developfrom
sampepose wants to merge 1 commit intoGetStream:developfrom
Conversation
a7848fc to
4d9dc5f
Compare
4d9dc5f to
b980524
Compare
Contributor
|
Hey @sampepose, thank you for this PR. We are currently in the process of resolving many performance issues (you can take see a sneak peek in the open PRs). We are now in a state where we have resolved all the hungs and for that reason I'm not going to accept this PR. I'm going to keep open though as I reminder to check again once the changes have been merged. Thanks, |
Author
|
Hey! I noticed #829 still has this bug. It's blocking MainActor in LocalAudioMediaAdapter.swift |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🔗 Issue Links
N/A - Performance improvement identified through profiling
🎯 Goal
Fix a 288ms UI hang that occurs when publishing video, caused by synchronous camera initialization blocking the main thread.
📝 Summary
Task.detachedto move blockingRTCCameraVideoCapturer.startCapture()off the critical path🛠 Implementation
Instruments profiling revealed that
RTCCameraVideoCapturer.startCapture()(Google's WebRTC code) was blocking the main thread for 288ms with a__psynch_cvwaitduring camera initialization.Root cause: The video publishing flow was waiting synchronously for the camera to start before continuing with transceiver setup.
Solution: Wrap the
startVideoCapturingSession()call in aTask.detachedto allow camera initialization to happen in parallel while the rest of the publish flow continues immediately.This approach ensures the UI remains responsive while the camera hardware initializes in the background.
🎨 Showcase
🧪 Manual Testing Notes
☑️ Contributor Checklist