Reporting packet feedback availability in AudioSendStream

This CL adds tracking and reporting of packet feedback availability in
the AudioSendStream class.

This is part of a series of CLs tracking the transport feedback status
of the streams known to BitrateAllocator and reporting the status to
the congestion controller.

Bug: webrtc:8415
Change-Id: I1053675d245a59c1b97fd482de88e63cbfae0038
Reviewed-on: https://webrtc-review.googlesource.com/63203
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22539}
This commit is contained in:
Sebastian Jansson
2018-03-21 12:46:56 +01:00
committed by Commit Bot
parent 08126349f5
commit 763e947cf3
2 changed files with 16 additions and 10 deletions

View File

@ -277,14 +277,16 @@ void AudioSendStream::Start() {
return;
}
bool has_transport_sequence_number =
FindExtensionIds(config_.rtp.extensions).transport_sequence_number != 0;
if (config_.min_bitrate_bps != -1 && config_.max_bitrate_bps != -1 &&
(FindExtensionIds(config_.rtp.extensions).transport_sequence_number !=
0 ||
(has_transport_sequence_number ||
!webrtc::field_trial::IsEnabled("WebRTC-Audio-SendSideBwe"))) {
// Audio BWE is enabled.
transport_->packet_sender()->SetAccountForAudioPackets(true);
ConfigureBitrateObserver(config_.min_bitrate_bps, config_.max_bitrate_bps,
config_.bitrate_priority);
config_.bitrate_priority,
has_transport_sequence_number);
}
channel_proxy_->StartSend();
sending_ = true;
@ -670,12 +672,13 @@ void AudioSendStream::ReconfigureBitrateObserver(
return;
}
bool has_transport_sequence_number = new_transport_seq_num_id != 0;
if (new_config.min_bitrate_bps != -1 && new_config.max_bitrate_bps != -1 &&
(new_transport_seq_num_id != 0 ||
(has_transport_sequence_number ||
!webrtc::field_trial::IsEnabled("WebRTC-Audio-SendSideBwe"))) {
stream->ConfigureBitrateObserver(new_config.min_bitrate_bps,
new_config.max_bitrate_bps,
new_config.bitrate_priority);
stream->ConfigureBitrateObserver(
new_config.min_bitrate_bps, new_config.max_bitrate_bps,
new_config.bitrate_priority, has_transport_sequence_number);
} else {
stream->RemoveBitrateObserver();
}
@ -683,7 +686,8 @@ void AudioSendStream::ReconfigureBitrateObserver(
void AudioSendStream::ConfigureBitrateObserver(int min_bitrate_bps,
int max_bitrate_bps,
double bitrate_priority) {
double bitrate_priority,
bool has_packet_feedback) {
RTC_DCHECK(worker_thread_checker_.CalledOnValidThread());
RTC_DCHECK_GE(max_bitrate_bps, min_bitrate_bps);
rtc::Event thread_sync_event(false /* manual_reset */, false);
@ -695,7 +699,8 @@ void AudioSendStream::ConfigureBitrateObserver(int min_bitrate_bps,
config_.bitrate_priority = bitrate_priority;
// This either updates the current observer or adds a new observer.
bitrate_allocator_->AddObserver(this, min_bitrate_bps, max_bitrate_bps, 0,
true, config_.track_id, bitrate_priority);
true, config_.track_id, bitrate_priority,
has_packet_feedback);
thread_sync_event.Set();
});
thread_sync_event.Wait(rtc::Event::kForever);

View File

@ -119,7 +119,8 @@ class AudioSendStream final : public webrtc::AudioSendStream,
void ConfigureBitrateObserver(int min_bitrate_bps,
int max_bitrate_bps,
double bitrate_priority);
double bitrate_priority,
bool has_packet_feedback);
void RemoveBitrateObserver();
void RegisterCngPayloadType(int payload_type, int clockrate_hz);