DescriptionAdded RemoteVideoSource, a VideoSourceInterface implementation now used (instead of VideoSource) for remote video sources.
Because this is a remote video source, it gets its frame through the cricket::VideoRenderer* FrameInput(), and only needs to pass the frame on to its sinks. Unlike VideoSource, this implementation does not rely on a (Remote or otherwise)VideoCapturer for frame delivery to sinks.
However, a VideoCapturer is still necessary for further sending frames through peer connection. In order to support this, a RemoteVideoCapturer is still used, but is created lazily the first time RemoteVideoSource::GetVideoCapturer() is called. RemoteVideoSource will pass along FrameInput's frames to the capturer which in turn will signal that frames have been delivered.
In Chrome, where the video capturer of a remote video source is never used, this should avoid creating and registering the RemoteVideoCapturer to the CaptureManager altogether. As such, there is no risk of reference counted objects keeping remote capturers alive.
The referenced chromium bug is a crash that occurs at ~CaptureManager due to all capturers not having been unregistered, specifically RemoteVideoCapturers. This happens because blink still holds references to reference counted objects despite the peer connection closing and destructing. But in chromium, there should be no need for a RemoteVideoCapturer to exist in the first place. Hence this new video source.
(See my post in chromium:320200 for details.)
BUG=chromium:320200
Patch Set 1 : #
Total comments: 44
Patch Set 2 : #
Total comments: 1
Trybot results:
mac_baremetal
android_arm64_rel
android
android_rel
win_baremetal
mac_baremetal
linux_baremetal
linux_tsan2
win_drmemory_light
linux_msan
win
mac
mac_x64
win_rel
mac_rel
mac_x64_rel
mac_asan
linux_asan
win_x64_rel
linux
ios32_sim
ios_arm64_rel
linux_rel
android_gn_rel
ios64_sim
android_clang
linux_gn
mac_x64_gn_rel
android_gn
ios_rel
ios
win_x64_gn_rel
ios_arm64
win_x64_gn
linux_gn_rel
mac_x64_gn
Sign in to try more bots
Project "webrtc" does not have a commit queue.
Messages
Total messages: 6 (1 generated)
|