Audio codec implementations: Take optional codec ID argument

None of the built-in codecs do anything with the ID, but callers will
soon require them to accept it.

Bug: webrtc:8941
Change-Id: I0eb77db82d72c7d34cff639fecb67c1e6ec421bf
Reviewed-on: https://webrtc-review.googlesource.com/58089
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Oskar Sundbom <ossu@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22259}
This commit is contained in:
Karl Wiberg
2018-03-01 15:13:27 +01:00
committed by Commit Bot
parent cb415b2a84
commit 17668ec4a5
33 changed files with 110 additions and 45 deletions

View File

@ -34,7 +34,8 @@ void AudioDecoderL16::AppendSupportedDecoders(
}
std::unique_ptr<AudioDecoder> AudioDecoderL16::MakeAudioDecoder(
const Config& config) {
const Config& config,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/) {
return config.IsOk() ? rtc::MakeUnique<AudioDecoderPcm16B>(
config.sample_rate_hz, config.num_channels)
: nullptr;

View File

@ -14,6 +14,7 @@
#include <memory>
#include <vector>
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_decoder.h"
#include "api/audio_codecs/audio_format.h"
#include "api/optional.h"
@ -36,7 +37,9 @@ struct AudioDecoderL16 {
};
static rtc::Optional<Config> SdpToConfig(const SdpAudioFormat& audio_format);
static void AppendSupportedDecoders(std::vector<AudioCodecSpec>* specs);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(const Config& config);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(
const Config& config,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt);
};
} // namespace webrtc

View File

@ -46,7 +46,8 @@ AudioCodecInfo AudioEncoderL16::QueryAudioEncoder(
std::unique_ptr<AudioEncoder> AudioEncoderL16::MakeAudioEncoder(
const AudioEncoderL16::Config& config,
int payload_type) {
int payload_type,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/) {
RTC_DCHECK(config.IsOk());
AudioEncoderPcm16B::Config c;
c.sample_rate_hz = config.sample_rate_hz;

View File

@ -14,6 +14,7 @@
#include <memory>
#include <vector>
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/audio_codecs/audio_format.h"
#include "api/optional.h"
@ -39,8 +40,10 @@ struct AudioEncoderL16 {
static rtc::Optional<Config> SdpToConfig(const SdpAudioFormat& audio_format);
static void AppendSupportedEncoders(std::vector<AudioCodecSpec>* specs);
static AudioCodecInfo QueryAudioEncoder(const Config& config);
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(const Config& config,
int payload_type);
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(
const Config& config,
int payload_type,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt);
};
} // namespace webrtc

View File

@ -39,8 +39,10 @@ struct NotAdvertised {
static void AppendSupportedDecoders(std::vector<AudioCodecSpec>* specs) {
// Don't advertise support for anything.
}
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(const Config& config) {
return T::MakeAudioDecoder(config);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(
const Config& config,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt) {
return T::MakeAudioDecoder(config, codec_pair_id);
}
};

View File

@ -42,9 +42,11 @@ struct NotAdvertised {
static AudioCodecInfo QueryAudioEncoder(const Config& config) {
return T::QueryAudioEncoder(config);
}
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(const Config& config,
int payload_type) {
return T::MakeAudioEncoder(config, payload_type);
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(
const Config& config,
int payload_type,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt) {
return T::MakeAudioEncoder(config, payload_type, codec_pair_id);
}
};

View File

@ -44,7 +44,8 @@ void AudioDecoderG711::AppendSupportedDecoders(
}
std::unique_ptr<AudioDecoder> AudioDecoderG711::MakeAudioDecoder(
const Config& config) {
const Config& config,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/) {
RTC_DCHECK(config.IsOk());
switch (config.type) {
case Config::Type::kPcmU:

View File

@ -14,6 +14,7 @@
#include <memory>
#include <vector>
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_decoder.h"
#include "api/audio_codecs/audio_format.h"
#include "api/optional.h"
@ -35,7 +36,9 @@ struct AudioDecoderG711 {
};
static rtc::Optional<Config> SdpToConfig(const SdpAudioFormat& audio_format);
static void AppendSupportedDecoders(std::vector<AudioCodecSpec>* specs);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(const Config& config);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(
const Config& config,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt);
};
} // namespace webrtc

View File

@ -61,7 +61,8 @@ AudioCodecInfo AudioEncoderG711::QueryAudioEncoder(const Config& config) {
std::unique_ptr<AudioEncoder> AudioEncoderG711::MakeAudioEncoder(
const Config& config,
int payload_type) {
int payload_type,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/) {
RTC_DCHECK(config.IsOk());
switch (config.type) {
case Config::Type::kPcmU: {

View File

@ -14,6 +14,7 @@
#include <memory>
#include <vector>
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/audio_codecs/audio_format.h"
#include "api/optional.h"
@ -39,8 +40,10 @@ struct AudioEncoderG711 {
const SdpAudioFormat& audio_format);
static void AppendSupportedEncoders(std::vector<AudioCodecSpec>* specs);
static AudioCodecInfo QueryAudioEncoder(const Config& config);
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(const Config& config,
int payload_type);
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(
const Config& config,
int payload_type,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt);
};
} // namespace webrtc

View File

@ -36,7 +36,8 @@ void AudioDecoderG722::AppendSupportedDecoders(
}
std::unique_ptr<AudioDecoder> AudioDecoderG722::MakeAudioDecoder(
Config config) {
Config config,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/) {
switch (config.num_channels) {
case 1:
return rtc::MakeUnique<AudioDecoderG722Impl>();

View File

@ -14,6 +14,7 @@
#include <memory>
#include <vector>
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_decoder.h"
#include "api/audio_codecs/audio_format.h"
#include "api/optional.h"
@ -31,7 +32,9 @@ struct AudioDecoderG722 {
};
static rtc::Optional<Config> SdpToConfig(const SdpAudioFormat& audio_format);
static void AppendSupportedDecoders(std::vector<AudioCodecSpec>* specs);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(Config config);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(
Config config,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt);
};
} // namespace webrtc

View File

@ -59,7 +59,8 @@ AudioCodecInfo AudioEncoderG722::QueryAudioEncoder(
std::unique_ptr<AudioEncoder> AudioEncoderG722::MakeAudioEncoder(
const AudioEncoderG722Config& config,
int payload_type) {
int payload_type,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/) {
RTC_DCHECK(config.IsOk());
return rtc::MakeUnique<AudioEncoderG722Impl>(config, payload_type);
}

View File

@ -14,6 +14,7 @@
#include <memory>
#include <vector>
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/audio_codecs/audio_format.h"
#include "api/audio_codecs/g722/audio_encoder_g722_config.h"
@ -33,7 +34,8 @@ struct AudioEncoderG722 {
static AudioCodecInfo QueryAudioEncoder(const AudioEncoderG722Config& config);
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(
const AudioEncoderG722Config& config,
int payload_type);
int payload_type,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt);
};
} // namespace webrtc

View File

@ -33,7 +33,8 @@ void AudioDecoderIlbc::AppendSupportedDecoders(
}
std::unique_ptr<AudioDecoder> AudioDecoderIlbc::MakeAudioDecoder(
Config config) {
Config config,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/) {
return rtc::MakeUnique<AudioDecoderIlbcImpl>();
}

View File

@ -14,6 +14,7 @@
#include <memory>
#include <vector>
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_decoder.h"
#include "api/audio_codecs/audio_format.h"
#include "api/optional.h"
@ -28,7 +29,9 @@ struct AudioDecoderIlbc {
struct Config {}; // Empty---no config values needed!
static rtc::Optional<Config> SdpToConfig(const SdpAudioFormat& audio_format);
static void AppendSupportedDecoders(std::vector<AudioCodecSpec>* specs);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(Config config);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(
Config config,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt);
};
} // namespace webrtc

View File

@ -73,7 +73,8 @@ AudioCodecInfo AudioEncoderIlbc::QueryAudioEncoder(
std::unique_ptr<AudioEncoder> AudioEncoderIlbc::MakeAudioEncoder(
const AudioEncoderIlbcConfig& config,
int payload_type) {
int payload_type,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/) {
RTC_DCHECK(config.IsOk());
return rtc::MakeUnique<AudioEncoderIlbcImpl>(config, payload_type);
}

View File

@ -14,6 +14,7 @@
#include <memory>
#include <vector>
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/audio_codecs/audio_format.h"
#include "api/audio_codecs/ilbc/audio_encoder_ilbc_config.h"
@ -33,7 +34,8 @@ struct AudioEncoderIlbc {
static AudioCodecInfo QueryAudioEncoder(const AudioEncoderIlbcConfig& config);
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(
const AudioEncoderIlbcConfig& config,
int payload_type);
int payload_type,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt);
};
} // namespace webrtc

View File

@ -30,7 +30,8 @@ void AudioDecoderIsacFix::AppendSupportedDecoders(
}
std::unique_ptr<AudioDecoder> AudioDecoderIsacFix::MakeAudioDecoder(
Config config) {
Config config,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/) {
return rtc::MakeUnique<AudioDecoderIsacFixImpl>(16000);
}

View File

@ -14,6 +14,7 @@
#include <memory>
#include <vector>
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_decoder.h"
#include "api/audio_codecs/audio_format.h"
#include "api/optional.h"
@ -28,7 +29,9 @@ struct AudioDecoderIsacFix {
struct Config {}; // Empty---no config values needed!
static rtc::Optional<Config> SdpToConfig(const SdpAudioFormat& audio_format);
static void AppendSupportedDecoders(std::vector<AudioCodecSpec>* specs);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(Config config);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(
Config config,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt);
};
} // namespace webrtc

View File

@ -36,7 +36,8 @@ void AudioDecoderIsacFloat::AppendSupportedDecoders(
}
std::unique_ptr<AudioDecoder> AudioDecoderIsacFloat::MakeAudioDecoder(
Config config) {
Config config,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/) {
RTC_DCHECK(config.IsOk());
return rtc::MakeUnique<AudioDecoderIsacFloatImpl>(config.sample_rate_hz);
}

View File

@ -14,6 +14,7 @@
#include <memory>
#include <vector>
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_decoder.h"
#include "api/audio_codecs/audio_format.h"
#include "api/optional.h"
@ -33,7 +34,9 @@ struct AudioDecoderIsacFloat {
};
static rtc::Optional<Config> SdpToConfig(const SdpAudioFormat& audio_format);
static void AppendSupportedDecoders(std::vector<AudioCodecSpec>* specs);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(Config config);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(
Config config,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt);
};
} // namespace webrtc

View File

@ -50,7 +50,8 @@ AudioCodecInfo AudioEncoderIsacFix::QueryAudioEncoder(
std::unique_ptr<AudioEncoder> AudioEncoderIsacFix::MakeAudioEncoder(
AudioEncoderIsacFix::Config config,
int payload_type) {
int payload_type,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/) {
RTC_DCHECK(config.IsOk());
AudioEncoderIsacFixImpl::Config c;
c.frame_size_ms = config.frame_size_ms;

View File

@ -14,6 +14,7 @@
#include <memory>
#include <vector>
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/audio_codecs/audio_format.h"
#include "api/optional.h"
@ -32,8 +33,10 @@ struct AudioEncoderIsacFix {
static rtc::Optional<Config> SdpToConfig(const SdpAudioFormat& audio_format);
static void AppendSupportedEncoders(std::vector<AudioCodecSpec>* specs);
static AudioCodecInfo QueryAudioEncoder(Config config);
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(Config config,
int payload_type);
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(
Config config,
int payload_type,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt);
};
} // namespace webrtc

View File

@ -61,7 +61,8 @@ AudioCodecInfo AudioEncoderIsacFloat::QueryAudioEncoder(
std::unique_ptr<AudioEncoder> AudioEncoderIsacFloat::MakeAudioEncoder(
const AudioEncoderIsacFloat::Config& config,
int payload_type) {
int payload_type,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/) {
RTC_DCHECK(config.IsOk());
AudioEncoderIsacFloatImpl::Config c;
c.sample_rate_hz = config.sample_rate_hz;

View File

@ -14,6 +14,7 @@
#include <memory>
#include <vector>
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/audio_codecs/audio_format.h"
#include "api/optional.h"
@ -37,8 +38,10 @@ struct AudioEncoderIsacFloat {
static rtc::Optional<Config> SdpToConfig(const SdpAudioFormat& audio_format);
static void AppendSupportedEncoders(std::vector<AudioCodecSpec>* specs);
static AudioCodecInfo QueryAudioEncoder(const Config& config);
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(const Config& config,
int payload_type);
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(
const Config& config,
int payload_type,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt);
};
} // namespace webrtc

View File

@ -55,7 +55,8 @@ void AudioDecoderOpus::AppendSupportedDecoders(
}
std::unique_ptr<AudioDecoder> AudioDecoderOpus::MakeAudioDecoder(
Config config) {
Config config,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/) {
return rtc::MakeUnique<AudioDecoderOpusImpl>(config.num_channels);
}

View File

@ -14,6 +14,7 @@
#include <memory>
#include <vector>
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_decoder.h"
#include "api/audio_codecs/audio_format.h"
#include "api/optional.h"
@ -30,7 +31,9 @@ struct AudioDecoderOpus {
};
static rtc::Optional<Config> SdpToConfig(const SdpAudioFormat& audio_format);
static void AppendSupportedDecoders(std::vector<AudioCodecSpec>* specs);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(Config config);
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(
Config config,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt);
};
} // namespace webrtc

View File

@ -31,7 +31,8 @@ AudioCodecInfo AudioEncoderOpus::QueryAudioEncoder(
std::unique_ptr<AudioEncoder> AudioEncoderOpus::MakeAudioEncoder(
const AudioEncoderOpusConfig& config,
int payload_type) {
int payload_type,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/) {
return AudioEncoderOpusImpl::MakeAudioEncoder(config, payload_type);
}

View File

@ -14,6 +14,7 @@
#include <memory>
#include <vector>
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/audio_codecs/audio_format.h"
#include "api/audio_codecs/opus/audio_encoder_opus_config.h"
@ -32,8 +33,9 @@ struct AudioEncoderOpus {
static void AppendSupportedEncoders(std::vector<AudioCodecSpec>* specs);
static AudioCodecInfo QueryAudioEncoder(const AudioEncoderOpusConfig& config);
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(
const AudioEncoderOpusConfig&,
int payload_type);
const AudioEncoderOpusConfig& config,
int payload_type,
rtc::Optional<AudioCodecPairId> codec_pair_id = rtc::nullopt);
};
} // namespace webrtc

View File

@ -60,7 +60,9 @@ struct AudioDecoderFakeApi {
return Params::CodecInfo();
}
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(const Config&) {
static std::unique_ptr<AudioDecoder> MakeAudioDecoder(
const Config&,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/ = rtc::nullopt) {
auto dec = rtc::MakeUnique<testing::StrictMock<MockAudioDecoder>>();
EXPECT_CALL(*dec, SampleRateHz())
.WillOnce(testing::Return(Params::CodecInfo().sample_rate_hz));

View File

@ -60,8 +60,10 @@ struct AudioEncoderFakeApi {
return Params::CodecInfo();
}
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(const Config&,
int payload_type) {
static std::unique_ptr<AudioEncoder> MakeAudioEncoder(
const Config&,
int payload_type,
rtc::Optional<AudioCodecPairId> /*codec_pair_id*/ = rtc::nullopt) {
auto enc = rtc::MakeUnique<testing::StrictMock<MockAudioEncoder>>();
EXPECT_CALL(*enc, SampleRateHz())
.WillOnce(testing::Return(Params::CodecInfo().sample_rate_hz));

View File

@ -12,6 +12,7 @@
#include "api/audio_codecs/L16/audio_decoder_L16.h"
#include "api/audio_codecs/L16/audio_encoder_L16.h"
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_decoder_factory_template.h"
#include "api/audio_codecs/audio_encoder_factory_template.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
@ -305,8 +306,10 @@ struct AudioEncoderUnicornSparklesRainbow {
}
static std::unique_ptr<webrtc::AudioEncoder> MakeAudioEncoder(
const Config& config,
int payload_type) {
return webrtc::AudioEncoderL16::MakeAudioEncoder(config, payload_type);
int payload_type,
rtc::Optional<webrtc::AudioCodecPairId> codec_pair_id = rtc::nullopt) {
return webrtc::AudioEncoderL16::MakeAudioEncoder(config, payload_type,
codec_pair_id);
}
};
@ -336,8 +339,9 @@ struct AudioDecoderUnicornSparklesRainbow {
}
}
static std::unique_ptr<webrtc::AudioDecoder> MakeAudioDecoder(
const Config& config) {
return webrtc::AudioDecoderL16::MakeAudioDecoder(config);
const Config& config,
rtc::Optional<webrtc::AudioCodecPairId> codec_pair_id = rtc::nullopt) {
return webrtc::AudioDecoderL16::MakeAudioDecoder(config, codec_pair_id);
}
};