Make AudioSendStream to be OverheadObserver
In order to have correct overhead adjustments for ANA in AudioSendStream we need to know both transport and audio packetization overheads in AudioSendStream. This change makes AudioSendStream to be OverheadObserver instead of ChannelSend. This change is required for https://webrtc-review.googlesource.com/c/src/+/115082. This change was also suggested earlier in TODO: // TODO(solenberg): Make AudioSendStream an OverheadObserver instead. https://cs.chromium.org/chromium/src/third_party/webrtc/audio/channel_send.cc?rcl=71b5a7df7794bbc4103296fcd8bd740acebdc901&l=1181 I think we should also consider moving TargetTransferRate observer to AudioSendStream. Since AudioSendStream owns encoder and configures ANA, it makes sense to consolidate all rate (and overhead) calculation there. Added TODO to clean it up in next chanelists. Bug: webrtc:10150 Change-Id: I48791b998ea00ffde9ec75c6bca8b6dc83001b42 Reviewed-on: https://webrtc-review.googlesource.com/c/119121 Commit-Queue: Anton Sukhanov <sukhanov@webrtc.org> Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org> Reviewed-by: Minyue Li <minyue@webrtc.org> Cr-Commit-Position: refs/heads/master@{#26540}
This commit is contained in:
committed by
Commit Bot
parent
e22498cc3e
commit
626015d7f8
@ -520,9 +520,61 @@ TEST(AudioSendStreamTest, ReconfigureTransportCcResetsFirst) {
|
||||
helper.transport(), Ne(nullptr)))
|
||||
.Times(1);
|
||||
}
|
||||
|
||||
// ModifyEncoder will be called to re-set overhead.
|
||||
EXPECT_CALL(*helper.channel_send(), ModifyEncoder(testing::_)).Times(1);
|
||||
|
||||
send_stream->Reconfigure(new_config);
|
||||
}
|
||||
|
||||
TEST(AudioSendStreamTest, OnTransportOverheadChanged) {
|
||||
ConfigHelper helper(false, true);
|
||||
auto send_stream = helper.CreateAudioSendStream();
|
||||
auto new_config = helper.config();
|
||||
|
||||
// ModifyEncoder will be called on overhead change.
|
||||
EXPECT_CALL(*helper.channel_send(), ModifyEncoder(testing::_)).Times(1);
|
||||
|
||||
const size_t transport_overhead_per_packet_bytes = 333;
|
||||
send_stream->SetTransportOverhead(transport_overhead_per_packet_bytes);
|
||||
|
||||
EXPECT_EQ(transport_overhead_per_packet_bytes,
|
||||
send_stream->TestOnlyGetPerPacketOverheadBytes());
|
||||
}
|
||||
|
||||
TEST(AudioSendStreamTest, OnAudioOverheadChanged) {
|
||||
ConfigHelper helper(false, true);
|
||||
auto send_stream = helper.CreateAudioSendStream();
|
||||
auto new_config = helper.config();
|
||||
|
||||
// ModifyEncoder will be called on overhead change.
|
||||
EXPECT_CALL(*helper.channel_send(), ModifyEncoder(testing::_)).Times(1);
|
||||
|
||||
const size_t audio_overhead_per_packet_bytes = 555;
|
||||
send_stream->OnOverheadChanged(audio_overhead_per_packet_bytes);
|
||||
EXPECT_EQ(audio_overhead_per_packet_bytes,
|
||||
send_stream->TestOnlyGetPerPacketOverheadBytes());
|
||||
}
|
||||
|
||||
TEST(AudioSendStreamTest, OnAudioAndTransportOverheadChanged) {
|
||||
ConfigHelper helper(false, true);
|
||||
auto send_stream = helper.CreateAudioSendStream();
|
||||
auto new_config = helper.config();
|
||||
|
||||
// ModifyEncoder will be called when each of overhead changes.
|
||||
EXPECT_CALL(*helper.channel_send(), ModifyEncoder(testing::_)).Times(2);
|
||||
|
||||
const size_t transport_overhead_per_packet_bytes = 333;
|
||||
send_stream->SetTransportOverhead(transport_overhead_per_packet_bytes);
|
||||
|
||||
const size_t audio_overhead_per_packet_bytes = 555;
|
||||
send_stream->OnOverheadChanged(audio_overhead_per_packet_bytes);
|
||||
|
||||
EXPECT_EQ(
|
||||
transport_overhead_per_packet_bytes + audio_overhead_per_packet_bytes,
|
||||
send_stream->TestOnlyGetPerPacketOverheadBytes());
|
||||
}
|
||||
|
||||
// Validates that reconfiguring the AudioSendStream with a Frame encryptor
|
||||
// correctly reconfigures on the object without crashing.
|
||||
TEST(AudioSendStreamTest, ReconfigureWithFrameEncryptor) {
|
||||
|
||||
Reference in New Issue
Block a user