| Index: webrtc/modules/audio_coding/main/acm2/audio_coding_module.cc
|
| diff --git a/webrtc/modules/audio_coding/main/acm2/audio_coding_module.cc b/webrtc/modules/audio_coding/main/acm2/audio_coding_module.cc
|
| index 8a0980e6190f3d6526a594a83c6d465937ee14a3..7754a9c375b772b0513ef537994d72a448e3e533 100644
|
| --- a/webrtc/modules/audio_coding/main/acm2/audio_coding_module.cc
|
| +++ b/webrtc/modules/audio_coding/main/acm2/audio_coding_module.cc
|
| @@ -12,8 +12,8 @@
|
|
|
| #include "webrtc/base/checks.h"
|
| #include "webrtc/common_types.h"
|
| -#include "webrtc/modules/audio_coding/main/acm2/acm_codec_database.h"
|
| #include "webrtc/modules/audio_coding/main/acm2/audio_coding_module_impl.h"
|
| +#include "webrtc/modules/audio_coding/main/acm2/rent_a_codec.h"
|
| #include "webrtc/system_wrappers/interface/clock.h"
|
| #include "webrtc/system_wrappers/interface/trace.h"
|
|
|
| @@ -38,29 +38,32 @@ AudioCodingModule* AudioCodingModule::Create(const Config& config) {
|
| return new acm2::AudioCodingModuleImpl(config);
|
| }
|
|
|
| -// Get number of supported codecs
|
| int AudioCodingModule::NumberOfCodecs() {
|
| - return acm2::ACMCodecDB::kNumCodecs;
|
| + return static_cast<int>(acm2::RentACodec::NumberOfCodecs());
|
| }
|
|
|
| -// Get supported codec parameters with id
|
| int AudioCodingModule::Codec(int list_id, CodecInst* codec) {
|
| - // Get the codec settings for the codec with the given list ID
|
| - return acm2::ACMCodecDB::Codec(list_id, codec);
|
| + auto codec_id = acm2::RentACodec::CodecIdFromIndex(list_id);
|
| + if (!codec_id)
|
| + return -1;
|
| + auto ci = acm2::RentACodec::CodecInstById(*codec_id);
|
| + if (!ci)
|
| + return -1;
|
| + *codec = *ci;
|
| + return 0;
|
| }
|
|
|
| -// Get supported codec parameters with name, frequency and number of channels.
|
| int AudioCodingModule::Codec(const char* payload_name,
|
| CodecInst* codec,
|
| int sampling_freq_hz,
|
| int channels) {
|
| - int codec_id;
|
| -
|
| - // Get the id of the codec from the database.
|
| - codec_id = acm2::ACMCodecDB::CodecId(
|
| + rtc::Maybe<CodecInst> ci = acm2::RentACodec::CodecInstByParams(
|
| payload_name, sampling_freq_hz, channels);
|
| - if (codec_id < 0) {
|
| - // We couldn't find a matching codec, set the parameters to unacceptable
|
| + if (ci) {
|
| + *codec = *ci;
|
| + return 0;
|
| + } else {
|
| + // We couldn't find a matching codec, so set the parameters to unacceptable
|
| // values and return.
|
| codec->plname[0] = '\0';
|
| codec->pltype = -1;
|
| @@ -69,35 +72,26 @@ int AudioCodingModule::Codec(const char* payload_name,
|
| codec->plfreq = 0;
|
| return -1;
|
| }
|
| -
|
| - // Get default codec settings.
|
| - acm2::ACMCodecDB::Codec(codec_id, codec);
|
| -
|
| - // Keep the number of channels from the function call. For most codecs it
|
| - // will be the same value as in default codec settings, but not for all.
|
| - codec->channels = channels;
|
| -
|
| - return 0;
|
| }
|
|
|
| -// Get supported codec Index with name, frequency and number of channels.
|
| int AudioCodingModule::Codec(const char* payload_name,
|
| int sampling_freq_hz,
|
| int channels) {
|
| - return acm2::ACMCodecDB::CodecId(payload_name, sampling_freq_hz, channels);
|
| + rtc::Maybe<acm2::RentACodec::CodecId> ci = acm2::RentACodec::CodecIdByParams(
|
| + payload_name, sampling_freq_hz, channels);
|
| + if (!ci)
|
| + return -1;
|
| + rtc::Maybe<int> i = acm2::RentACodec::CodecIndexFromId(*ci);
|
| + return i ? *i : -1;
|
| }
|
|
|
| // Checks the validity of the parameters of the given codec
|
| bool AudioCodingModule::IsCodecValid(const CodecInst& codec) {
|
| - int codec_number = acm2::ACMCodecDB::CodecNumber(codec);
|
| -
|
| - if (codec_number < 0) {
|
| + bool valid = acm2::RentACodec::IsCodecValid(codec);
|
| + if (!valid)
|
| WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceAudioCoding, -1,
|
| "Invalid codec setting");
|
| - return false;
|
| - } else {
|
| - return true;
|
| - }
|
| + return valid;
|
| }
|
|
|
| } // namespace webrtc
|
|
|