No description
Find a file
Tommi 4ccdf932e1 VideoRtpReceiver & AudioRtpReceiver threading fixes.
For implementations where the signaling and worker threads are not
the same thread, this significantly cuts down on Thread::Invoke()s that
would block the signaling thread while waiting for the worker thread.

For Audio and Video Rtp receivers, the following methods now do not
block the signaling thread:
* GetParameters
* SetJitterBufferMinimumDelay
* GetSources
* SetFrameDecryptor / GetFrameDecryptor
* SetDepacketizerToDecoderFrameTransformer

Importantly this change also makes the track() accessor accessible
directly from the application thread (bypassing the proxy) since
for receiver objects, the track object is const.

Other changes:

* Remove RefCountedObject inheritance, use make_ref_counted instead.
* Every member variable in the rtp receiver classes is now RTC_GUARDED
* Stop() now fully clears up worker thread state, and Stop() is
  consistently called before destruction. This means that there's one
  thread hop instead of at least 4 before (sometimes more), per receiver.
* OnChanged triggered volume for audio tracks is done asynchronously.
* Deleted most of the JitterBufferDelay implementation. Turns out that
  it was largely unnecessary overhead and complexity.

It seems that these two classes are copy/pasted to a large extent
so further refactoring would be good in the future, as to not have to
fix each issue twice.

Bug: chromium:1184611
Change-Id: I1ba5c3abbd1b0571f7d12850d64004fd2d83e5e2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/218605
Commit-Queue: Tommi <tommi@webrtc.org>
Reviewed-by: Markus Handell <handellm@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34022}
2021-05-17 14:37:55 +00:00
api VideoRtpReceiver & AudioRtpReceiver threading fixes. 2021-05-17 14:37:55 +00:00
audio Use Timestamp to represent packet receive timestamps 2021-05-04 13:16:54 +00:00
build_overrides Roll chromium_revision 34f3c82122..2dffe06711 (867171:871492) 2021-04-12 18:25:58 +00:00
call Update WebRTC code version (2021-05-17T04:03:41). 2021-05-17 05:23:38 +00:00
common_audio Avoid undefined behavior in a division operation. 2021-04-23 07:49:24 +00:00
common_video Reland "Remove Invoke from VideoChannel::FillBitrateInfo." 2021-05-03 15:16:34 +00:00
data Remove old data files. 2018-10-05 14:40:21 +00:00
docs Create a VideoFrameTrackingId RTP header extension. 2021-03-25 17:25:18 +00:00
examples Deprecate PeerConnectionFactory::CreatePeerConnection 2021-05-10 08:47:48 +00:00
g3doc Move style guide and abseil-in-webrtc into g3doc subfolder 2021-05-13 14:43:10 +00:00
logging Change rtc event log packet messages implementation to save full rtp packet 2021-05-11 08:06:54 +00:00
media Revert "Define cricket::MediaType in terms of webrtc::MediaType" 2021-05-12 17:06:58 +00:00
modules Cleanup ReceiveStatistics collecting ReportBlock 2021-05-17 14:15:45 +00:00
net/dcsctp dcsctp: Add socket fuzzer helper 2021-05-12 15:06:17 +00:00
p2p Define cricket::DtlsTransportState in terms of webrtc::DtlsTransportState. 2021-05-12 07:06:38 +00:00
pc VideoRtpReceiver & AudioRtpReceiver threading fixes. 2021-05-17 14:37:55 +00:00
resources Disable high-pass filtering of the AEC reference 2021-02-23 07:06:11 +00:00
rtc_base Add 64-bit version of BitBuffer::ReadBits 2021-05-12 14:24:46 +00:00
rtc_tools Remove REMB throttling funcionality from PacketRouter 2021-05-12 11:24:58 +00:00
sdk Revert "Define cricket::MediaType in terms of webrtc::MediaType" 2021-05-12 17:06:58 +00:00
stats Simplify reference counting implementation of PendingTaskSafetyFlag. 2021-04-21 07:04:01 +00:00
system_wrappers Consolidate the different NTP clocks into one. 2021-04-08 13:54:04 +00:00
test dcsctp: Add socket fuzzer 2021-05-14 06:41:10 +00:00
tools_webrtc crc32c: Point the licensing script to the LICENSE file 2021-05-03 16:46:30 +00:00
video Add quality upscaling tests. 2021-05-17 11:51:15 +00:00
.clang-format Add IncludeBlocks to clang-format. 2021-02-03 16:29:07 +00:00
.git-blame-ignore-revs Let git-hyper-blame ignore new format cleanup. 2019-07-11 16:18:51 +00:00
.gitignore Add .cache to .gitignore. 2021-01-20 15:01:07 +00:00
.gn Enable GN check on //net. 2021-05-03 14:23:09 +00:00
.vpython Update six library version 2021-04-26 16:39:07 +00:00
AUTHORS Revert "Ensure method which updates UI is called in main thread" 2021-04-30 09:26:03 +00:00
BUILD.gn Disable range-loop-analysis when use_xcode_clang=true. 2021-05-07 15:24:28 +00:00
CODE_OF_CONDUCT.md Add code of conduct to WebRTC repo 2017-05-16 12:09:13 +00:00
codereview.settings Don't add webrtc-reviews@ to CC, it can be added globally on Gerrit 2018-10-25 08:19:53 +00:00
DEPS Roll chromium_revision 60ef3818ac..5469e0bb11 (883287:883387) 2021-05-17 08:32:39 +00:00
DIR_METADATA Move metadata in OWNERS files to DIR_METADATA files. 2021-02-08 19:09:33 +00:00
ENG_REVIEW_OWNERS Remove kwiberg@webrtc.org from OWNERS files 2020-12-04 15:11:26 +00:00
g3doc.lua Improve webrtc documentation infra. Preview at: 2021-03-30 10:29:30 +00:00
LICENSE Moving src/webrtc into src/. 2017-09-15 04:25:06 +00:00
license_template.txt
native-api.md Make the remote_bitrate_estimator build target private 2020-11-26 12:21:22 +00:00
OWNERS Move style guide and abseil-in-webrtc into g3doc subfolder 2021-05-13 14:43:10 +00:00
PATENTS Moving src/webrtc into src/. 2017-09-15 04:25:06 +00:00
PRESUBMIT.py sctp: Rename SctpTransport to UsrSctpTransport 2021-04-12 10:40:34 +00:00
presubmit_test.py Reformat python files checked by pylint (part 1/2). 2020-10-30 10:13:11 +00:00
presubmit_test_mocks.py Reformat python files checked by pylint (part 1/2). 2020-10-30 10:13:11 +00:00
pylintrc Undo enforcing of PEP-8 pylint changes for method and function names. 2020-11-10 18:26:25 +00:00
README.chromium Add CPEPrefix. 2020-07-13 11:42:07 +00:00
README.md Move style guide and abseil-in-webrtc into g3doc subfolder 2021-05-13 14:43:10 +00:00
WATCHLISTS Add hta@ to rtc_base/ and api/ WATCHLISTS. 2021-01-06 09:43:34 +00:00
webrtc.gni Turn on the RTC_ENABLE_WIN_WGC build flag. 2021-05-10 20:16:52 +00:00
webrtc_lib_link_test.cc Deprecate PeerConnectionFactory::CreatePeerConnection 2021-05-10 08:47:48 +00:00
whitespace.txt Reland "Triggering CI." 2021-03-22 11:57:23 +00:00

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.

Development

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.

More info