diff options
Diffstat (limited to 'webrtc/voice_engine/voe_codec_impl.cc')
-rw-r--r-- | webrtc/voice_engine/voe_codec_impl.cc | 88 |
1 files changed, 14 insertions, 74 deletions
diff --git a/webrtc/voice_engine/voe_codec_impl.cc b/webrtc/voice_engine/voe_codec_impl.cc index 2631372bbf..6eb11b759c 100644 --- a/webrtc/voice_engine/voe_codec_impl.cc +++ b/webrtc/voice_engine/voe_codec_impl.cc @@ -10,7 +10,8 @@ #include "webrtc/voice_engine/voe_codec_impl.h" -#include "webrtc/modules/audio_coding/main/include/audio_coding_module.h" +#include "webrtc/base/format_macros.h" +#include "webrtc/modules/audio_coding/include/audio_coding_module.h" #include "webrtc/system_wrappers/include/critical_section_wrapper.h" #include "webrtc/system_wrappers/include/trace.h" #include "webrtc/voice_engine/channel.h" @@ -51,25 +52,20 @@ int VoECodecImpl::NumOfCodecs() { } int VoECodecImpl::GetCodec(int index, CodecInst& codec) { - CodecInst acmCodec; - if (AudioCodingModule::Codec(index, &acmCodec) == -1) { + if (AudioCodingModule::Codec(index, &codec) == -1) { _shared->SetLastError(VE_INVALID_LISTNR, kTraceError, "GetCodec() invalid index"); return -1; } - ACMToExternalCodecRepresentation(codec, acmCodec); return 0; } int VoECodecImpl::SetSendCodec(int channel, const CodecInst& codec) { - CodecInst copyCodec; - ExternalToACMCodecRepresentation(copyCodec, codec); - WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1), "SetSendCodec(channel=%d, codec)", channel); WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_shared->instance_id(), -1), "codec: plname=%s, pacsize=%d, plfreq=%d, pltype=%d, " - "channels=%d, rate=%d", + "channels=%" PRIuS ", rate=%d", codec.plname, codec.pacsize, codec.plfreq, codec.pltype, codec.channels, codec.rate); if (!_shared->statistics().Initialized()) { @@ -77,20 +73,19 @@ int VoECodecImpl::SetSendCodec(int channel, const CodecInst& codec) { return -1; } // External sanity checks performed outside the ACM - if ((STR_CASE_CMP(copyCodec.plname, "L16") == 0) && - (copyCodec.pacsize >= 960)) { + if ((STR_CASE_CMP(codec.plname, "L16") == 0) && (codec.pacsize >= 960)) { _shared->SetLastError(VE_INVALID_ARGUMENT, kTraceError, "SetSendCodec() invalid L16 packet size"); return -1; } - if (!STR_CASE_CMP(copyCodec.plname, "CN") || - !STR_CASE_CMP(copyCodec.plname, "TELEPHONE-EVENT") || - !STR_CASE_CMP(copyCodec.plname, "RED")) { + if (!STR_CASE_CMP(codec.plname, "CN") || + !STR_CASE_CMP(codec.plname, "TELEPHONE-EVENT") || + !STR_CASE_CMP(codec.plname, "RED")) { _shared->SetLastError(VE_INVALID_ARGUMENT, kTraceError, "SetSendCodec() invalid codec name"); return -1; } - if ((copyCodec.channels != 1) && (copyCodec.channels != 2)) { + if ((codec.channels != 1) && (codec.channels != 2)) { _shared->SetLastError(VE_INVALID_ARGUMENT, kTraceError, "SetSendCodec() invalid number of channels"); return -1; @@ -102,12 +97,12 @@ int VoECodecImpl::SetSendCodec(int channel, const CodecInst& codec) { "GetSendCodec() failed to locate channel"); return -1; } - if (!AudioCodingModule::IsCodecValid((CodecInst&)copyCodec)) { + if (!AudioCodingModule::IsCodecValid(codec)) { _shared->SetLastError(VE_INVALID_ARGUMENT, kTraceError, "SetSendCodec() invalid codec"); return -1; } - if (channelPtr->SetSendCodec(copyCodec) != 0) { + if (channelPtr->SetSendCodec(codec) != 0) { _shared->SetLastError(VE_CANNOT_SET_SEND_CODEC, kTraceError, "SetSendCodec() failed to set send codec"); return -1; @@ -128,13 +123,11 @@ int VoECodecImpl::GetSendCodec(int channel, CodecInst& codec) { "GetSendCodec() failed to locate channel"); return -1; } - CodecInst acmCodec; - if (channelPtr->GetSendCodec(acmCodec) != 0) { + if (channelPtr->GetSendCodec(codec) != 0) { _shared->SetLastError(VE_CANNOT_GET_SEND_CODEC, kTraceError, "GetSendCodec() failed to get send codec"); return -1; } - ACMToExternalCodecRepresentation(codec, acmCodec); return 0; } @@ -162,19 +155,14 @@ int VoECodecImpl::GetRecCodec(int channel, CodecInst& codec) { "GetRecCodec() failed to locate channel"); return -1; } - CodecInst acmCodec; - if (channelPtr->GetRecCodec(acmCodec) != 0) { - return -1; - } - ACMToExternalCodecRepresentation(codec, acmCodec); - return 0; + return channelPtr->GetRecCodec(codec); } int VoECodecImpl::SetRecPayloadType(int channel, const CodecInst& codec) { WEBRTC_TRACE(kTraceApiCall, kTraceVoice, VoEId(_shared->instance_id(), -1), "SetRecPayloadType(channel=%d, codec)", channel); WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_shared->instance_id(), -1), - "codec: plname=%s, plfreq=%d, pltype=%d, channels=%u, " + "codec: plname=%s, plfreq=%d, pltype=%d, channels=%" PRIuS ", " "pacsize=%d, rate=%d", codec.plname, codec.plfreq, codec.pltype, codec.channels, codec.pacsize, codec.rate); @@ -389,54 +377,6 @@ int VoECodecImpl::SetOpusDtx(int channel, bool enable_dtx) { return channelPtr->SetOpusDtx(enable_dtx); } -void VoECodecImpl::ACMToExternalCodecRepresentation(CodecInst& toInst, - const CodecInst& fromInst) { - toInst = fromInst; - if (STR_CASE_CMP(fromInst.plname, "SILK") == 0) { - if (fromInst.plfreq == 12000) { - if (fromInst.pacsize == 320) { - toInst.pacsize = 240; - } else if (fromInst.pacsize == 640) { - toInst.pacsize = 480; - } else if (fromInst.pacsize == 960) { - toInst.pacsize = 720; - } - } else if (fromInst.plfreq == 24000) { - if (fromInst.pacsize == 640) { - toInst.pacsize = 480; - } else if (fromInst.pacsize == 1280) { - toInst.pacsize = 960; - } else if (fromInst.pacsize == 1920) { - toInst.pacsize = 1440; - } - } - } -} - -void VoECodecImpl::ExternalToACMCodecRepresentation(CodecInst& toInst, - const CodecInst& fromInst) { - toInst = fromInst; - if (STR_CASE_CMP(fromInst.plname, "SILK") == 0) { - if (fromInst.plfreq == 12000) { - if (fromInst.pacsize == 240) { - toInst.pacsize = 320; - } else if (fromInst.pacsize == 480) { - toInst.pacsize = 640; - } else if (fromInst.pacsize == 720) { - toInst.pacsize = 960; - } - } else if (fromInst.plfreq == 24000) { - if (fromInst.pacsize == 480) { - toInst.pacsize = 640; - } else if (fromInst.pacsize == 960) { - toInst.pacsize = 1280; - } else if (fromInst.pacsize == 1440) { - toInst.pacsize = 1920; - } - } - } -} - RtcEventLog* VoECodecImpl::GetEventLog() { return _shared->channel_manager().GetEventLog(); } |