webrtc/pc/test
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
..
android_test_initializer.cc (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
android_test_initializer.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
DEPS Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
fake_audio_capture_module_unittest.cc Migrate pc/ to webrtc::Mutex. 2020-07-07 18:25:09 +00:00
fake_audio_capture_module.cc Replace more instances of rtc::RefCountedObject with make_ref_counted. 2021-04-27 17:01:59 +00:00
fake_audio_capture_module.h Use SequenceChecker from public API 2021-02-10 15:04:55 +00:00
fake_data_channel_provider.h datachannel: Merge SendDataParams and DMT types with webrtc equivalent 2021-05-10 10:31:48 +00:00
fake_peer_connection_base.h Fix unsafe variable access in RTCStatsCollector 2021-04-19 16:22:23 +00:00
fake_peer_connection_for_stats.h VideoRtpReceiver & AudioRtpReceiver threading fixes. 2021-05-17 14:37:55 +00:00
fake_periodic_video_source.h Replace rtc::ThreadChecker with webrtc::SequenceChecker 2021-02-02 14:56:27 +00:00
fake_periodic_video_track_source.h [Adaptation] Add ability to inject resources on the PeerConnection. 2020-06-11 14:17:01 +00:00
fake_rtc_certificate_generator.h Reland: Use CRYPTO_BUFFER APIs instead of X509 when building with BoringSSL. 2020-12-11 09:58:40 +00:00
fake_video_track_renderer.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
fake_video_track_source.h Replace more instances of rtc::RefCountedObject with make_ref_counted. 2021-04-27 17:01:59 +00:00
frame_generator_capturer_video_track_source.h Migrate WebRTC on FrameGeneratorInterface and remove FrameGenerator class 2019-12-07 00:54:26 +00:00
integration_test_helpers.cc Reland "Reland "Split peer_connection_integrationtest.cc into pieces"" 2021-02-17 12:28:07 +00:00
integration_test_helpers.h sctp: Add DcsctpTransport based on dcSCTP 2021-05-06 09:38:49 +00:00
mock_channel_interface.h Move header negotiation state to transceivers. 2021-05-04 13:52:35 +00:00
mock_data_channel.h Split DataChannel into two separate classes for RTP and SCTP. 2020-07-10 00:03:21 +00:00
mock_delayable.h In pc/ replace mock macros with unified MOCK_METHOD macro 2020-05-18 17:06:25 +00:00
mock_peer_connection_observers.h datachannel: Check we transition the state properly on remote close 2021-04-29 14:14:42 +00:00
mock_rtp_receiver_internal.h When stopping a transceiver, end the receiver's track. 2020-09-24 21:37:32 +00:00
mock_rtp_sender_internal.h Reland "Implement transceiver.stop()" 2020-08-11 10:46:23 +00:00
peer_connection_test_wrapper.cc Deprecate PeerConnectionFactory::CreatePeerConnection 2021-05-10 08:47:48 +00:00
peer_connection_test_wrapper.h Use SequenceChecker from public API 2021-02-10 15:04:55 +00:00
rtc_stats_obtainer.h Replace more instances of rtc::RefCountedObject with make_ref_counted. 2021-04-27 17:01:59 +00:00
rtp_transport_test_util.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
srtp_test_util.h (4) Rename files to snake_case: update BUILD.gn, include paths, header guards, and DEPS entries 2019-01-11 17:11:39 +00:00
test_sdp_strings.h Prefix HAVE_SCTP macro with WEBRTC_. 2021-01-20 10:51:07 +00:00