Propagate Sframe options from media channels to the Video RTP send path WebRtcVideoSendChannel::EnableSframe() and WebRtcVideoReceiveChannel::EnableSframe() previously only flipped a local flag with a TODO; nothing below the media channel could observe it. This CL plumbs the Sframe options from the media channels down to the video RTP senders. Changes: - VideoSendStream::Config gains an SframeSendOptions field and VideoReceiveStreamInterface::Config gains an SframeReceiveOptions field. Both are populated from the media channel when a stream is created, and the receive config copies the field in Config::Copy(). - RtpTransportControllerSendInterface::CreateRtpVideoSender() takes the send options and forwards them through RtpVideoSender into RTPSenderVideo::Config::sframe_required. - RTPSenderVideo::SendEncodedImage() fails closed: when Sframe is required the frame is dropped instead of being sent in the clear. The encryptor is not wired up yet, so today this drops every frame on an Sframe-enabled stream. - WebRtcVideoSendChannel::EnableSframe() pushes the new options to already created send streams via WebRtcVideoSendStream::UpdateSframeOptions(), which recreates the underlying VideoSendStream. Receive streams still only pick the options up at construction; pushing to live receive streams needs a setter on VideoReceiveStreamInterface and is left as a TODO. The audio path is intentionally untouched and will be handled separately. Tests: new unit tests cover that Sframe is off by default, that enabling it before AddSendStream()/AddRecvStream() reaches the stream config, and that RTPSenderVideo drops encoded images when Sframe is required but no encryptor is present. Bug: webrtc:479862368 Change-Id: I40d8298f7a4e4054ef3306dc05d13867a6bf3772 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/506321 Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org> Commit-Queue: Kacper Wasniowski <kwasniow@cisco.com> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#48782}
WebRTC is a free, open software project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.
The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others.
See here for instructions on how to get started developing with the native code.
Authoritative list of directories that contain the native API header files.