| 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 |