Allow applications to control audio send bitrate through RtpParameters.

This change builds on top of the refactoring in https://codereview.webrtc.org/1841083008/, and enables WebRTC client applications to control the max send bitrate for every audio stream through RtpParameters.

The AudioSendStream now stores the last codec spec, and whenever a global or per-stream bitrate limit changes, the effective limit (smaller of the two) is recomputed and the codec is reconfigured with that bitrate.

TBR=pthatcher
BUG=

Review URL: https://codereview.webrtc.org/1847353004

Cr-Commit-Position: refs/heads/master@{#12290}
diff --git a/webrtc/pc/channel_unittest.cc b/webrtc/pc/channel_unittest.cc
index a423842..d84076e 100644
--- a/webrtc/pc/channel_unittest.cc
+++ b/webrtc/pc/channel_unittest.cc
@@ -2357,24 +2357,12 @@
   Base::SendBundleToBundle(kAudioPts, arraysize(kAudioPts), true, true);
 }
 
-TEST_F(VoiceChannelTest, GetRtpParametersIsNotImplemented) {
-  // These tests verify that the Get/SetRtpParameters methods for VoiceChannel
-  // always fail as they are not implemented.
-  // TODO(skvlad): Replace with full tests when support for bitrate limiting
-  // for audio RtpSenders is added.
-  CreateChannels(0, 0);
-  EXPECT_TRUE(
-      channel1_->SetLocalContent(&local_media_content1_, CA_OFFER, NULL));
-  webrtc::RtpParameters voice_parameters = channel1_->GetRtpParameters(kSsrc1);
-  EXPECT_EQ(0UL, voice_parameters.encodings.size());
+TEST_F(VoiceChannelTest, DefaultMaxBitrateIsUnlimited) {
+  Base::DefaultMaxBitrateIsUnlimited();
 }
 
-TEST_F(VoiceChannelTest, SetRtpParametersIsNotImplemented) {
-  CreateChannels(0, 0);
-  EXPECT_TRUE(
-      channel1_->SetLocalContent(&local_media_content1_, CA_OFFER, NULL));
-  EXPECT_FALSE(
-      channel1_->SetRtpParameters(kSsrc1, BitrateLimitedParameters(1000)));
+TEST_F(VoiceChannelTest, CanChangeMaxBitrate) {
+  Base::CanChangeMaxBitrate();
 }
 
 // VideoChannelTest