In audio ChannelSend move task queue as last class member

To mitigate race between ~ChannelSend and task created in ProcessAndEncodeAudio.
as described in the comment next to the task queue member.

Bug: b/228933184
Change-Id: Ia0efd050c76a4539dc2525ef8efc065fab96861c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/258983
Auto-Submit: Danil Chapovalov <danilchap@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Jakob Ivarsson‎ <jakobi@webrtc.org>
Commit-Queue: Jakob Ivarsson‎ <jakobi@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36553}
This commit is contained in:
Danil Chapovalov 2022-04-14 16:51:35 +02:00 committed by WebRTC LUCI CQ
parent 8f9b44ba38
commit 8a1a0af36f

View File

@ -237,15 +237,15 @@ class ChannelSend : public ChannelSendInterface,
rtc::scoped_refptr<ChannelSendFrameTransformerDelegate> rtc::scoped_refptr<ChannelSendFrameTransformerDelegate>
frame_transformer_delegate_ RTC_GUARDED_BY(encoder_queue_); frame_transformer_delegate_ RTC_GUARDED_BY(encoder_queue_);
// Defined last to ensure that there are no running tasks when the other
// members are destroyed.
rtc::TaskQueue encoder_queue_;
const bool fixing_timestamp_stall_; const bool fixing_timestamp_stall_;
mutable Mutex rtcp_counter_mutex_; mutable Mutex rtcp_counter_mutex_;
RtcpPacketTypeCounter rtcp_packet_type_counter_ RtcpPacketTypeCounter rtcp_packet_type_counter_
RTC_GUARDED_BY(rtcp_counter_mutex_); RTC_GUARDED_BY(rtcp_counter_mutex_);
// Defined last to ensure that there are no running tasks when the other
// members are destroyed.
rtc::TaskQueue encoder_queue_;
}; };
const int kTelephoneEventAttenuationdB = 10; const int kTelephoneEventAttenuationdB = 10;
@ -474,11 +474,11 @@ ChannelSend::ChannelSend(
new RateLimiter(clock, kMaxRetransmissionWindowMs)), new RateLimiter(clock, kMaxRetransmissionWindowMs)),
frame_encryptor_(frame_encryptor), frame_encryptor_(frame_encryptor),
crypto_options_(crypto_options), crypto_options_(crypto_options),
fixing_timestamp_stall_(
field_trials.IsDisabled("WebRTC-Audio-FixTimestampStall")),
encoder_queue_(task_queue_factory->CreateTaskQueue( encoder_queue_(task_queue_factory->CreateTaskQueue(
"AudioEncoder", "AudioEncoder",
TaskQueueFactory::Priority::NORMAL)), TaskQueueFactory::Priority::NORMAL)) {
fixing_timestamp_stall_(
field_trials.IsDisabled("WebRTC-Audio-FixTimestampStall")) {
audio_coding_.reset(AudioCodingModule::Create(AudioCodingModule::Config())); audio_coding_.reset(AudioCodingModule::Create(AudioCodingModule::Config()));
RtpRtcpInterface::Configuration configuration; RtpRtcpInterface::Configuration configuration;