OLD | NEW |
(Empty) | |
| 1 /* |
| 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. |
| 3 * |
| 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ |
| 10 |
| 11 #ifndef WEBRTC_AUDIO_FAKE_VOICE_ENGINE_H_ |
| 12 #define WEBRTC_AUDIO_FAKE_VOICE_ENGINE_H_ |
| 13 |
| 14 #include <vector> |
| 15 |
| 16 #include "testing/gtest/include/gtest/gtest.h" |
| 17 |
| 18 #include "webrtc/voice_engine/voice_engine_impl.h" |
| 19 |
| 20 namespace webrtc { |
| 21 namespace test { |
| 22 |
| 23 // NOTE: This class inherits from VoiceEngineImpl so that its clients will be |
| 24 // able to get the various interfaces as usual, via T::GetInterface(). |
| 25 class FakeVoiceEngine final : public VoiceEngineImpl { |
| 26 public: |
| 27 const int kSendChannelId = 1; |
| 28 const int kReceiveChannelId = 2; |
| 29 |
| 30 const int kRecvJitterBufferDelay = -7; |
| 31 const int kRecvPlayoutBufferDelay = 302; |
| 32 const unsigned int kRecvSpeechOutputLevel = 99; |
| 33 |
| 34 FakeVoiceEngine() : VoiceEngineImpl(new Config(), true) { |
| 35 // Increase ref count so this object isn't automatically deleted whenever |
| 36 // interfaces are Release():d. |
| 37 ++_ref_count; |
| 38 } |
| 39 ~FakeVoiceEngine() override { |
| 40 // Decrease ref count before base class d-tor is called; otherwise it will |
| 41 // trigger an assertion. |
| 42 --_ref_count; |
| 43 } |
| 44 |
| 45 const CallStatistics& GetRecvCallStats() const { |
| 46 static const CallStatistics kStats = { |
| 47 345, 678, 901, 234, -1, 0, 0, 567, 890, 123 |
| 48 }; |
| 49 return kStats; |
| 50 } |
| 51 |
| 52 const CodecInst& GetRecvRecCodecInst() const { |
| 53 static const CodecInst kStats = { |
| 54 123, "codec_name", 96000, -1, -1, -1 |
| 55 }; |
| 56 return kStats; |
| 57 } |
| 58 |
| 59 const NetworkStatistics& GetRecvNetworkStats() const { |
| 60 static const NetworkStatistics kStats = { |
| 61 123, 456, false, 0, 0, 789, 12, 345, 678, 901, -1, -1, -1, -1, -1, 0 |
| 62 }; |
| 63 return kStats; |
| 64 } |
| 65 |
| 66 const AudioDecodingCallStats& GetRecvAudioDecodingCallStats() const { |
| 67 static AudioDecodingCallStats stats; |
| 68 if (stats.calls_to_silence_generator == 0) { |
| 69 stats.calls_to_silence_generator = 234; |
| 70 stats.calls_to_neteq = 567; |
| 71 stats.decoded_normal = 890; |
| 72 stats.decoded_plc = 123; |
| 73 stats.decoded_cng = 456; |
| 74 stats.decoded_plc_cng = 789; |
| 75 } |
| 76 return stats; |
| 77 } |
| 78 |
| 79 // VoEBase |
| 80 int RegisterVoiceEngineObserver(VoiceEngineObserver& observer) override { |
| 81 return -1; |
| 82 } |
| 83 int DeRegisterVoiceEngineObserver() override { return -1; } |
| 84 int Init(AudioDeviceModule* external_adm = NULL, |
| 85 AudioProcessing* audioproc = NULL) override { return -1; } |
| 86 AudioProcessing* audio_processing() override { return nullptr; } |
| 87 int Terminate() override { return -1; } |
| 88 int CreateChannel() override { return -1; } |
| 89 int CreateChannel(const Config& config) override { return -1; } |
| 90 int DeleteChannel(int channel) override { return -1; } |
| 91 int StartReceive(int channel) override { return -1; } |
| 92 int StopReceive(int channel) override { return -1; } |
| 93 int StartPlayout(int channel) override { return -1; } |
| 94 int StopPlayout(int channel) override { return -1; } |
| 95 int StartSend(int channel) override { return -1; } |
| 96 int StopSend(int channel) override { return -1; } |
| 97 int GetVersion(char version[1024]) override { return -1; } |
| 98 int LastError() override { return -1; } |
| 99 AudioTransport* audio_transport() { return nullptr; } |
| 100 int AssociateSendChannel(int channel, int accociate_send_channel) override { |
| 101 return -1; |
| 102 } |
| 103 |
| 104 // VoECodec |
| 105 int NumOfCodecs() override { return -1; } |
| 106 int GetCodec(int index, CodecInst& codec) override { return -1; } |
| 107 int SetSendCodec(int channel, const CodecInst& codec) override { return -1; } |
| 108 int GetSendCodec(int channel, CodecInst& codec) override { return -1; } |
| 109 int SetBitRate(int channel, int bitrate_bps) override { return -1; } |
| 110 int GetRecCodec(int channel, CodecInst& codec) override { |
| 111 EXPECT_EQ(channel, kReceiveChannelId); |
| 112 codec = GetRecvRecCodecInst(); |
| 113 return 0; |
| 114 } |
| 115 int SetRecPayloadType(int channel, const CodecInst& codec) override { |
| 116 return -1; |
| 117 } |
| 118 int GetRecPayloadType(int channel, CodecInst& codec) override { return -1; } |
| 119 int SetSendCNPayloadType(int channel, int type, |
| 120 PayloadFrequencies frequency = kFreq16000Hz) override { return -1; } |
| 121 int SetVADStatus(int channel, |
| 122 bool enable, |
| 123 VadModes mode = kVadConventional, |
| 124 bool disableDTX = false) override { return -1; } |
| 125 int GetVADStatus(int channel, |
| 126 bool& enabled, |
| 127 VadModes& mode, |
| 128 bool& disabledDTX) override { return -1; } |
| 129 int SetOpusMaxPlaybackRate(int channel, int frequency_hz) override { |
| 130 return -1; |
| 131 } |
| 132 int SetOpusDtx(int channel, bool enable_dtx) override { return -1; } |
| 133 RtcEventLog* GetEventLog() override { return nullptr; } |
| 134 |
| 135 // VoEDtmf |
| 136 int SendTelephoneEvent(int channel, |
| 137 int eventCode, |
| 138 bool outOfBand = true, |
| 139 int lengthMs = 160, |
| 140 int attenuationDb = 10) override { return -1; } |
| 141 int SetSendTelephoneEventPayloadType(int channel, |
| 142 unsigned char type) override { |
| 143 return -1; |
| 144 } |
| 145 int GetSendTelephoneEventPayloadType(int channel, |
| 146 unsigned char& type) override { |
| 147 return -1; |
| 148 } |
| 149 int SetDtmfFeedbackStatus(bool enable, |
| 150 bool directFeedback = false) override { return -1; } |
| 151 int GetDtmfFeedbackStatus(bool& enabled, bool& directFeedback) override { |
| 152 return -1; |
| 153 } |
| 154 int PlayDtmfTone(int eventCode, |
| 155 int lengthMs = 200, |
| 156 int attenuationDb = 10) override { return -1; } |
| 157 |
| 158 // VoEExternalMedia |
| 159 int RegisterExternalMediaProcessing( |
| 160 int channel, |
| 161 ProcessingTypes type, |
| 162 VoEMediaProcess& processObject) override { return -1; } |
| 163 int DeRegisterExternalMediaProcessing(int channel, |
| 164 ProcessingTypes type) override { |
| 165 return -1; |
| 166 } |
| 167 int GetAudioFrame(int channel, |
| 168 int desired_sample_rate_hz, |
| 169 AudioFrame* frame) override { return -1; } |
| 170 int SetExternalMixing(int channel, bool enable) override { return -1; } |
| 171 |
| 172 // VoEFile |
| 173 int StartPlayingFileLocally( |
| 174 int channel, |
| 175 const char fileNameUTF8[1024], |
| 176 bool loop = false, |
| 177 FileFormats format = kFileFormatPcm16kHzFile, |
| 178 float volumeScaling = 1.0, |
| 179 int startPointMs = 0, |
| 180 int stopPointMs = 0) override { return -1; } |
| 181 int StartPlayingFileLocally( |
| 182 int channel, |
| 183 InStream* stream, |
| 184 FileFormats format = kFileFormatPcm16kHzFile, |
| 185 float volumeScaling = 1.0, |
| 186 int startPointMs = 0, |
| 187 int stopPointMs = 0) override { return -1; } |
| 188 int StopPlayingFileLocally(int channel) override { return -1; } |
| 189 int IsPlayingFileLocally(int channel) override { return -1; } |
| 190 int StartPlayingFileAsMicrophone( |
| 191 int channel, |
| 192 const char fileNameUTF8[1024], |
| 193 bool loop = false, |
| 194 bool mixWithMicrophone = false, |
| 195 FileFormats format = kFileFormatPcm16kHzFile, |
| 196 float volumeScaling = 1.0) override { return -1; } |
| 197 int StartPlayingFileAsMicrophone( |
| 198 int channel, |
| 199 InStream* stream, |
| 200 bool mixWithMicrophone = false, |
| 201 FileFormats format = kFileFormatPcm16kHzFile, |
| 202 float volumeScaling = 1.0) override { return -1; } |
| 203 int StopPlayingFileAsMicrophone(int channel) override { return -1; } |
| 204 int IsPlayingFileAsMicrophone(int channel) override { return -1; } |
| 205 int StartRecordingPlayout(int channel, |
| 206 const char* fileNameUTF8, |
| 207 CodecInst* compression = NULL, |
| 208 int maxSizeBytes = -1) override { return -1; } |
| 209 int StopRecordingPlayout(int channel) override { return -1; } |
| 210 int StartRecordingPlayout(int channel, |
| 211 OutStream* stream, |
| 212 CodecInst* compression = NULL) override { |
| 213 return -1; |
| 214 } |
| 215 int StartRecordingMicrophone(const char* fileNameUTF8, |
| 216 CodecInst* compression = NULL, |
| 217 int maxSizeBytes = -1) override { return -1; } |
| 218 int StartRecordingMicrophone(OutStream* stream, |
| 219 CodecInst* compression = NULL) override { |
| 220 return -1; |
| 221 } |
| 222 int StopRecordingMicrophone() override { return -1; } |
| 223 |
| 224 // VoEHardware |
| 225 int GetNumOfRecordingDevices(int& devices) override { return -1; } |
| 226 |
| 227 // Gets the number of audio devices available for playout. |
| 228 int GetNumOfPlayoutDevices(int& devices) override { return -1; } |
| 229 |
| 230 // Gets the name of a specific recording device given by an |index|. |
| 231 // On Windows Vista/7, it also retrieves an additional unique ID |
| 232 // (GUID) for the recording device. |
| 233 int GetRecordingDeviceName(int index, |
| 234 char strNameUTF8[128], |
| 235 char strGuidUTF8[128]) override { return -1; } |
| 236 |
| 237 // Gets the name of a specific playout device given by an |index|. |
| 238 // On Windows Vista/7, it also retrieves an additional unique ID |
| 239 // (GUID) for the playout device. |
| 240 int GetPlayoutDeviceName(int index, |
| 241 char strNameUTF8[128], |
| 242 char strGuidUTF8[128]) override { return -1; } |
| 243 |
| 244 // Sets the audio device used for recording. |
| 245 int SetRecordingDevice( |
| 246 int index, |
| 247 StereoChannel recordingChannel = kStereoBoth) override { return -1; } |
| 248 |
| 249 // Sets the audio device used for playout. |
| 250 int SetPlayoutDevice(int index) override { return -1; } |
| 251 |
| 252 // Sets the type of audio device layer to use. |
| 253 int SetAudioDeviceLayer(AudioLayers audioLayer) override { return -1; } |
| 254 |
| 255 // Gets the currently used (active) audio device layer. |
| 256 int GetAudioDeviceLayer(AudioLayers& audioLayer) override { return -1; } |
| 257 |
| 258 // Native sample rate controls (samples/sec) |
| 259 int SetRecordingSampleRate(unsigned int samples_per_sec) override { |
| 260 return -1; |
| 261 } |
| 262 int RecordingSampleRate(unsigned int* samples_per_sec) const override { |
| 263 return -1; |
| 264 } |
| 265 int SetPlayoutSampleRate(unsigned int samples_per_sec) override { |
| 266 return -1; |
| 267 } |
| 268 int PlayoutSampleRate(unsigned int* samples_per_sec) const override { |
| 269 return -1; |
| 270 } |
| 271 |
| 272 // Queries and controls platform audio effects on Android devices. |
| 273 bool BuiltInAECIsAvailable() const override { return false; } |
| 274 int EnableBuiltInAEC(bool enable) override { return -1; } |
| 275 bool BuiltInAGCIsAvailable() const override { return false; } |
| 276 int EnableBuiltInAGC(bool enable) override { return -1; } |
| 277 bool BuiltInNSIsAvailable() const override { return false; } |
| 278 int EnableBuiltInNS(bool enable) override { return -1; } |
| 279 |
| 280 // VoENetwork |
| 281 int RegisterExternalTransport(int channel, Transport& transport) override { |
| 282 return -1; |
| 283 } |
| 284 int DeRegisterExternalTransport(int channel) override { return -1; } |
| 285 int ReceivedRTPPacket(int channel, |
| 286 const void* data, |
| 287 size_t length) override { return -1; } |
| 288 int ReceivedRTPPacket(int channel, |
| 289 const void* data, |
| 290 size_t length, |
| 291 const PacketTime& packet_time) override { return -1; } |
| 292 int ReceivedRTCPPacket(int channel, |
| 293 const void* data, |
| 294 size_t length) { return -1; } |
| 295 |
| 296 // VoENetEqStats |
| 297 int GetNetworkStatistics(int channel, NetworkStatistics& stats) override { |
| 298 EXPECT_EQ(channel, kReceiveChannelId); |
| 299 stats = GetRecvNetworkStats(); |
| 300 return 0; |
| 301 } |
| 302 int GetDecodingCallStatistics(int channel, |
| 303 AudioDecodingCallStats* stats) const override { |
| 304 EXPECT_EQ(channel, kReceiveChannelId); |
| 305 EXPECT_NE(nullptr, stats); |
| 306 *stats = GetRecvAudioDecodingCallStats(); |
| 307 return 0; |
| 308 } |
| 309 |
| 310 // VoERTP_RTCP |
| 311 int SetLocalSSRC(int channel, unsigned int ssrc) override { return -1; } |
| 312 int GetLocalSSRC(int channel, unsigned int& ssrc) override { return -1; } |
| 313 int GetRemoteSSRC(int channel, unsigned int& ssrc) override { |
| 314 EXPECT_EQ(channel, kReceiveChannelId); |
| 315 ssrc = 0; |
| 316 return 0; |
| 317 } |
| 318 int SetSendAudioLevelIndicationStatus(int channel, |
| 319 bool enable, |
| 320 unsigned char id = 1) override { |
| 321 return -1; |
| 322 } |
| 323 int SetSendAbsoluteSenderTimeStatus(int channel, |
| 324 bool enable, |
| 325 unsigned char id) override { return -1; } |
| 326 int SetReceiveAbsoluteSenderTimeStatus(int channel, |
| 327 bool enable, |
| 328 unsigned char id) override { |
| 329 return -1; |
| 330 } |
| 331 int SetRTCPStatus(int channel, bool enable) override { return -1; } |
| 332 int GetRTCPStatus(int channel, bool& enabled) override { return -1; } |
| 333 int SetRTCP_CNAME(int channel, const char cName[256]) override { return -1; } |
| 334 int GetRTCP_CNAME(int channel, char cName[256]) { return -1; } |
| 335 int GetRemoteRTCP_CNAME(int channel, char cName[256]) override { return -1; } |
| 336 int GetRemoteRTCPData(int channel, |
| 337 unsigned int& NTPHigh, |
| 338 unsigned int& NTPLow, |
| 339 unsigned int& timestamp, |
| 340 unsigned int& playoutTimestamp, |
| 341 unsigned int* jitter = NULL, |
| 342 unsigned short* fractionLost = NULL) override { |
| 343 return -1; |
| 344 } |
| 345 int GetRTPStatistics(int channel, |
| 346 unsigned int& averageJitterMs, |
| 347 unsigned int& maxJitterMs, |
| 348 unsigned int& discardedPackets) override { return -1; } |
| 349 int GetRTCPStatistics(int channel, CallStatistics& stats) override { |
| 350 EXPECT_EQ(channel, kReceiveChannelId); |
| 351 stats = GetRecvCallStats(); |
| 352 return 0; |
| 353 } |
| 354 int GetRemoteRTCPReportBlocks( |
| 355 int channel, |
| 356 std::vector<ReportBlock>* receive_blocks) override { return -1; } |
| 357 int SetNACKStatus(int channel, bool enable, int maxNoPackets) override { |
| 358 return -1; |
| 359 } |
| 360 |
| 361 // VoEVideoSync |
| 362 int GetPlayoutBufferSize(int& buffer_ms) override { return -1; } |
| 363 int SetMinimumPlayoutDelay(int channel, int delay_ms) override { return -1; } |
| 364 int SetInitialPlayoutDelay(int channel, int delay_ms) override { return -1; } |
| 365 int GetDelayEstimate(int channel, |
| 366 int* jitter_buffer_delay_ms, |
| 367 int* playout_buffer_delay_ms) override { |
| 368 EXPECT_EQ(channel, kReceiveChannelId); |
| 369 *jitter_buffer_delay_ms = kRecvJitterBufferDelay; |
| 370 *playout_buffer_delay_ms = kRecvPlayoutBufferDelay; |
| 371 return 0; |
| 372 } |
| 373 int GetLeastRequiredDelayMs(int channel) const override { return -1; } |
| 374 int SetInitTimestamp(int channel, unsigned int timestamp) override { |
| 375 return -1; |
| 376 } |
| 377 int SetInitSequenceNumber(int channel, short sequenceNumber) override { |
| 378 return -1; |
| 379 } |
| 380 int GetPlayoutTimestamp(int channel, unsigned int& timestamp) override { |
| 381 return -1; |
| 382 } |
| 383 int GetRtpRtcp(int channel, |
| 384 RtpRtcp** rtpRtcpModule, |
| 385 RtpReceiver** rtp_receiver) override { return -1; } |
| 386 |
| 387 // VoEVolumeControl |
| 388 int SetSpeakerVolume(unsigned int volume) override { return -1; } |
| 389 int GetSpeakerVolume(unsigned int& volume) override { return -1; } |
| 390 int SetMicVolume(unsigned int volume) override { return -1; } |
| 391 int GetMicVolume(unsigned int& volume) override { return -1; } |
| 392 int SetInputMute(int channel, bool enable) override { return -1; } |
| 393 int GetInputMute(int channel, bool& enabled) override { return -1; } |
| 394 int GetSpeechInputLevel(unsigned int& level) override { return -1; } |
| 395 int GetSpeechOutputLevel(int channel, unsigned int& level) override { |
| 396 return -1; |
| 397 } |
| 398 int GetSpeechInputLevelFullRange(unsigned int& level) override { return -1; } |
| 399 int GetSpeechOutputLevelFullRange(int channel, |
| 400 unsigned int& level) override { |
| 401 EXPECT_EQ(channel, kReceiveChannelId); |
| 402 level = kRecvSpeechOutputLevel; |
| 403 return 0; |
| 404 } |
| 405 int SetChannelOutputVolumeScaling(int channel, float scaling) override { |
| 406 return -1; |
| 407 } |
| 408 int GetChannelOutputVolumeScaling(int channel, float& scaling) override { |
| 409 return -1; |
| 410 } |
| 411 int SetOutputVolumePan(int channel, float left, float right) override { |
| 412 return -1; |
| 413 } |
| 414 int GetOutputVolumePan(int channel, float& left, float& right) override { |
| 415 return -1; |
| 416 } |
| 417 }; |
| 418 } // namespace test |
| 419 } // namespace webrtc |
| 420 |
| 421 #endif // WEBRTC_AUDIO_FAKE_VOICE_ENGINE_H_ |
OLD | NEW |