Removes VoECodec sub API as part of a clean-up operation where the goal is to remove unused APIs.

BUG=3206
R=juberti@webrtc.org, niklas.enbom@webrtc.org, tina.legrand@webrtc.org, turaj@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/11789004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5927 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
henrika@webrtc.org 2014-04-17 10:38:08 +00:00
parent e2e9abb3bc
commit 0f7375504a
6 changed files with 9 additions and 535 deletions

View File

@ -1702,47 +1702,6 @@ Channel::GetRecPayloadType(CodecInst& codec)
return 0;
}
int32_t
Channel::SetAMREncFormat(AmrMode mode)
{
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
"Channel::SetAMREncFormat()");
// ACM doesn't support AMR
return -1;
}
int32_t
Channel::SetAMRDecFormat(AmrMode mode)
{
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
"Channel::SetAMRDecFormat()");
// ACM doesn't support AMR
return -1;
}
int32_t
Channel::SetAMRWbEncFormat(AmrMode mode)
{
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
"Channel::SetAMRWbEncFormat()");
// ACM doesn't support AMR
return -1;
}
int32_t
Channel::SetAMRWbDecFormat(AmrMode mode)
{
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
"Channel::SetAMRWbDecFormat()");
// ACM doesn't support AMR
return -1;
}
int32_t
Channel::SetSendCNPayloadType(int type, PayloadFrequencies frequency)
{
@ -1792,199 +1751,6 @@ Channel::SetSendCNPayloadType(int type, PayloadFrequencies frequency)
return 0;
}
int32_t
Channel::SetISACInitTargetRate(int rateBps, bool useFixedFrameSize)
{
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
"Channel::SetISACInitTargetRate()");
CodecInst sendCodec;
if (audio_coding_->SendCodec(&sendCodec) == -1)
{
_engineStatisticsPtr->SetLastError(
VE_CODEC_ERROR, kTraceError,
"SetISACInitTargetRate() failed to retrieve send codec");
return -1;
}
if (STR_CASE_CMP(sendCodec.plname, "ISAC") != 0)
{
// This API is only valid if iSAC is setup to run in channel-adaptive
// mode.
// We do not validate the adaptive mode here. It is done later in the
// ConfigISACBandwidthEstimator() API.
_engineStatisticsPtr->SetLastError(
VE_CODEC_ERROR, kTraceError,
"SetISACInitTargetRate() send codec is not iSAC");
return -1;
}
uint8_t initFrameSizeMsec(0);
if (16000 == sendCodec.plfreq)
{
// Note that 0 is a valid and corresponds to "use default
if ((rateBps != 0 &&
rateBps < kVoiceEngineMinIsacInitTargetRateBpsWb) ||
(rateBps > kVoiceEngineMaxIsacInitTargetRateBpsWb))
{
_engineStatisticsPtr->SetLastError(
VE_INVALID_ARGUMENT, kTraceError,
"SetISACInitTargetRate() invalid target rate - 1");
return -1;
}
// 30 or 60ms
initFrameSizeMsec = (uint8_t)(sendCodec.pacsize / 16);
}
else if (32000 == sendCodec.plfreq)
{
if ((rateBps != 0 &&
rateBps < kVoiceEngineMinIsacInitTargetRateBpsSwb) ||
(rateBps > kVoiceEngineMaxIsacInitTargetRateBpsSwb))
{
_engineStatisticsPtr->SetLastError(
VE_INVALID_ARGUMENT, kTraceError,
"SetISACInitTargetRate() invalid target rate - 2");
return -1;
}
initFrameSizeMsec = (uint8_t)(sendCodec.pacsize / 32); // 30ms
}
if (audio_coding_->ConfigISACBandwidthEstimator(
initFrameSizeMsec, rateBps, useFixedFrameSize) == -1)
{
_engineStatisticsPtr->SetLastError(
VE_AUDIO_CODING_MODULE_ERROR, kTraceError,
"SetISACInitTargetRate() iSAC BWE config failed");
return -1;
}
return 0;
}
int32_t
Channel::SetISACMaxRate(int rateBps)
{
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
"Channel::SetISACMaxRate()");
CodecInst sendCodec;
if (audio_coding_->SendCodec(&sendCodec) == -1)
{
_engineStatisticsPtr->SetLastError(
VE_CODEC_ERROR, kTraceError,
"SetISACMaxRate() failed to retrieve send codec");
return -1;
}
if (STR_CASE_CMP(sendCodec.plname, "ISAC") != 0)
{
// This API is only valid if iSAC is selected as sending codec.
_engineStatisticsPtr->SetLastError(
VE_CODEC_ERROR, kTraceError,
"SetISACMaxRate() send codec is not iSAC");
return -1;
}
if (16000 == sendCodec.plfreq)
{
if ((rateBps < kVoiceEngineMinIsacMaxRateBpsWb) ||
(rateBps > kVoiceEngineMaxIsacMaxRateBpsWb))
{
_engineStatisticsPtr->SetLastError(
VE_INVALID_ARGUMENT, kTraceError,
"SetISACMaxRate() invalid max rate - 1");
return -1;
}
}
else if (32000 == sendCodec.plfreq)
{
if ((rateBps < kVoiceEngineMinIsacMaxRateBpsSwb) ||
(rateBps > kVoiceEngineMaxIsacMaxRateBpsSwb))
{
_engineStatisticsPtr->SetLastError(
VE_INVALID_ARGUMENT, kTraceError,
"SetISACMaxRate() invalid max rate - 2");
return -1;
}
}
if (channel_state_.Get().sending)
{
_engineStatisticsPtr->SetLastError(
VE_SENDING, kTraceError,
"SetISACMaxRate() unable to set max rate while sending");
return -1;
}
// Set the maximum instantaneous rate of iSAC (works for both adaptive
// and non-adaptive mode)
if (audio_coding_->SetISACMaxRate(rateBps) == -1)
{
_engineStatisticsPtr->SetLastError(
VE_AUDIO_CODING_MODULE_ERROR, kTraceError,
"SetISACMaxRate() failed to set max rate");
return -1;
}
return 0;
}
int32_t
Channel::SetISACMaxPayloadSize(int sizeBytes)
{
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId,_channelId),
"Channel::SetISACMaxPayloadSize()");
CodecInst sendCodec;
if (audio_coding_->SendCodec(&sendCodec) == -1)
{
_engineStatisticsPtr->SetLastError(
VE_CODEC_ERROR, kTraceError,
"SetISACMaxPayloadSize() failed to retrieve send codec");
return -1;
}
if (STR_CASE_CMP(sendCodec.plname, "ISAC") != 0)
{
_engineStatisticsPtr->SetLastError(
VE_CODEC_ERROR, kTraceError,
"SetISACMaxPayloadSize() send codec is not iSAC");
return -1;
}
if (16000 == sendCodec.plfreq)
{
if ((sizeBytes < kVoiceEngineMinIsacMaxPayloadSizeBytesWb) ||
(sizeBytes > kVoiceEngineMaxIsacMaxPayloadSizeBytesWb))
{
_engineStatisticsPtr->SetLastError(
VE_INVALID_ARGUMENT, kTraceError,
"SetISACMaxPayloadSize() invalid max payload - 1");
return -1;
}
}
else if (32000 == sendCodec.plfreq)
{
if ((sizeBytes < kVoiceEngineMinIsacMaxPayloadSizeBytesSwb) ||
(sizeBytes > kVoiceEngineMaxIsacMaxPayloadSizeBytesSwb))
{
_engineStatisticsPtr->SetLastError(
VE_INVALID_ARGUMENT, kTraceError,
"SetISACMaxPayloadSize() invalid max payload - 2");
return -1;
}
}
if (channel_state_.Get().sending)
{
_engineStatisticsPtr->SetLastError(
VE_SENDING, kTraceError,
"SetISACMaxPayloadSize() unable to set max rate while sending");
return -1;
}
if (audio_coding_->SetISACMaxPayloadSize(sizeBytes) == -1)
{
_engineStatisticsPtr->SetLastError(
VE_AUDIO_CODING_MODULE_ERROR, kTraceError,
"SetISACMaxPayloadSize() failed to set max payload size");
return -1;
}
return 0;
}
int32_t Channel::RegisterExternalTransport(Transport& transport)
{
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId),

View File

@ -206,14 +206,7 @@ public:
int32_t GetVADStatus(bool& enabledVAD, ACMVADMode& mode, bool& disabledDTX);
int32_t SetRecPayloadType(const CodecInst& codec);
int32_t GetRecPayloadType(CodecInst& codec);
int32_t SetAMREncFormat(AmrMode mode);
int32_t SetAMRDecFormat(AmrMode mode);
int32_t SetAMRWbEncFormat(AmrMode mode);
int32_t SetAMRWbDecFormat(AmrMode mode);
int32_t SetSendCNPayloadType(int type, PayloadFrequencies frequency);
int32_t SetISACInitTargetRate(int rateBps, bool useFixedFrameSize);
int32_t SetISACMaxRate(int rateBps);
int32_t SetISACMaxPayloadSize(int sizeBytes);
// VoE dual-streaming.
int SetSecondarySendCodec(const CodecInst& codec, int red_payload_type);

View File

@ -84,22 +84,6 @@ public:
// Gets the currently received |codec| for a specific |channel|.
virtual int GetRecCodec(int channel, CodecInst& codec) = 0;
// Sets the initial values of target rate and frame size for iSAC
// for a specified |channel|. This API is only valid if iSAC is setup
// to run in channel-adaptive mode
virtual int SetISACInitTargetRate(int channel, int rateBps,
bool useFixedFrameSize = false) = 0;
// Sets the maximum allowed iSAC rate which the codec may not exceed
// for a single packet for the specified |channel|. The maximum rate is
// defined as payload size per frame size in bits per second.
virtual int SetISACMaxRate(int channel, int rateBps) = 0;
// Sets the maximum allowed iSAC payload size for a specified |channel|.
// The maximum value is set independently of the frame size, i.e.
// 30 ms and 60 ms packets have the same limit.
virtual int SetISACMaxPayloadSize(int channel, int sizeBytes) = 0;
// Sets the dynamic payload type number for a particular |codec| or
// disables (ignores) a codec for receiving. For instance, when receiving
// an invite from a SIP-based client, this function can be used to change
@ -130,17 +114,15 @@ public:
virtual int GetVADStatus(int channel, bool& enabled, VadModes& mode,
bool& disabledDTX) = 0;
// Not supported
virtual int SetAMREncFormat(int channel, AmrMode mode) = 0;
// Not supported
virtual int SetAMRDecFormat(int channel, AmrMode mode) = 0;
// Not supported
virtual int SetAMRWbEncFormat(int channel, AmrMode mode) = 0;
// Not supported
virtual int SetAMRWbDecFormat(int channel, AmrMode mode) = 0;
// Don't use. To be removed.
virtual int SetAMREncFormat(int channel, AmrMode mode) { return -1; }
virtual int SetAMRDecFormat(int channel, AmrMode mode) { return -1; }
virtual int SetAMRWbEncFormat(int channel, AmrMode mode) { return -1; }
virtual int SetAMRWbDecFormat(int channel, AmrMode mode) { return -1; }
virtual int SetISACInitTargetRate(int channel, int rateBps,
bool useFixedFrameSize = false) { return -1; }
virtual int SetISACMaxRate(int channel, int rateBps) { return -1; }
virtual int SetISACMaxPayloadSize(int channel, int sizeBytes) { return -1; }
protected:
VoECodec() {}

View File

@ -130,68 +130,6 @@ TEST_F(CodecTest, VoiceActivityDetectionCanBeTurnedOff) {
EXPECT_EQ(webrtc::kVadConventional, vad_mode);
}
// Tests requiring manual verification (although they do have some value
// without the manual verification):
TEST_F(CodecTest, ManualExtendedISACApisBehaveAsExpected) {
strcpy(codec_instance_.plname, "isac");
codec_instance_.pltype = 103;
codec_instance_.plfreq = 16000;
codec_instance_.channels = 1;
// -1 here means "adaptive rate".
codec_instance_.rate = -1;
codec_instance_.pacsize = 480;
EXPECT_EQ(0, voe_codec_->SetSendCodec(channel_, codec_instance_));
EXPECT_NE(0, voe_codec_->SetISACInitTargetRate(channel_, 5000)) <<
"iSAC should reject rate 5000.";
EXPECT_NE(0, voe_codec_->SetISACInitTargetRate(channel_, 33000)) <<
"iSAC should reject rate 33000.";
EXPECT_EQ(0, voe_codec_->SetISACInitTargetRate(channel_, 32000));
TEST_LOG("Ensure that the sound is good (iSAC, target = 32kbps)...\n");
Sleep(3000);
EXPECT_EQ(0, voe_codec_->SetISACInitTargetRate(channel_, 10000));
TEST_LOG("Ensure that the sound is good (iSAC, target = 10kbps)...\n");
Sleep(3000);
EXPECT_EQ(0, voe_codec_->SetISACInitTargetRate(channel_, 10000, true));
EXPECT_EQ(0, voe_codec_->SetISACInitTargetRate(channel_, 10000, false));
EXPECT_EQ(0, voe_codec_->SetISACInitTargetRate(channel_, 0));
TEST_LOG("Ensure that the sound is good (iSAC, target = default)...\n");
Sleep(3000);
TEST_LOG(" Testing SetISACMaxPayloadSize:\n");
EXPECT_EQ(0, voe_base_->StopSend(channel_));
EXPECT_NE(0, voe_codec_->SetISACMaxPayloadSize(channel_, 50));
EXPECT_NE(0, voe_codec_->SetISACMaxPayloadSize(channel_, 650));
EXPECT_EQ(0, voe_codec_->SetISACMaxPayloadSize(channel_, 120));
EXPECT_EQ(0, voe_base_->StartSend(channel_));
TEST_LOG("Ensure that the sound is good (iSAC, "
"max payload size = 100 bytes)...\n");
Sleep(3000);
TEST_LOG(" Testing SetISACMaxRate:\n");
EXPECT_EQ(0, voe_base_->StopSend(channel_));
EXPECT_EQ(0, voe_codec_->SetISACMaxPayloadSize(channel_, 400));
EXPECT_EQ(0, voe_base_->StartSend(channel_));
EXPECT_EQ(0, voe_base_->StopSend(channel_));
EXPECT_NE(0, voe_codec_->SetISACMaxRate(channel_, 31900));
EXPECT_NE(0, voe_codec_->SetISACMaxRate(channel_, 53500));
EXPECT_EQ(0, voe_codec_->SetISACMaxRate(channel_, 32000));
EXPECT_EQ(0, voe_base_->StartSend(channel_));
TEST_LOG("Ensure that the sound is good (iSAC, max rate = 32 kbps)...\n");
Sleep(3000);
EXPECT_EQ(0, voe_base_->StopSend(channel_));
// Restore "no limitation". No, no limit, we reach for the sky.
EXPECT_EQ(0, voe_codec_->SetISACMaxRate(channel_, 53400));
EXPECT_EQ(0, voe_base_->StartSend(channel_));
}
// TODO(xians, phoglund): Re-enable when issue 372 is resolved.
TEST_F(CodecTest, DISABLED_ManualVerifySendCodecsForAllPacketSizes) {
for (int i = 0; i < voe_codec_->NumOfCodecs(); ++i) {

View File

@ -213,110 +213,6 @@ int VoECodecImpl::GetRecCodec(int channel, CodecInst& codec)
return 0;
}
int VoECodecImpl::SetAMREncFormat(int channel, AmrMode mode)
{
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
"SetAMREncFormat(channel=%d, mode=%d)", channel, mode);
#ifdef WEBRTC_CODEC_AMR
if (!_shared->statistics().Initialized())
{
_shared->SetLastError(VE_NOT_INITED, kTraceError);
return -1;
}
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
voe::Channel* channelPtr = ch.channel();
if (channelPtr == NULL)
{
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
"SetAMREncFormat() failed to locate channel");
return -1;
}
return channelPtr->SetAMREncFormat(mode);
#else
_shared->SetLastError(VE_FUNC_NOT_SUPPORTED, kTraceError,
"SetAMREncFormat() AMR codec is not supported");
return -1;
#endif
}
int VoECodecImpl::SetAMRDecFormat(int channel, AmrMode mode)
{
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
"SetAMRDecFormat(channel=%i, mode=%i)", channel, mode);
#ifdef WEBRTC_CODEC_AMR
if (!_shared->statistics().Initialized())
{
_shared->SetLastError(VE_NOT_INITED, kTraceError);
return -1;
}
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
voe::Channel* channelPtr = ch.channel();
if (channelPtr == NULL)
{
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
"SetAMRDecFormat() failed to locate channel");
return -1;
}
return channelPtr->SetAMRDecFormat(mode);
#else
_shared->SetLastError(VE_FUNC_NOT_SUPPORTED, kTraceError,
"SetAMRDecFormat() AMR codec is not supported");
return -1;
#endif
}
int VoECodecImpl::SetAMRWbEncFormat(int channel, AmrMode mode)
{
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
"SetAMRWbEncFormat(channel=%d, mode=%d)", channel, mode);
#ifdef WEBRTC_CODEC_AMRWB
if (!_shared->statistics().Initialized())
{
_shared->SetLastError(VE_NOT_INITED, kTraceError);
return -1;
}
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
voe::Channel* channelPtr = ch.channel();
if (channelPtr == NULL)
{
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
"SetAMRWbEncFormat() failed to locate channel");
return -1;
}
return channelPtr->SetAMRWbEncFormat(mode);
#else
_shared->SetLastError(VE_FUNC_NOT_SUPPORTED, kTraceError,
"SetAMRWbEncFormat() AMR-wb codec is not supported");
return -1;
#endif
}
int VoECodecImpl::SetAMRWbDecFormat(int channel, AmrMode mode)
{
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
"SetAMRWbDecFormat(channel=%i, mode=%i)", channel, mode);
#ifdef WEBRTC_CODEC_AMRWB
if (!_shared->statistics().Initialized())
{
_shared->SetLastError(VE_NOT_INITED, kTraceError);
return -1;
}
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
voe::Channel* channelPtr = ch.channel();
if (channelPtr == NULL)
{
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
"SetAMRWbDecFormat() failed to locate channel");
return -1;
}
return channelPtr->SetAMRWbDecFormat(mode);
#else
_shared->SetLastError(VE_FUNC_NOT_SUPPORTED, kTraceError,
"SetAMRWbDecFormat() AMR-wb codec is not supported");
return -1;
#endif
}
int VoECodecImpl::SetRecPayloadType(int channel, const CodecInst& codec)
{
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
@ -399,87 +295,6 @@ int VoECodecImpl::SetSendCNPayloadType(int channel, int type,
return channelPtr->SetSendCNPayloadType(type, frequency);
}
int VoECodecImpl::SetISACInitTargetRate(int channel, int rateBps,
bool useFixedFrameSize)
{
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
"SetISACInitTargetRate(channel=%d, rateBps=%d, "
"useFixedFrameSize=%d)", channel, rateBps, useFixedFrameSize);
#ifdef WEBRTC_CODEC_ISAC
if (!_shared->statistics().Initialized())
{
_shared->SetLastError(VE_NOT_INITED, kTraceError);
return -1;
}
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
voe::Channel* channelPtr = ch.channel();
if (channelPtr == NULL)
{
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
"SetISACInitTargetRate() failed to locate channel");
return -1;
}
return channelPtr->SetISACInitTargetRate(rateBps, useFixedFrameSize);
#else
_shared->SetLastError(VE_FUNC_NOT_SUPPORTED, kTraceError,
"SetISACInitTargetRate() iSAC codec is not supported");
return -1;
#endif
}
int VoECodecImpl::SetISACMaxRate(int channel, int rateBps)
{
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
"SetISACMaxRate(channel=%d, rateBps=%d)", channel, rateBps);
#ifdef WEBRTC_CODEC_ISAC
if (!_shared->statistics().Initialized())
{
_shared->SetLastError(VE_NOT_INITED, kTraceError);
return -1;
}
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
voe::Channel* channelPtr = ch.channel();
if (channelPtr == NULL)
{
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
"SetISACMaxRate() failed to locate channel");
return -1;
}
return channelPtr->SetISACMaxRate(rateBps);
#else
_shared->SetLastError(VE_FUNC_NOT_SUPPORTED, kTraceError,
"SetISACMaxRate() iSAC codec is not supported");
return -1;
#endif
}
int VoECodecImpl::SetISACMaxPayloadSize(int channel, int sizeBytes)
{
WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1),
"SetISACMaxPayloadSize(channel=%d, sizeBytes=%d)", channel,
sizeBytes);
#ifdef WEBRTC_CODEC_ISAC
if (!_shared->statistics().Initialized())
{
_shared->SetLastError(VE_NOT_INITED, kTraceError);
return -1;
}
voe::ChannelOwner ch = _shared->channel_manager().GetChannel(channel);
voe::Channel* channelPtr = ch.channel();
if (channelPtr == NULL)
{
_shared->SetLastError(VE_CHANNEL_NOT_VALID, kTraceError,
"SetISACMaxPayloadSize() failed to locate channel");
return -1;
}
return channelPtr->SetISACMaxPayloadSize(sizeBytes);
#else
_shared->SetLastError(VE_FUNC_NOT_SUPPORTED, kTraceError,
"SetISACMaxPayloadSize() iSAC codec is not supported");
return -1;
#endif
}
int VoECodecImpl::SetVADStatus(int channel, bool enable, VadModes mode,
bool disableDTX)
{

View File

@ -31,18 +31,6 @@ public:
virtual int GetRecCodec(int channel, CodecInst& codec);
virtual int SetAMREncFormat(int channel,
AmrMode mode = kRfc3267BwEfficient);
virtual int SetAMRDecFormat(int channel,
AmrMode mode = kRfc3267BwEfficient);
virtual int SetAMRWbEncFormat(int channel,
AmrMode mode = kRfc3267BwEfficient);
virtual int SetAMRWbDecFormat(int channel,
AmrMode mode = kRfc3267BwEfficient);
virtual int SetSendCNPayloadType(
int channel, int type,
PayloadFrequencies frequency = kFreq16000Hz);
@ -52,14 +40,6 @@ public:
virtual int GetRecPayloadType(int channel, CodecInst& codec);
virtual int SetISACInitTargetRate(int channel,
int rateBps,
bool useFixedFrameSize = false);
virtual int SetISACMaxRate(int channel, int rateBps);
virtual int SetISACMaxPayloadSize(int channel, int sizeBytes);
virtual int SetVADStatus(int channel,
bool enable,
VadModes mode = kVadConventional,