webrtc/call
Sebastian Jansson 44dd9f29c7 Adds ChannelSend specific encoder task queue.
Before this change the encoder tasks runs on a shared worker queue.
That makes the destruction require synchronization to avoid races.
By keeping a separate encode queue to ChannelSend, we can safely
destruct the object without worrying for left over tasks, as they
will be stopped when the task queue is destroyed.

For TaskQueue implementations using one thread per TaskQueue this
will increase the thread count by the number of AudioSendStreams,
which typically is just one.

This is partly a reland of 9b9344742b

Original change's description:
> Removes lock from ChannelSend.
>
> The lock isn't really needed as encoder_queue_is_active_ can be checked
> on the task queue to provide synchronization.
>
> There is one behavioral change due to this: We will not cancel any currently
> pending encoding tasks when we stop sending, they will be allowed to finish.
>
> Bug: webrtc:10365
> Change-Id: I2b4897dde8d49bc7ee5d2d69694616aee8aaea38
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/125096
> Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
> Commit-Queue: Sebastian Jansson <srte@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26963}

Bug: webrtc:10365
Change-Id: Iafb84e25d90ec8639359be80fad65763d08e5719
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/125740
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27038}
2019-03-08 15:53:12 +00:00
..
test Removes unused keep-alive from RtpTransportControllerSend. 2019-03-01 12:15:54 +00:00
audio_receive_stream.cc Remove chromium clang style errors affecting sdk/android/media_jni 2018-04-09 13:55:49 +00:00
audio_receive_stream.h Expose relative packet arrival delay metric in stats API. 2019-03-06 16:35:16 +00:00
audio_send_stream.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
audio_send_stream.h Remove rtc_base/scoped_ref_ptr.h. 2019-01-25 20:29:58 +00:00
audio_state.cc Remove chromium clang style errors affecting sdk/android/media_jni 2018-04-09 13:55:49 +00:00
audio_state.h Remove rtc_base/scoped_ref_ptr.h. 2019-01-25 20:29:58 +00:00
bitrate_allocator_unittest.cc Injecting Clock into BitrateAllocator. 2019-03-04 16:26:03 +00:00
bitrate_allocator.cc Injecting Clock into BitrateAllocator. 2019-03-04 16:26:03 +00:00
bitrate_allocator.h Injecting Clock into BitrateAllocator. 2019-03-04 16:26:03 +00:00
bitrate_estimator_tests.cc Include absl/memory/memory.h if absl::make_unique is used 2019-01-08 20:08:32 +00:00
BUILD.gn Move ownership of RTPSenderVideo one more level up, to RtpVideoSender 2019-03-04 16:57:49 +00:00
call_config.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
call_config.h Remove comments about using std::shared_ptr. 2019-01-15 13:15:58 +00:00
call_factory.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
call_factory.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
call_perf_tests.cc Reland "Delete test/constants.h" 2019-02-19 08:51:20 +00:00
call_unittest.cc Remove Transport implementation from ChannelSend 2018-12-18 09:34:52 +00:00
call.cc Adds ChannelSend specific encoder task queue. 2019-03-08 15:53:12 +00:00
call.h Allow Clock injection in Call. 2019-03-04 18:40:12 +00:00
degraded_call.cc Calculate next process time in simulated network. 2019-02-08 19:33:17 +00:00
degraded_call.h Calculate next process time in simulated network. 2019-02-08 19:33:17 +00:00
DEPS Make fec controller plug-able. 2018-01-22 11:48:16 +00:00
fake_network_pipe_unittest.cc Adds FakeNetworkPipeTest to rtc_unittests. 2019-02-22 15:05:39 +00:00
fake_network_pipe.cc Calculate next process time in simulated network. 2019-02-08 19:33:17 +00:00
fake_network_pipe.h Calculate next process time in simulated network. 2019-02-08 19:33:17 +00:00
flexfec_receive_stream_impl.cc Modernize RtpRtcp factory function: use unique_ptr as return type 2019-03-06 14:38:39 +00:00
flexfec_receive_stream_impl.h Injecting Clock in video receive. 2019-03-04 21:53:57 +00:00
flexfec_receive_stream_unittest.cc Injecting Clock in video receive. 2019-03-04 21:53:57 +00:00
flexfec_receive_stream.cc [Cleanup] Add missing #include. Remove useless ones. 2018-10-23 11:32:56 +00:00
flexfec_receive_stream.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
OWNERS Makes srte owner in call/ and test/ 2018-07-13 08:39:41 +00:00
packet_receiver.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
rampup_tests.cc Reland "Always offer transport sequence number header extension for audio"" 2019-02-15 10:57:38 +00:00
rampup_tests.h Refactor bitrate configuration in CallTest 2018-11-13 16:03:00 +00:00
receive_time_calculator_unittest.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
receive_time_calculator.cc [Cleanup] Add missing #include. Remove useless ones. IWYU part 2. 2018-11-28 18:25:07 +00:00
receive_time_calculator.h [Cleanup] Add missing #include. Remove useless ones. IWYU part 2. 2018-11-28 18:25:07 +00:00
rtcp_demuxer_unittest.cc [Cleanup] Add missing #include. Remove useless ones. IWYU part 2. 2018-11-28 18:25:07 +00:00
rtcp_demuxer.cc [Cleanup] Add missing #include. Remove useless ones. IWYU part 2. 2018-11-28 18:25:07 +00:00
rtcp_demuxer.h Delete unneeded includes of basictypes.h. 2018-05-21 19:35:08 +00:00
rtcp_packet_sink_interface.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
rtp_bitrate_configurator_unittest.cc Replace rtc::Optional with absl::optional in audio, call and video 2018-06-15 12:09:49 +00:00
rtp_bitrate_configurator.cc Replace rtc::Optional with absl::optional in audio, call and video 2018-06-15 12:09:49 +00:00
rtp_bitrate_configurator.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
rtp_config.cc Adding rtcp report interval into RTCConfiguration. 2018-11-12 20:00:00 +00:00
rtp_config.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
rtp_demuxer_unittest.cc Delete unneeded includes of common_types.h and gn deps on webrtc_common. 2018-11-20 16:28:39 +00:00
rtp_demuxer.cc Allow all "token" chars from RFC 4566 when checking for legal mid names. 2018-08-01 18:20:42 +00:00
rtp_demuxer.h Don't check MIDs when demuxing RTP packets in Call 2018-03-29 20:36:08 +00:00
rtp_packet_sink_interface.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
rtp_payload_params_unittest.cc Prepare for splitting FrameType into AudioFrameType and VideoFrameType 2019-03-07 10:12:57 +00:00
rtp_payload_params.cc H.264 temporal layers w/frame marking (PART 2/3) 2019-02-09 16:47:09 +00:00
rtp_payload_params.h Pass explicit frame dependency information to RtpPayloadParams 2019-01-29 08:59:48 +00:00
rtp_rtcp_demuxer_helper_unittest.cc [Cleanup] Add missing #include. Remove useless ones. IWYU part 2. 2018-11-28 18:25:07 +00:00
rtp_rtcp_demuxer_helper.cc Replace rtc::Optional with absl::optional in audio, call and video 2018-06-15 12:09:49 +00:00
rtp_rtcp_demuxer_helper.h [Cleanup] Add missing #include. Remove useless ones. IWYU part 2. 2018-11-28 18:25:07 +00:00
rtp_stream_receiver_controller_interface.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
rtp_stream_receiver_controller.cc Use absl::make_unique and absl::WrapUnique directly 2018-07-05 10:59:49 +00:00
rtp_stream_receiver_controller.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
rtp_transport_controller_send_interface.h Removes unused keep-alive from RtpTransportControllerSend. 2019-03-01 12:15:54 +00:00
rtp_transport_controller_send.cc Migrate RepeatingTask to take raw pointer to TaskQueueBase instead of TaskQueue 2019-03-06 18:44:35 +00:00
rtp_transport_controller_send.h Inject TaskQueueFactory in RtpTransportControllerSend. 2019-03-01 17:44:01 +00:00
rtp_video_sender_interface.h Move FecController to RtpVideoSender. 2018-10-05 14:39:01 +00:00
rtp_video_sender_unittest.cc Injecting Clock into video senders. 2019-03-04 21:55:02 +00:00
rtp_video_sender.cc Modernize RtpRtcp factory function: use unique_ptr as return type 2019-03-06 14:38:39 +00:00
rtp_video_sender.h Injecting Clock into video senders. 2019-03-04 21:55:02 +00:00
rtx_receive_stream_unittest.cc Reformat the WebRTC code base 2018-06-19 14:00:39 +00:00
rtx_receive_stream.cc [Cleanup] Add missing #include. Remove useless ones. IWYU part 2. 2018-11-28 18:25:07 +00:00
rtx_receive_stream.h Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
simulated_network_unittest.cc Adds CoDel implementation to network simulation. 2019-02-25 09:54:03 +00:00
simulated_network.cc Adds CoDel implementation to network simulation. 2019-02-25 09:54:03 +00:00
simulated_network.h Adds CoDel implementation to network simulation. 2019-02-25 09:54:03 +00:00
simulated_packet_receiver.h Calculate next process time in simulated network. 2019-02-08 19:33:17 +00:00
ssrc_binding_observer.h Delete unneeded includes of basictypes.h. 2018-05-21 19:35:08 +00:00
syncable.cc Fixing WebRTC after moving from src/webrtc to src/ 2017-09-15 05:02:56 +00:00
syncable.h Replace rtc::Optional with absl::optional in audio, call and video 2018-06-15 12:09:49 +00:00
video_receive_stream.cc Enable use of MediaTransportInterface for video streams. 2019-01-11 14:06:15 +00:00
video_receive_stream.h Propagate base minimum delay from video jitter buffer to webrtc/api. 2019-02-27 15:08:34 +00:00
video_send_stream.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
video_send_stream.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