| commit | 3d7137f54f9d915b317aeb5d3f61ba24db099afb | [log] [tgz] | 
|---|---|---|
| author | Tommi <tommi@webrtc.org> | Fri Oct 17 11:38:22 2025 | 
| committer | WebRTC LUCI CQ <webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com> | Fri Oct 17 13:09:38 2025 | 
| tree | 9fd93551aecb8b83bc78feedc495d0bc9a52075d | |
| parent | 02acc3ded1ae87086fc2964b84d1ab9a8abe7433 [diff] | 
Introduce MediaEngineReference for managing access on the worker thread
This encapsulates direct, non-const, access to the media engine and the
reference counting via a new class, MediaEngineReference.
This change introduces `ConnectionContext::MediaEngineReference`, a new
RAII wrapper class to manage the media engine's lifetime and access.
The `MediaEngineReference` class:
* Automatically handles reference counting in its constructor
    and destructor.
* Provides a `media_engine()` accessor that `DCHECK`s the call
    is on the worker thread, centralizing thread-safety enforcement.
`PeerConnection`, `PeerConnectionFactory` (for AEC dumps), and
`RtpTransceiver` are all updated to use `MediaEngineReference` instead
of calling the manual ref-counting methods.
Additionally, a new `ConnectionContext::is_configured_for_media()`
method is introduced to replace checks for `context_->media_engine()`
when determining if media is enabled.
This is a follow up to recent media engine changes that more tightly
control the lifetime of the media engine as well as divide access to
const and non-const methods. A follow up to this CL could be to split up
the media engine interfaces to make the actual work that runs on the
worker thread be owned by a separate interface from the const methods.
Then there'd be no need for the Init/Terminate methods and the design
would be a bit clearer.
Bug: webrtc:42224720
Change-Id: Idd7bd9a143ee00d1939f0bac93c877253ac57e09
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/410922
Commit-Queue: Tomas Gunnarsson <tommi@webrtc.org>
Reviewed-by: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45971}
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.