From f09e09c7eef8722cc6902069a1ab7deb8948f98b Mon Sep 17 00:00:00 2001 From: Jelena Marusic Date: Tue, 26 May 2015 10:24:55 +0200 Subject: [PATCH] VoE: Remove unused interfaces BUG=4690 I have removed methods in VoE interfaces that were marked to be removed. I have removed them also in fake and mock implementations. I have also updated the callers in various ways: 1. Project win_test had some calls to the removed methods, but it turned out that the project is not used anymore, so I removed it entirely. 2. There were some calls to removed methods in jni methods. I have removed couple of jni methods as now they seem to do nothing. 3. With the remaining callers I just removed the calls to removed methods. R=pbos@webrtc.org Review URL: https://webrtc-codereview.appspot.com/53519004 Cr-Commit-Position: refs/heads/master@{#9281} --- talk/media/webrtc/fakewebrtcvoiceengine.h | 72 - .../media_demo/jni/voice_engine_jni.cc | 6 - webrtc/voice_engine/include/voe_base.h | 13 +- webrtc/voice_engine/include/voe_codec.h | 13 - webrtc/voice_engine/include/voe_dtmf.h | 6 - .../voice_engine/include/voe_external_media.h | 16 - webrtc/voice_engine/include/voe_file.h | 43 - webrtc/voice_engine/include/voe_hardware.h | 14 - webrtc/voice_engine/include/voe_rtp_rtcp.h | 31 - .../voice_engine/include/voe_volume_control.h | 6 - .../mock/fake_voe_external_media.h | 8 - .../mock/mock_voe_volume_control.h | 4 - .../android/android_test/jni/android_test.cc | 38 - .../org_webrtc_voiceengine_test_AndroidTest.h | 8 - .../fixtures/after_initialization_fixture.cc | 5 - .../hardware_before_streaming_test.cc | 8 - webrtc/voice_engine/test/win_test/Resource.h | 241 -- webrtc/voice_engine/test/win_test/WinTest.aps | Bin 84160 -> 0 bytes webrtc/voice_engine/test/win_test/WinTest.cc | 75 - webrtc/voice_engine/test/win_test/WinTest.h | 40 - webrtc/voice_engine/test/win_test/WinTest.rc | 394 -- .../voice_engine/test/win_test/WinTestDlg.cc | 3367 ----------------- .../voice_engine/test/win_test/WinTestDlg.h | 274 -- .../test/win_test/res/WinTest.ico | Bin 21630 -> 0 bytes .../test/win_test/res/WinTest.rc2 | 13 - webrtc/voice_engine/test/win_test/stdafx.cc | 15 - webrtc/voice_engine/test/win_test/stdafx.h | 71 - webrtc/voice_engine/voice_engine.gyp | 46 - 28 files changed, 1 insertion(+), 4826 deletions(-) delete mode 100644 webrtc/voice_engine/test/win_test/Resource.h delete mode 100644 webrtc/voice_engine/test/win_test/WinTest.aps delete mode 100644 webrtc/voice_engine/test/win_test/WinTest.cc delete mode 100644 webrtc/voice_engine/test/win_test/WinTest.h delete mode 100644 webrtc/voice_engine/test/win_test/WinTest.rc delete mode 100644 webrtc/voice_engine/test/win_test/WinTestDlg.cc delete mode 100644 webrtc/voice_engine/test/win_test/WinTestDlg.h delete mode 100644 webrtc/voice_engine/test/win_test/res/WinTest.ico delete mode 100644 webrtc/voice_engine/test/win_test/res/WinTest.rc2 delete mode 100644 webrtc/voice_engine/test/win_test/stdafx.cc delete mode 100644 webrtc/voice_engine/test/win_test/stdafx.h diff --git a/talk/media/webrtc/fakewebrtcvoiceengine.h b/talk/media/webrtc/fakewebrtcvoiceengine.h index 910889f4b9..673e3e0aca 100644 --- a/talk/media/webrtc/fakewebrtcvoiceengine.h +++ b/talk/media/webrtc/fakewebrtcvoiceengine.h @@ -512,8 +512,6 @@ class FakeWebRtcVoiceEngine } WEBRTC_STUB(GetVersion, (char version[1024])); WEBRTC_STUB(LastError, ()); - WEBRTC_STUB(SetOnHoldStatus, (int, bool, webrtc::OnHoldModes)); - WEBRTC_STUB(GetOnHoldStatus, (int, bool&, webrtc::OnHoldModes&)); WEBRTC_FUNC(AssociateSendChannel, (int channel, int accociate_send_channel)) { WEBRTC_CHECK_CHANNEL(channel); @@ -577,14 +575,6 @@ class FakeWebRtcVoiceEngine } return -1; } - WEBRTC_STUB(SetAMREncFormat, (int channel, webrtc::AmrMode mode)); - WEBRTC_STUB(SetAMRDecFormat, (int channel, webrtc::AmrMode mode)); - WEBRTC_STUB(SetAMRWbEncFormat, (int channel, webrtc::AmrMode mode)); - WEBRTC_STUB(SetAMRWbDecFormat, (int channel, webrtc::AmrMode mode)); - WEBRTC_STUB(SetISACInitTargetRate, (int channel, int rateBps, - bool useFixedFrameSize)); - WEBRTC_STUB(SetISACMaxRate, (int channel, int rateBps)); - WEBRTC_STUB(SetISACMaxPayloadSize, (int channel, int sizeBytes)); WEBRTC_FUNC(SetRecPayloadType, (int channel, const webrtc::CodecInst& codec)) { WEBRTC_CHECK_CHANNEL(channel); @@ -722,9 +712,6 @@ class FakeWebRtcVoiceEngine dtmf_info_.dtmf_length_ms = length_ms; return 0; } - WEBRTC_STUB(StartPlayingDtmfTone, - (int eventCode, int attenuationDb = 10)); - WEBRTC_STUB(StopPlayingDtmfTone, ()); // webrtc::VoEFile WEBRTC_FUNC(StartPlayingFileLocally, (int channel, const char* fileNameUTF8, @@ -752,7 +739,6 @@ class FakeWebRtcVoiceEngine WEBRTC_CHECK_CHANNEL(channel); return (channels_[channel]->file) ? 1 : 0; } - WEBRTC_STUB(ScaleLocalFilePlayout, (int channel, float scale)); WEBRTC_STUB(StartPlayingFileAsMicrophone, (int channel, const char* fileNameUTF8, bool loop, @@ -766,7 +752,6 @@ class FakeWebRtcVoiceEngine float volumeScaling)); WEBRTC_STUB(StopPlayingFileAsMicrophone, (int channel)); WEBRTC_STUB(IsPlayingFileAsMicrophone, (int channel)); - WEBRTC_STUB(ScaleFileAsMicrophonePlayout, (int channel, float scale)); WEBRTC_STUB(StartRecordingPlayout, (int channel, const char* fileNameUTF8, webrtc::CodecInst* compression, int maxSizeBytes)); @@ -797,30 +782,8 @@ class FakeWebRtcVoiceEngine recording_microphone_ = false; return 0; } - WEBRTC_STUB(ConvertPCMToWAV, (const char* fileNameInUTF8, - const char* fileNameOutUTF8)); - WEBRTC_STUB(ConvertPCMToWAV, (webrtc::InStream* streamIn, - webrtc::OutStream* streamOut)); - WEBRTC_STUB(ConvertWAVToPCM, (const char* fileNameInUTF8, - const char* fileNameOutUTF8)); - WEBRTC_STUB(ConvertWAVToPCM, (webrtc::InStream* streamIn, - webrtc::OutStream* streamOut)); - WEBRTC_STUB(ConvertPCMToCompressed, (const char* fileNameInUTF8, - const char* fileNameOutUTF8, - webrtc::CodecInst* compression)); - WEBRTC_STUB(ConvertPCMToCompressed, (webrtc::InStream* streamIn, - webrtc::OutStream* streamOut, - webrtc::CodecInst* compression)); - WEBRTC_STUB(ConvertCompressedToPCM, (const char* fileNameInUTF8, - const char* fileNameOutUTF8)); - WEBRTC_STUB(ConvertCompressedToPCM, (webrtc::InStream* streamIn, - webrtc::OutStream* streamOut)); - WEBRTC_STUB(GetFileDuration, (const char* fileNameUTF8, int& durationMs, - webrtc::FileFormats format)); - WEBRTC_STUB(GetPlaybackPosition, (int channel, int& positionMs)); // webrtc::VoEHardware - WEBRTC_STUB(GetCPULoad, (int&)); WEBRTC_FUNC(GetNumOfRecordingDevices, (int& num)) { return GetNumDevices(num); } @@ -837,12 +800,6 @@ class FakeWebRtcVoiceEngine WEBRTC_STUB(SetPlayoutDevice, (int)); WEBRTC_STUB(SetAudioDeviceLayer, (webrtc::AudioLayers)); WEBRTC_STUB(GetAudioDeviceLayer, (webrtc::AudioLayers&)); - WEBRTC_STUB(GetPlayoutDeviceStatus, (bool&)); - WEBRTC_STUB(GetRecordingDeviceStatus, (bool&)); - WEBRTC_STUB(ResetAudioDevice, ()); - WEBRTC_STUB(AudioDeviceControl, (unsigned int, unsigned int, unsigned int)); - WEBRTC_STUB(SetLoudspeakerStatus, (bool enable)); - WEBRTC_STUB(GetLoudspeakerStatus, (bool& enabled)); WEBRTC_FUNC(SetRecordingSampleRate, (unsigned int samples_per_sec)) { recording_sample_rate_ = samples_per_sec; return 0; @@ -860,7 +817,6 @@ class FakeWebRtcVoiceEngine return 0; } WEBRTC_STUB(EnableBuiltInAEC, (bool enable)); - virtual bool BuiltInAECIsEnabled() const { return true; } virtual bool BuiltInAECIsAvailable() const { return false; } // webrtc::VoENetEqStats @@ -912,9 +868,6 @@ class FakeWebRtcVoiceEngine size_t length)); // webrtc::VoERTP_RTCP - WEBRTC_STUB(RegisterRTPObserver, (int channel, - webrtc::VoERTPObserver& observer)); - WEBRTC_STUB(DeRegisterRTPObserver, (int channel)); WEBRTC_FUNC(SetLocalSSRC, (int channel, unsigned int ssrc)) { WEBRTC_CHECK_CHANNEL(channel); channels_[channel]->send_ssrc = ssrc; @@ -955,7 +908,6 @@ class FakeWebRtcVoiceEngine return 0; } - WEBRTC_STUB(GetRemoteCSRCs, (int channel, unsigned int arrCSRC[15])); WEBRTC_STUB(SetRTCPStatus, (int channel, bool enable)); WEBRTC_STUB(GetRTCPStatus, (int channel, bool& enabled)); WEBRTC_STUB(SetRTCP_CNAME, (int channel, const char cname[256])); @@ -967,8 +919,6 @@ class FakeWebRtcVoiceEngine unsigned int& playoutTimestamp, unsigned int* jitter, unsigned short* fractionLost)); - WEBRTC_STUB(GetRemoteRTCPSenderInfo, (int channel, - webrtc::SenderInfo* sender_info)); WEBRTC_FUNC(GetRemoteRTCPReportBlocks, (int channel, std::vector* receive_blocks)) { WEBRTC_CHECK_CHANNEL(channel); @@ -986,11 +936,6 @@ class FakeWebRtcVoiceEngine } return 0; } - WEBRTC_STUB(SendApplicationDefinedRTCPPacket, (int channel, - unsigned char subType, - unsigned int name, - const char* data, - unsigned short dataLength)); WEBRTC_STUB(GetRTPStatistics, (int channel, unsigned int& averageJitterMs, unsigned int& maxJitterMs, unsigned int& discardedPackets)); @@ -1035,11 +980,6 @@ class FakeWebRtcVoiceEngine channels_[channel]->nack_max_packets = maxNoPackets; return 0; } - WEBRTC_STUB(InsertExtraRTPPacket, (int channel, unsigned char payloadType, - bool markerBit, const char* payloadData, - unsigned short payloadSize)); - WEBRTC_STUB(GetLastRemoteTimeStamp, (int channel, - uint32_t* lastRemoteTimeStamp)); // webrtc::VoEVideoSync WEBRTC_STUB(GetPlayoutBufferSize, (int& bufferMs)); @@ -1056,14 +996,10 @@ class FakeWebRtcVoiceEngine // webrtc::VoEVolumeControl WEBRTC_STUB(SetSpeakerVolume, (unsigned int)); WEBRTC_STUB(GetSpeakerVolume, (unsigned int&)); - WEBRTC_STUB(SetSystemOutputMute, (bool)); - WEBRTC_STUB(GetSystemOutputMute, (bool&)); WEBRTC_STUB(SetMicVolume, (unsigned int)); WEBRTC_STUB(GetMicVolume, (unsigned int&)); WEBRTC_STUB(SetInputMute, (int, bool)); WEBRTC_STUB(GetInputMute, (int, bool&)); - WEBRTC_STUB(SetSystemInputMute, (bool)); - WEBRTC_STUB(GetSystemInputMute, (bool&)); WEBRTC_STUB(GetSpeechInputLevel, (unsigned int&)); WEBRTC_STUB(GetSpeechOutputLevel, (int, unsigned int&)); WEBRTC_STUB(GetSpeechInputLevelFullRange, (unsigned int&)); @@ -1249,14 +1185,6 @@ class FakeWebRtcVoiceEngine media_processor_ = NULL; return 0; } - WEBRTC_STUB(SetExternalRecordingStatus, (bool enable)); - WEBRTC_STUB(SetExternalPlayoutStatus, (bool enable)); - WEBRTC_STUB(ExternalRecordingInsertData, - (const int16_t speechData10ms[], int lengthSamples, - int samplingFreqHz, int current_delay_ms)); - WEBRTC_STUB(ExternalPlayoutGetData, - (int16_t speechData10ms[], int samplingFreqHz, - int current_delay_ms, int& lengthSamples)); WEBRTC_STUB(GetAudioFrame, (int channel, int desired_sample_rate_hz, webrtc::AudioFrame* frame)); WEBRTC_STUB(SetExternalMixing, (int channel, bool enable)); diff --git a/webrtc/examples/android/media_demo/jni/voice_engine_jni.cc b/webrtc/examples/android/media_demo/jni/voice_engine_jni.cc index bb5eeedc87..79d6cbc4b7 100644 --- a/webrtc/examples/android/media_demo/jni/voice_engine_jni.cc +++ b/webrtc/examples/android/media_demo/jni/voice_engine_jni.cc @@ -273,12 +273,6 @@ JOWW(jint, VoiceEngine_setSpeakerVolume)(JNIEnv* jni, jobject j_voe, return voe_data->volume->SetSpeakerVolume(level); } -JOWW(jint, VoiceEngine_setLoudspeakerStatus)(JNIEnv* jni, jobject j_voe, - jboolean enable) { - VoiceEngineData* voe_data = GetVoiceEngineData(jni, j_voe); - return voe_data->hardware->SetLoudspeakerStatus(enable); -} - JOWW(jint, VoiceEngine_startPlayingFileLocally)(JNIEnv* jni, jobject j_voe, jint channel, jstring j_filename, diff --git a/webrtc/voice_engine/include/voe_base.h b/webrtc/voice_engine/include/voe_base.h index 1d8c7f48dd..c82ad3dc3a 100644 --- a/webrtc/voice_engine/include/voe_base.h +++ b/webrtc/voice_engine/include/voe_base.h @@ -181,18 +181,7 @@ class WEBRTC_DLLEXPORT VoEBase { // Used for obtaining RTT for a receive-only channel. // One should be careful not to crate a circular association, e.g., // 1 <- 2 <- 1. - virtual int AssociateSendChannel(int channel, int accociate_send_channel) = - 0; - - // To be removed. Don't use. - virtual int SetOnHoldStatus(int channel, - bool enable, - OnHoldModes mode = kHoldSendAndPlay) { - return -1; - } - virtual int GetOnHoldStatus(int channel, bool& enabled, OnHoldModes& mode) { - return -1; - } + virtual int AssociateSendChannel(int channel, int accociate_send_channel) = 0; protected: VoEBase() {} diff --git a/webrtc/voice_engine/include/voe_codec.h b/webrtc/voice_engine/include/voe_codec.h index dc3b88cb8f..5d94ac2736 100644 --- a/webrtc/voice_engine/include/voe_codec.h +++ b/webrtc/voice_engine/include/voe_codec.h @@ -131,19 +131,6 @@ class WEBRTC_DLLEXPORT VoECodec { // success, and -1 if failed. virtual int SetOpusDtx(int channel, bool enable_dtx) = 0; - // Don't use. To be removed. - virtual int SetAMREncFormat(int channel, AmrMode mode) { return -1; } - virtual int SetAMRDecFormat(int channel, AmrMode mode) { return -1; } - virtual int SetAMRWbEncFormat(int channel, AmrMode mode) { return -1; } - virtual int SetAMRWbDecFormat(int channel, AmrMode mode) { return -1; } - virtual int SetISACInitTargetRate(int channel, - int rateBps, - bool useFixedFrameSize = false) { - return -1; - } - virtual int SetISACMaxRate(int channel, int rateBps) { return -1; } - virtual int SetISACMaxPayloadSize(int channel, int sizeBytes) { return -1; } - protected: VoECodec() {} virtual ~VoECodec() {} diff --git a/webrtc/voice_engine/include/voe_dtmf.h b/webrtc/voice_engine/include/voe_dtmf.h index 64d758d35e..c8ef5d0d77 100644 --- a/webrtc/voice_engine/include/voe_dtmf.h +++ b/webrtc/voice_engine/include/voe_dtmf.h @@ -82,12 +82,6 @@ class WEBRTC_DLLEXPORT VoEDtmf { int lengthMs = 200, int attenuationDb = 10) = 0; - // To be removed. Don't use. - virtual int StartPlayingDtmfTone(int eventCode, int attenuationDb = 10) { - return -1; - } - virtual int StopPlayingDtmfTone() { return -1; } - protected: VoEDtmf() {} virtual ~VoEDtmf() {} diff --git a/webrtc/voice_engine/include/voe_external_media.h b/webrtc/voice_engine/include/voe_external_media.h index 48c564bd8c..6185540249 100644 --- a/webrtc/voice_engine/include/voe_external_media.h +++ b/webrtc/voice_engine/include/voe_external_media.h @@ -75,22 +75,6 @@ class WEBRTC_DLLEXPORT VoEExternalMedia { // Sets the state of external mixing. Cannot be changed during playback. virtual int SetExternalMixing(int channel, bool enable) = 0; - // Don't use. To be removed. - virtual int SetExternalRecordingStatus(bool enable) { return -1; } - virtual int SetExternalPlayoutStatus(bool enable) { return -1; } - virtual int ExternalRecordingInsertData(const int16_t speechData10ms[], - int lengthSamples, - int samplingFreqHz, - int current_delay_ms) { - return -1; - } - virtual int ExternalPlayoutGetData(int16_t speechData10ms[], - int samplingFreqHz, - int current_delay_ms, - int& lengthSamples) { - return -1; - } - protected: VoEExternalMedia() {} virtual ~VoEExternalMedia() {} diff --git a/webrtc/voice_engine/include/voe_file.h b/webrtc/voice_engine/include/voe_file.h index e48a535e0d..f3a3a1f510 100644 --- a/webrtc/voice_engine/include/voe_file.h +++ b/webrtc/voice_engine/include/voe_file.h @@ -134,49 +134,6 @@ class WEBRTC_DLLEXPORT VoEFile { // Stops recording the microphone signal. virtual int StopRecordingMicrophone() = 0; - // Don't use. To be removed. - virtual int ScaleLocalFilePlayout(int channel, float scale) { return -1; } - virtual int ScaleFileAsMicrophonePlayout(int channel, float scale) { - return -1; - } - virtual int GetFileDuration(const char* fileNameUTF8, - int& durationMs, - FileFormats format = kFileFormatPcm16kHzFile) { - return -1; - } - virtual int GetPlaybackPosition(int channel, int& positionMs) { return -1; } - virtual int ConvertPCMToWAV(const char* fileNameInUTF8, - const char* fileNameOutUTF8) { - return -1; - } - virtual int ConvertPCMToWAV(InStream* streamIn, OutStream* streamOut) { - return -1; - } - virtual int ConvertWAVToPCM(const char* fileNameInUTF8, - const char* fileNameOutUTF8) { - return -1; - } - virtual int ConvertWAVToPCM(InStream* streamIn, OutStream* streamOut) { - return -1; - } - virtual int ConvertPCMToCompressed(const char* fileNameInUTF8, - const char* fileNameOutUTF8, - CodecInst* compression) { - return -1; - } - virtual int ConvertPCMToCompressed(InStream* streamIn, - OutStream* streamOut, - CodecInst* compression) { - return -1; - } - virtual int ConvertCompressedToPCM(const char* fileNameInUTF8, - const char* fileNameOutUTF8) { - return -1; - } - virtual int ConvertCompressedToPCM(InStream* streamIn, OutStream* streamOut) { - return -1; - } - protected: VoEFile() {} virtual ~VoEFile() {} diff --git a/webrtc/voice_engine/include/voe_hardware.h b/webrtc/voice_engine/include/voe_hardware.h index 1c6b7fc830..a75230cfdc 100644 --- a/webrtc/voice_engine/include/voe_hardware.h +++ b/webrtc/voice_engine/include/voe_hardware.h @@ -94,20 +94,6 @@ class WEBRTC_DLLEXPORT VoEHardware { virtual bool BuiltInAECIsAvailable() const = 0; virtual int EnableBuiltInAEC(bool enable) = 0; - // To be removed. Don't use. - virtual bool BuiltInAECIsEnabled() const { return false; } - virtual int GetRecordingDeviceStatus(bool& isAvailable) { return -1; } - virtual int GetPlayoutDeviceStatus(bool& isAvailable) { return -1; } - virtual int ResetAudioDevice() { return -1; } - virtual int AudioDeviceControl(unsigned int par1, - unsigned int par2, - unsigned int par3) { - return -1; - } - virtual int SetLoudspeakerStatus(bool enable) { return -1; } - virtual int GetLoudspeakerStatus(bool& enabled) { return -1; } - virtual int GetCPULoad(int& loadPercent) { return -1; } - protected: VoEHardware() {} virtual ~VoEHardware() {} diff --git a/webrtc/voice_engine/include/voe_rtp_rtcp.h b/webrtc/voice_engine/include/voe_rtp_rtcp.h index ce96581fde..6d17501772 100644 --- a/webrtc/voice_engine/include/voe_rtp_rtcp.h +++ b/webrtc/voice_engine/include/voe_rtp_rtcp.h @@ -221,37 +221,6 @@ class WEBRTC_DLLEXPORT VoERTP_RTCP { // If using NACK, NACK should be enabled on both endpoints in a call. virtual int SetNACKStatus(int channel, bool enable, int maxNoPackets) = 0; - // Will be removed. Don't use. - virtual int RegisterRTPObserver(int channel, VoERTPObserver& observer) { - return -1; - }; - virtual int DeRegisterRTPObserver(int channel) { return -1; }; - virtual int GetRemoteCSRCs(int channel, unsigned int arrCSRC[15]) { - return -1; - }; - virtual int InsertExtraRTPPacket(int channel, - unsigned char payloadType, - bool markerBit, - const char* payloadData, - unsigned short payloadSize) { - return -1; - }; - virtual int GetRemoteRTCPSenderInfo(int channel, SenderInfo* sender_info) { - return -1; - }; - virtual int SendApplicationDefinedRTCPPacket( - int channel, - unsigned char subType, - unsigned int name, - const char* data, - unsigned short dataLengthInBytes) { - return -1; - }; - virtual int GetLastRemoteTimeStamp(int channel, - uint32_t* lastRemoteTimeStamp) { - return -1; - }; - protected: VoERTP_RTCP() {} virtual ~VoERTP_RTCP() {} diff --git a/webrtc/voice_engine/include/voe_volume_control.h b/webrtc/voice_engine/include/voe_volume_control.h index 6c0bc0ae12..240ab935af 100644 --- a/webrtc/voice_engine/include/voe_volume_control.h +++ b/webrtc/voice_engine/include/voe_volume_control.h @@ -104,12 +104,6 @@ class WEBRTC_DLLEXPORT VoEVolumeControl { // Gets the current left and right scaling factors. virtual int GetOutputVolumePan(int channel, float& left, float& right) = 0; - // Don't use. Will be removed. - virtual int SetSystemOutputMute(bool enable) { return -1; } - virtual int GetSystemOutputMute(bool& enabled) { return -1; } - virtual int SetSystemInputMute(bool enable) { return -1; } - virtual int GetSystemInputMute(bool& enabled) { return -1; } - protected: VoEVolumeControl(){}; virtual ~VoEVolumeControl(){}; diff --git a/webrtc/voice_engine/mock/fake_voe_external_media.h b/webrtc/voice_engine/mock/fake_voe_external_media.h index ab7f59a240..66554ae09b 100644 --- a/webrtc/voice_engine/mock/fake_voe_external_media.h +++ b/webrtc/voice_engine/mock/fake_voe_external_media.h @@ -35,14 +35,6 @@ class FakeVoEExternalMedia : public VoEExternalMedia { callback_map_.erase(type); return 0; } - WEBRTC_STUB(SetExternalRecordingStatus, (bool enable)); - WEBRTC_STUB(SetExternalPlayoutStatus, (bool enable)); - WEBRTC_STUB(ExternalRecordingInsertData, - (const int16_t speechData10ms[], int lengthSamples, - int samplingFreqHz, int current_delay_ms)); - WEBRTC_STUB(ExternalPlayoutGetData, - (int16_t speechData10ms[], int samplingFreqHz, - int current_delay_ms, int& lengthSamples)); WEBRTC_STUB(GetAudioFrame, (int channel, int desired_sample_rate_hz, AudioFrame* frame)); WEBRTC_STUB(SetExternalMixing, (int channel, bool enable)); diff --git a/webrtc/voice_engine/mock/mock_voe_volume_control.h b/webrtc/voice_engine/mock/mock_voe_volume_control.h index 20b096968a..3511b2f34d 100644 --- a/webrtc/voice_engine/mock/mock_voe_volume_control.h +++ b/webrtc/voice_engine/mock/mock_voe_volume_control.h @@ -23,14 +23,10 @@ class MockVoEVolumeControl : public VoEVolumeControl { MOCK_METHOD0(Release, int()); MOCK_METHOD1(SetSpeakerVolume, int(unsigned int volume)); MOCK_METHOD1(GetSpeakerVolume, int(unsigned int& volume)); - MOCK_METHOD1(SetSystemOutputMute, int(bool enable)); - MOCK_METHOD1(GetSystemOutputMute, int(bool &enabled)); MOCK_METHOD1(SetMicVolume, int(unsigned int volume)); MOCK_METHOD1(GetMicVolume, int(unsigned int& volume)); MOCK_METHOD2(SetInputMute, int(int channel, bool enable)); MOCK_METHOD2(GetInputMute, int(int channel, bool& enabled)); - MOCK_METHOD1(SetSystemInputMute, int(bool enable)); - MOCK_METHOD1(GetSystemInputMute, int(bool& enabled)); MOCK_METHOD1(GetSpeechInputLevel, int(unsigned int& level)); MOCK_METHOD2(GetSpeechOutputLevel, int(int channel, unsigned int& level)); MOCK_METHOD1(GetSpeechInputLevelFullRange, int(unsigned int& level)); diff --git a/webrtc/voice_engine/test/android/android_test/jni/android_test.cc b/webrtc/voice_engine/test/android/android_test/jni/android_test.cc index b0a26e06a0..ef52439237 100644 --- a/webrtc/voice_engine/test/android/android_test/jni/android_test.cc +++ b/webrtc/voice_engine/test/android/android_test/jni/android_test.cc @@ -221,7 +221,6 @@ bool ThreadTest::Process() __android_log_write(ANDROID_LOG_ERROR, WEBRTC_LOG_TAG, "set local receiver 2 failed"); } - veData2.hardware->SetLoudspeakerStatus(false); veData2.volume->SetSpeakerVolume(204); veData2.base->StartReceive(0); if(veData2.base->StartPlayout(0) < 0) @@ -1115,43 +1114,6 @@ Java_org_webrtc_voiceengine_test_AndroidTest_SetSpeakerVolume( return 0; } -///////////////////////////////////////////// -// [Hardware] Set loudspeaker status -// -JNIEXPORT jint JNICALL -Java_org_webrtc_voiceengine_test_AndroidTest_SetLoudspeakerStatus( - JNIEnv *, - jobject, - jboolean enable) -{ - VALIDATE_HARDWARE_POINTER; - if (veData1.hardware->SetLoudspeakerStatus(enable) != 0) - { - return -1; - } - - /*VALIDATE_RTP_RTCP_POINTER; - - if (veData1.rtp_rtcp->SetREDStatus(0, enable, -1) != 0) - { - __android_log_write(ANDROID_LOG_ERROR, WEBRTC_LOG_TAG, - "Could not set RED"); - return -1; - } - else if(enable) - { - __android_log_write(ANDROID_LOG_ERROR, WEBRTC_LOG_TAG, - "Could enable RED"); - } - else - { - __android_log_write(ANDROID_LOG_ERROR, WEBRTC_LOG_TAG, - "Could disable RED"); - }*/ - - return 0; -} - ////////////////////////////////////////////////////////////////// // "Local" functions (i.e. not Java accessible) ////////////////////////////////////////////////////////////////// diff --git a/webrtc/voice_engine/test/android/android_test/jni/org_webrtc_voiceengine_test_AndroidTest.h b/webrtc/voice_engine/test/android/android_test/jni/org_webrtc_voiceengine_test_AndroidTest.h index 60fe83926b..34d408a95f 100644 --- a/webrtc/voice_engine/test/android/android_test/jni/org_webrtc_voiceengine_test_AndroidTest.h +++ b/webrtc/voice_engine/test/android/android_test/jni/org_webrtc_voiceengine_test_AndroidTest.h @@ -239,14 +239,6 @@ JNIEXPORT jint JNICALL Java_org_webrtc_voiceengine_test_AndroidTest_SetECStatus JNIEXPORT jint JNICALL Java_org_webrtc_voiceengine_test_AndroidTest_SetSpeakerVolume (JNIEnv *, jobject, jint); -/* - * Class: org_webrtc_voiceengine_test_AndroidTest - * Method: SetLoudspeakerStatus - * Signature: (Z)I - */ -JNIEXPORT jint JNICALL Java_org_webrtc_voiceengine_test_AndroidTest_SetLoudspeakerStatus - (JNIEnv *, jobject, jboolean); - #ifdef __cplusplus } #endif diff --git a/webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.cc b/webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.cc index c54d289cac..efdf633f23 100644 --- a/webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.cc +++ b/webrtc/voice_engine/test/auto_test/fixtures/after_initialization_fixture.cc @@ -28,11 +28,6 @@ AfterInitializationFixture::AfterInitializationFixture() webrtc::AudioProcessing* audioproc = webrtc::AudioProcessing::Create(config); EXPECT_EQ(0, voe_base_->Init(NULL, audioproc)); - -#if defined(WEBRTC_ANDROID) - EXPECT_EQ(0, voe_hardware_->SetLoudspeakerStatus(false)); -#endif - EXPECT_EQ(0, voe_base_->RegisterVoiceEngineObserver(*error_observer_)); } diff --git a/webrtc/voice_engine/test/auto_test/standard/hardware_before_streaming_test.cc b/webrtc/voice_engine/test/auto_test/standard/hardware_before_streaming_test.cc index 26c949de8a..a5c13b438a 100644 --- a/webrtc/voice_engine/test/auto_test/standard/hardware_before_streaming_test.cc +++ b/webrtc/voice_engine/test/auto_test/standard/hardware_before_streaming_test.cc @@ -25,14 +25,6 @@ TEST_F(HardwareBeforeStreamingTest, EXPECT_EQ(VE_ALREADY_INITED, voe_base_->LastError()); } -// Tests that only apply to mobile: - -#ifdef WEBRTC_IOS -TEST_F(HardwareBeforeStreamingTest, ResetsAudioDeviceOnIphone) { - EXPECT_EQ(0, voe_hardware_->ResetAudioDevice()); -} -#endif - // Tests that only apply to desktop: #if !defined(WEBRTC_IOS) & !defined(WEBRTC_ANDROID) diff --git a/webrtc/voice_engine/test/win_test/Resource.h b/webrtc/voice_engine/test/win_test/Resource.h deleted file mode 100644 index cd5f55a53c..0000000000 --- a/webrtc/voice_engine/test/win_test/Resource.h +++ /dev/null @@ -1,241 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by WinTest.rc -// -#define IDM_ABOUTBOX 0x0010 -#define IDD_ABOUTBOX 100 -#define IDS_ABOUTBOX 101 -#define IDD_WINTEST_DIALOG 102 -#define IDR_MAINFRAME 128 -#define IDD_DTMF_DIALOG 129 -#define IDC_BUTTON_CREATE_1 1000 -#define IDC_BUTTON_DELETE_1 1001 -#define IDC_EDIT_1 1002 -#define IDC_BUTTON_CREATE_2 1003 -#define IDC_BUTTON_DELETE_2 1004 -#define IDC_EDIT_2 1005 -#define IDC_EDIT_MESSAGE 1006 -#define IDC_BUTTON_START_LISTEN_1 1007 -#define IDC_COMBO_IP_1 1008 -#define IDC_EDIT_TX_PORT_1 1009 -#define IDC_EDIT_RX_PORT_1 1010 -#define IDC_COMBO_CODEC_1 1011 -#define IDC_BUTTON_STOP_LISTEN_1 1012 -#define IDC_STATIC_LISTEN 1013 -#define IDC_BUTTON_START_PLAYOUT_1 1014 -#define IDC_BUTTON_STOP_PLAYOUT_1 1015 -#define IDC_STATIC_PLAY 1016 -#define IDC_BUTTON_START_SEND_1 1017 -#define IDC_BUTTON_STOP_SEND_1 1018 -#define IDC_STATIC_SEND 1019 -#define IDC_COMBO_IP_2 1020 -#define IDC_STATIC_IP 1021 -#define IDC_STATIC_PORTS 1022 -#define IDC_STATIC_CODEC 1023 -#define IDC_STATIC_CHANNEL 1024 -#define IDC_STATIC_ID 1025 -#define IDC_EDIT_TX_PORT_2 1026 -#define IDC_EDIT_RX_PORT_2 1027 -#define IDC_COMBO_CODEC_2 1028 -#define IDC_BUTTON_START_LISTEN_2 1029 -#define IDC_BUTTON_STOP_LISTEN_2 1030 -#define IDC_BUTTON_START_PLAYOUT_2 1031 -#define IDC_BUTTON_STOP_PLAYOUT_2 1032 -#define IDC_BUTTON_START_SEND_2 1033 -#define IDC_BUTTON_STOP_SEND_2 1034 -#define IDC_BUTTON_START_SEND_3 1035 -#define IDC_BUTTON_TEST_1_1 1035 -#define IDC_BUTTON_TEST_1 1035 -#define IDC_EDIT_RESULT 1036 -#define IDC_EDIT_N_FAILS 1037 -#define IDC_STATIC_ERROR 1038 -#define IDC_EDIT_LAST_ERROR 1039 -#define IDC_STATIC_LAST_ERROR 1040 -#define IDC_STATIC_PLAY_FILE 1041 -#define IDC_STATIC_EXTERNAL 1042 -#define IDC_CHECK_EXT_TRANS_1 1043 -#define IDC_CHECK2 1044 -#define IDC_CHECK_PLAY_FILE_IN_1 1044 -#define IDC_CHECK_PLAY_FILE_OUT_1 1045 -#define IDC_CHECK_PLAY_FILE_IN_2 1046 -#define IDC_CHECK_PLAY_FILE_OUT_2 1047 -#define IDC_CHECK_EXT_TRANS_2 1048 -#define IDC_STATIC_ALL_CHANNELS 1049 -#define IDC_CHECK_PLAY_FILE_IN 1050 -#define IDC_CHECK_PLAY_FILE_OUT 1051 -#define IDC_CHECK_EXT_MEDIA_IN_1 1051 -#define IDC_COMBO_REC_DEVICE 1052 -#define IDC_STATIC_REC_DEVICE 1053 -#define IDC_COMBO_PLAY_DEVICE2 1054 -#define IDC_COMBO_PLAY_DEVICE 1054 -#define IDC_STATIC_PLAY_DEVICE 1055 -#define IDC_CHECK_EXT_MEDIA_PLAY_1 1056 -#define IDC_CHECK_EXT_MEDIA_OUT_1 1056 -#define IDC_STATIC_PLAY_FILE2 1057 -#define IDC_SLIDER_INPUT_VOLUME 1058 -#define IDC_STATIC_MIC_VOLUME 1059 -#define IDC_SLIDER_OUTPUT_VOLUME 1060 -#define IDC_STATIC_SPK_VOLUME2 1061 -#define IDC_STATIC_SPK_VOLUME 1061 -#define IDC_CHECK_PLAY_FILE_IN2 1062 -#define IDC_CHECK_AGC 1062 -#define IDC_STATIC_MIC_VOLUME2 1063 -#define IDC_STATIC_AUDIO_LEVEL_IN 1063 -#define IDC_PROGRESS_AUDIO_LEVEL_IN 1064 -#define IDC_CHECK_AGC2 1065 -#define IDC_CHECK_NS 1065 -#define IDC_BUTTON_1 1065 -#define IDC_CHECK_VAD 1066 -#define IDC_CHECK_EXT_MEDIA_IN_2 1066 -#define IDC_BUTTON_2 1066 -#define IDC_CHECK_VAD2 1067 -#define IDC_CHECK_EC 1067 -#define IDC_BUTTON_3 1067 -#define IDC_CHECK_VAD_1 1068 -#define IDC_BUTTON_4 1068 -#define IDC_CHECK_VAD_2 1069 -#define IDC_CHECK_EXT_MEDIA_OUT_2 1069 -#define IDC_BUTTON_5 1069 -#define IDC_CHECK_VAD_3 1070 -#define IDC_BUTTON_6 1070 -#define IDC_CHECK_MUTE_IN 1071 -#define IDC_BUTTON_7 1071 -#define IDC_CHECK_MUTE_IN_1 1072 -#define IDC_BUTTON_8 1072 -#define IDC_CHECK_MUTE_IN_2 1073 -#define IDC_BUTTON_9 1073 -#define IDC_CHECK_SRTP_TX_1 1074 -#define IDC_BUTTON_10 1074 -#define IDC_CHECK_SRTP_RX_1 1075 -#define IDC_BUTTON_11 1075 -#define IDC_STATIC_PLAY_FILE3 1076 -#define IDC_STATIC_SRTP 1076 -#define IDC_BUTTON_12 1076 -#define IDC_CHECK_SRTP_TX_2 1077 -#define IDC_BUTTON_13 1077 -#define IDC_CHECK_SRTP_RX_2 1078 -#define IDC_BUTTON_14 1078 -#define IDC_CHECK_EXT_ENCRYPTION_1 1079 -#define IDC_BUTTON_15 1079 -#define IDC_STATIC_PLAY_FILE4 1080 -#define IDC_BUTTON_16 1080 -#define IDC_CHECK_EXT_ENCRYPTION_2 1081 -#define IDC_BUTTON_17 1081 -#define IDC_BUTTON_DTMF_1 1082 -#define IDC_BUTTON_18 1082 -#define IDC_EDIT_DTMF_EVENT 1083 -#define IDC_CHECK_REC_ 1083 -#define IDC_CHECK_REC_MIC 1083 -#define IDC_STATIC_DTMF_EVENT 1084 -#define IDC_BUTTON_DTMF_2 1084 -#define IDC_STATIC_GROUP_DTMF 1085 -#define IDC_CHECK_CONFERENCE_1 1085 -#define IDC_BUTTON_19 1086 -#define IDC_CHECK_CONFERENCE_2 1086 -#define IDC_BUTTON_20 1087 -#define IDC_CHECK_ON_HOLD_1 1087 -#define IDC_BUTTON_21 1088 -#define IDC_CHECK_ON_HOLD_2 1088 -#define IDC_BUTTON_22 1089 -#define IDC_CHECK_DTMF_PLAYOUT_RX 1089 -#define IDC_CHECK_EXT_MEDIA_IN 1089 -#define IDC_STATIC_PLAYOUT_RX 1090 -#define IDC_EDIT_GET_OUTPUT 1090 -#define IDC_CHECK_DTMF_PLAY_TONE 1091 -#define IDC_STATIC_LAST_ERROR2 1091 -#define IDC_STATIC_GET 1091 -#define IDC_STATIC_PLAY_TONE 1092 -#define IDC_CHECK_EXT_MEDIA_OUT 1092 -#define IDC_CHECK_START_STOP_MODE 1093 -#define IDC_BUTTON_SET_TX_TELEPHONE_PT 1093 -#define IDC_PROGRESS_AUDIO_LEVEL_IN2 1093 -#define IDC_PROGRESS_AUDIO_LEVEL_OUT 1093 -#define IDC_EDIT_EVENT_LENGTH 1094 -#define IDC_EDIT_RX_PORT_3 1094 -#define IDC_EDIT_DELAY_ESTIMATE_1 1094 -#define IDC_STATIC_EVENT_LENGTH 1095 -#define IDC_EDIT_PLAYOUT_BUFFER_SIZE 1095 -#define IDC_STATIC_START_STOP_MODE 1096 -#define IDC_EDIT_EVENT_RX_PT 1096 -#define IDC_CHECK_DELAY_ESTIMATE_1 1096 -#define IDC_EDIT_EVENT_ATTENUATION 1097 -#define IDC_CHECK_AGC_1 1097 -#define IDC_CHECK_EVENT_INBAND 1098 -#define IDC_CHECK_NS_1 1098 -#define IDC_STATIC_EVENT_ATTENUATION 1099 -#define IDC_STATIC_SRTP2 1099 -#define IDC_STATIC_RX_VQE 1099 -#define IDC_EDIT_EVENT_TX_PT 1100 -#define IDC_CHECK_REC_MIC2 1100 -#define IDC_CHECK_REC_CALL 1100 -#define IDC_CHECK_DTMF_FEEDBACK 1101 -#define IDC_CHECK_REC_CALL2 1101 -#define IDC_CHECK_TYPING_DETECTION 1101 -#define IDC_CHECK_START_STOP_MODE2 1102 -#define IDC_CHECK_DIRECT_FEEDBACK 1102 -#define IDC_CHECK_RED 1102 -#define IDC_BUTTON_SET_RX_TELEPHONE_PT_TYPE 1103 -#define IDC_BUTTON_SET_RX_TELEPHONE_PT 1103 -#define IDC_BUTTON_CLEAR_ERROR_CALLBACK 1103 -#define IDC_EDIT_EVENT_CODE 1104 -#define IDC_STATIC_DIRECT_FEEDBACK 1105 -#define IDC_RADIO_SINGLE 1106 -#define IDC_RADIO_MULTI 1107 -#define IDC_RADIO_START_STOP 1108 -#define IDC_STATIC_MODE 1109 -#define IDC_STATIC_EVENT_RX_PT 1110 -#define IDC_STATIC_EVENT_TX_PT 1111 -#define IDC_STATIC_PT 1112 -#define IDC_BUTTON_SEND_TELEPHONE_EVENT 1113 -#define IDC_STATIC_EVENT_CODE 1114 -#define IDC_CHECK_EVENT_DETECTION 1115 -#define IDC_CHECK_DETECT_INBAND 1116 -#define IDC_CHECK_DETECT_OUT_OF_BAND 1117 -#define IDC_STATIC_INBAND_DETECTION 1118 -#define IDC_STATIC_OUT_OF_BAND_DETECTION 1119 -#define IDC_STATIC_EVENT_DETECTION 1120 -#define IDC_STATIC_TELEPHONE_EVENTS 1121 -#define IDC_EDIT_EVENT_CODE2 1122 -#define IDC_EDIT_ON_EVENT 1122 -#define IDC_EDIT_ON_EVENT_OUT_OF_BAND 1122 -#define IDC_STATIC_ON_EVENT 1123 -#define IDC_EDIT_ON_EVENT_INBAND 1123 -#define IDC_STATIC_EVEN 1124 -#define IDC_STATIC_LINE 1125 -#define IDC_LIST_CODEC_1 1128 -#define IDC_EDIT2 1129 -#define IDC_EDIT_CODEC_1 1129 -#define IDC_STATIC_PANNING 1131 -#define IDC_SLIDER_PAN_LEFT 1132 -#define IDC_SLIDER_PAN_RIGHT 1133 -#define IDC_STATIC_LEFT 1134 -#define IDC_STATIC_LEFT2 1135 -#define IDC_STATIC_RIGHT 1135 -#define IDC_BUTTON_VERSION 1136 -#define IDC_STATIC_PLAYOUT_BUFFER 1137 -#define IDC_CHECK_RXVAD 1138 -#define IDC_EDIT1 1139 -#define IDC_EDIT_RXVAD 1139 -#define IDC_STATIC_RX_PORT 1140 -#define IDC_STATIC_RX_PORT2 1141 -#define IDC_EDIT3 1142 -#define IDC_EDIT_AUDIO_LAYER 1142 -#define IDC_EDIT_AUDIO_LAYER2 1143 -#define IDC_EDIT_CPU_LOAD 1143 -#define IDC_STATIC_ERROR_CALLBACK 1144 -#define IDC_EDIT_ERROR_CALLBACK 1145 -#define IDC_EDIT_RX_CODEC_1 1146 -#define IDC_STATIC_BYTES_SENT_TEXT 1147 -#define IDC_EDIT_RTCP_STAT 1147 -#define IDC_EDIT_RTCP_STAT_1 1147 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 130 -#define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1148 -#define _APS_NEXT_SYMED_VALUE 101 -#endif -#endif diff --git a/webrtc/voice_engine/test/win_test/WinTest.aps b/webrtc/voice_engine/test/win_test/WinTest.aps deleted file mode 100644 index 499db5f66db68fe9c3c9b4ccc93bc1a52b4ab642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84160 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 diff --git a/webrtc/voice_engine/test/win_test/WinTest.cc b/webrtc/voice_engine/test/win_test/WinTest.cc deleted file mode 100644 index 6b28ba47a4..0000000000 --- a/webrtc/voice_engine/test/win_test/WinTest.cc +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include "webrtc/voice_engine/test/win_test/WinTest.h" -#include "webrtc/voice_engine/test/win_test/WinTestDlg.h" -#include "webrtc/voice_engine/test/win_test/stdafx.h" - -#ifdef _DEBUG -#define new DEBUG_NEW -#endif - - -// CWinTestApp - -BEGIN_MESSAGE_MAP(CWinTestApp, CWinApp) - ON_COMMAND(ID_HELP, &CWinApp::OnHelp) -END_MESSAGE_MAP() - - -// CWinTestApp construction - -CWinTestApp::CWinTestApp() -{ -} - - -// The one and only CWinTestApp object - -CWinTestApp theApp; - - -// CWinTestApp initialization - -BOOL CWinTestApp::InitInstance() -{ - // InitCommonControlsEx() is required on Windows XP if an application - // manifest specifies use of ComCtl32.dll version 6 or later to enable - // visual styles. Otherwise, any window creation will fail. - INITCOMMONCONTROLSEX InitCtrls; - InitCtrls.dwSize = sizeof(InitCtrls); - // Set this to include all the common control classes you want to use - // in your application. - InitCtrls.dwICC = ICC_WIN95_CLASSES; - InitCommonControlsEx(&InitCtrls); - - CWinApp::InitInstance(); - - // Standard initialization - // If you are not using these features and wish to reduce the size - // of your final executable, you should remove from the following - // the specific initialization routines you do not need - // Change the registry key under which our settings are stored - SetRegistryKey(_T("Local AppWizard-Generated Applications")); - - CWinTestDlg dlg; - m_pMainWnd = &dlg; - INT_PTR nResponse = dlg.DoModal(); - if (nResponse == IDOK) - { - } - else if (nResponse == IDCANCEL) - { - } - - // Since the dialog has been closed, return FALSE so that we exit the - // application, rather than start the application's message pump. - return FALSE; -} diff --git a/webrtc/voice_engine/test/win_test/WinTest.h b/webrtc/voice_engine/test/win_test/WinTest.h deleted file mode 100644 index 7320360e4b..0000000000 --- a/webrtc/voice_engine/test/win_test/WinTest.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ -#ifndef WEBRTC_VOICE_ENGINE_TEST_WIN_TEST_WINTEST_H_ -#define WEBRTC_VOICE_ENGINE_TEST_WIN_TEST_WINTEST_H_ - -#ifndef __AFXWIN_H__ - #error "include 'stdafx.h' before including this file for PCH" -#endif - -#include "resource.h" // main symbols - - -// CWinTestApp: -// See WinTest.cpp for the implementation of this class -// - -class CWinTestApp : public CWinApp -{ -public: - CWinTestApp(); - -// Overrides - public: - virtual BOOL InitInstance(); - -// Implementation - - DECLARE_MESSAGE_MAP() -}; - -extern CWinTestApp theApp; - -#endif // WEBRTC_VOICE_ENGINE_TEST_WIN_TEST_WINTEST_H_ diff --git a/webrtc/voice_engine/test/win_test/WinTest.rc b/webrtc/voice_engine/test/win_test/WinTest.rc deleted file mode 100644 index 240036cf08..0000000000 --- a/webrtc/voice_engine/test/win_test/WinTest.rc +++ /dev/null @@ -1,394 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Swedish resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_SVE) -#ifdef _WIN32 -LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "#define _AFX_NO_SPLITTER_RESOURCES\r\n" - "#define _AFX_NO_OLE_RESOURCES\r\n" - "#define _AFX_NO_TRACKER_RESOURCES\r\n" - "#define _AFX_NO_PROPERTY_RESOURCES\r\n" - "\r\n" - "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_SVE)\r\n" - "LANGUAGE 29, 1\r\n" - "#pragma code_page(1252)\r\n" - "#include ""res\\WinTest.rc2"" // non-Microsoft Visual C++ edited resources\r\n" - "#include ""afxres.rc"" // Standard components\r\n" - "#endif\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDR_MAINFRAME ICON "res\\WinTest.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_ABOUTBOX DIALOGEX 0, 0, 235, 55 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "About WinTest" -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20 - LTEXT "WinTest Version 1.0",IDC_STATIC,40,10,119,8,SS_NOPREFIX - LTEXT "Copyright (C) 2010",IDC_STATIC,40,25,119,8 - DEFPUSHBUTTON "OK",IDOK,178,7,50,16,WS_GROUP -END - -IDD_WINTEST_DIALOG DIALOGEX 0, 0, 796, 278 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_APPWINDOW -CAPTION "WinTest" -FONT 8, "MS Shell Dlg", 0, 0, 0x1 -BEGIN - PUSHBUTTON "Create",IDC_BUTTON_CREATE_1,28,24,32,14 - PUSHBUTTON "Delete",IDC_BUTTON_DELETE_1,28,40,32,14 - EDITTEXT IDC_EDIT_1,6,32,18,14,ES_AUTOHSCROLL | ES_READONLY - PUSHBUTTON "Create",IDC_BUTTON_CREATE_2,28,72,32,14 - PUSHBUTTON "Delete",IDC_BUTTON_DELETE_2,28,88,32,14 - EDITTEXT IDC_EDIT_2,6,82,18,14,ES_AUTOHSCROLL | ES_READONLY - EDITTEXT IDC_EDIT_MESSAGE,28,244,764,12,ES_AUTOHSCROLL - COMBOBOX IDC_COMBO_IP_1,64,24,76,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_EDIT_TX_PORT_1,144,24,28,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_RX_PORT_1,144,40,28,14,ES_AUTOHSCROLL - COMBOBOX IDC_COMBO_CODEC_1,176,24,76,156,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Start",IDC_BUTTON_START_LISTEN_1,256,24,32,14 - PUSHBUTTON "Stop",IDC_BUTTON_STOP_LISTEN_1,256,40,32,14 - LTEXT "Receive",IDC_STATIC_LISTEN,262,8,26,8 - PUSHBUTTON "Start",IDC_BUTTON_START_PLAYOUT_1,292,24,32,14 - PUSHBUTTON "Stop",IDC_BUTTON_STOP_PLAYOUT_1,292,40,32,14 - LTEXT "Playout",IDC_STATIC_PLAY,295,8,25,8 - PUSHBUTTON "Start",IDC_BUTTON_START_SEND_1,328,24,32,14 - PUSHBUTTON "Stop",IDC_BUTTON_STOP_SEND_1,328,40,32,14 - LTEXT "Send",IDC_STATIC_SEND,335,8,17,8 - COMBOBOX IDC_COMBO_IP_2,64,72,76,30,CBS_DROPDOWN | CBS_SORT | WS_VSCROLL | WS_TABSTOP - LTEXT "Destination IP address",IDC_STATIC_IP,64,8,73,8 - LTEXT "Ports",IDC_STATIC_PORTS,145,8,18,8 - LTEXT "Codec",IDC_STATIC_CODEC,177,8,21,8 - LTEXT "Channel",IDC_STATIC_CHANNEL,30,8,27,8 - LTEXT "ID",IDC_STATIC_ID,12,8,8,8 - EDITTEXT IDC_EDIT_TX_PORT_2,144,72,28,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_RX_PORT_2,144,88,28,14,ES_AUTOHSCROLL - COMBOBOX IDC_COMBO_CODEC_2,176,72,76,156,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Start",IDC_BUTTON_START_LISTEN_2,256,72,32,14 - PUSHBUTTON "Stop",IDC_BUTTON_STOP_LISTEN_2,256,88,32,14 - PUSHBUTTON "Start",IDC_BUTTON_START_PLAYOUT_2,292,72,32,14 - PUSHBUTTON "Stop",IDC_BUTTON_STOP_PLAYOUT_2,292,88,32,14 - PUSHBUTTON "Start",IDC_BUTTON_START_SEND_2,328,72,32,14 - PUSHBUTTON "Stop",IDC_BUTTON_STOP_SEND_2,328,88,32,14 - PUSHBUTTON "TEST 1",IDC_BUTTON_TEST_1,756,224,36,14 - LTEXT "API",IDC_STATIC,4,247,12,8 - EDITTEXT IDC_EDIT_RESULT,28,260,96,12,ES_AUTOHSCROLL - LTEXT "Result",IDC_STATIC,3,263,21,8 - EDITTEXT IDC_EDIT_N_FAILS,156,260,30,12,ES_AUTOHSCROLL - LTEXT "#Fails",IDC_STATIC_ERROR,132,263,20,8 - EDITTEXT IDC_EDIT_LAST_ERROR,228,260,36,12,ES_AUTOHSCROLL - LTEXT "Last Error",IDC_STATIC_LAST_ERROR,192,262,32,8 - LTEXT "Ext. Trans.",IDC_STATIC_EXTERNAL,361,8,37,8 - CONTROL "",IDC_CHECK_EXT_TRANS_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,371,33,16,10 - CONTROL "In",IDC_CHECK_PLAY_FILE_IN_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,396,24,36,14,WS_EX_DLGMODALFRAME - LTEXT "Play File",IDC_STATIC_PLAY_FILE,401,8,27,8 - CONTROL "Out",IDC_CHECK_PLAY_FILE_OUT_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,396,40,36,14,WS_EX_DLGMODALFRAME - CONTROL "In",IDC_CHECK_PLAY_FILE_IN_2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,396,72,36,14,WS_EX_DLGMODALFRAME - CONTROL "Out",IDC_CHECK_PLAY_FILE_OUT_2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,396,88,36,14,WS_EX_DLGMODALFRAME - CONTROL "",IDC_CHECK_EXT_TRANS_2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,371,82,16,10 - GROUPBOX "",IDC_STATIC_ALL_CHANNELS,6,107,662,113 - CONTROL "PlayFileAsMic",IDC_CHECK_PLAY_FILE_IN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,396,122,60,14,WS_EX_DLGMODALFRAME - COMBOBOX IDC_COMBO_REC_DEVICE,12,132,184,80,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT "Recording device",IDC_STATIC_REC_DEVICE,12,120,56,8 - COMBOBOX IDC_COMBO_PLAY_DEVICE,12,180,184,80,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT "Playout device",IDC_STATIC_PLAY_DEVICE,12,167,56,8 - CONTROL "In",IDC_CHECK_EXT_MEDIA_IN_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,436,24,36,14,WS_EX_DLGMODALFRAME - CONTROL "Out",IDC_CHECK_EXT_MEDIA_OUT_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,436,40,36,14,WS_EX_DLGMODALFRAME - LTEXT "Ext. Media",IDC_STATIC_PLAY_FILE2,437,8,35,8 - CONTROL "",IDC_SLIDER_INPUT_VOLUME,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,196,130,72,15 - LTEXT "Microphone Volume",IDC_STATIC_MIC_VOLUME,202,120,62,8 - CONTROL "",IDC_SLIDER_OUTPUT_VOLUME,"msctls_trackbar32",TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,196,179,72,15 - LTEXT "Speaker Volume",IDC_STATIC_SPK_VOLUME,202,167,52,8 - CONTROL "AGC",IDC_CHECK_AGC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,316,122,36,14,WS_EX_DLGMODALFRAME - CONTROL "",IDC_PROGRESS_AUDIO_LEVEL_IN,"msctls_progress32",WS_BORDER,268,135,42,6 - LTEXT "Audio Level",IDC_STATIC_AUDIO_LEVEL_IN,271,120,38,8,NOT WS_GROUP - CONTROL "NS",IDC_CHECK_NS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,316,142,36,14,WS_EX_DLGMODALFRAME - CONTROL "EC",IDC_CHECK_EC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,356,122,36,14,WS_EX_DLGMODALFRAME - CONTROL "VAD",IDC_CHECK_VAD_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,476,24,36,14,WS_EX_DLGMODALFRAME - CONTROL "In",IDC_CHECK_EXT_MEDIA_IN_2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,436,72,36,14,WS_EX_DLGMODALFRAME - CONTROL "Out",IDC_CHECK_EXT_MEDIA_OUT_2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,436,88,36,14,WS_EX_DLGMODALFRAME - CONTROL "VAD",IDC_CHECK_VAD_3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,476,72,36,14,WS_EX_DLGMODALFRAME - CONTROL "Mute",IDC_CHECK_MUTE_IN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,356,142,36,14,WS_EX_DLGMODALFRAME - CONTROL "Mute",IDC_CHECK_MUTE_IN_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,476,40,36,14,WS_EX_DLGMODALFRAME - CONTROL "Mute",IDC_CHECK_MUTE_IN_2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,476,88,36,14,WS_EX_DLGMODALFRAME - CONTROL "TX",IDC_CHECK_SRTP_TX_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,516,24,36,14,WS_EX_DLGMODALFRAME - CONTROL "RX",IDC_CHECK_SRTP_RX_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,516,40,36,14,WS_EX_DLGMODALFRAME - LTEXT "SRTP",IDC_STATIC_SRTP,525,8,18,8 - CONTROL "TX",IDC_CHECK_SRTP_TX_2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,516,72,36,14,WS_EX_DLGMODALFRAME - CONTROL "RX",IDC_CHECK_SRTP_RX_2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,516,88,36,14,WS_EX_DLGMODALFRAME - CONTROL "",IDC_CHECK_EXT_ENCRYPTION_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,564,33,16,10 - LTEXT "Encrypt",IDC_STATIC_PLAY_FILE4,556,8,26,8 - CONTROL "",IDC_CHECK_EXT_ENCRYPTION_2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,564,82,16,10 - PUSHBUTTON "DTMF>>",IDC_BUTTON_DTMF_1,584,24,36,14 - CONTROL "RecMicToFile",IDC_CHECK_REC_MIC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,396,142,60,14,WS_EX_DLGMODALFRAME - PUSHBUTTON "DTMF>>",IDC_BUTTON_DTMF_2,584,72,36,14 - CONTROL "Conf",IDC_CHECK_CONFERENCE_1,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,584,40,36,14,WS_EX_DLGMODALFRAME - CONTROL "Conf",IDC_CHECK_CONFERENCE_2,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,584,88,36,14,WS_EX_DLGMODALFRAME - CONTROL "Hold",IDC_CHECK_ON_HOLD_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,708,24,36,14,WS_EX_DLGMODALFRAME - CONTROL "Hold",IDC_CHECK_ON_HOLD_2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,708,72,36,14,WS_EX_DLGMODALFRAME - EDITTEXT IDC_EDIT_GET_OUTPUT,292,260,500,12,ES_AUTOHSCROLL - LTEXT "Get",IDC_STATIC_GET,276,262,12,8 - CONTROL "Ext. Media",IDC_CHECK_EXT_MEDIA_IN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,460,122,52,14,WS_EX_DLGMODALFRAME - CONTROL "Ext. Media",IDC_CHECK_EXT_MEDIA_OUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,460,180,52,14,WS_EX_DLGMODALFRAME - LISTBOX IDC_LIST_CODEC_1,208,40,44,28,LBS_NOINTEGRALHEIGHT | NOT WS_BORDER | WS_VSCROLL | WS_TABSTOP,WS_EX_CLIENTEDGE - EDITTEXT IDC_EDIT_CODEC_1,176,40,28,14,ES_AUTOHSCROLL - CONTROL "",IDC_PROGRESS_AUDIO_LEVEL_OUT,"msctls_progress32",WS_BORDER,268,184,42,6 - LTEXT "Panning",IDC_STATIC_PANNING,328,167,26,8 - CONTROL "",IDC_SLIDER_PAN_LEFT,"msctls_trackbar32",TBS_VERT | TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,328,175,12,28 - CONTROL "",IDC_SLIDER_PAN_RIGHT,"msctls_trackbar32",TBS_VERT | TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,344,175,12,28 - LTEXT "L",IDC_STATIC_LEFT,332,200,8,8 - LTEXT "R",IDC_STATIC_RIGHT,347,201,8,8 - PUSHBUTTON "Version",IDC_BUTTON_VERSION,624,200,36,14 - EDITTEXT IDC_EDIT_PLAYOUT_BUFFER_SIZE,363,181,28,12,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP - LTEXT "Buffer Size",IDC_STATIC_PLAYOUT_BUFFER,361,167,36,8 - CONTROL "Delay",IDC_CHECK_DELAY_ESTIMATE_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,624,24,36,14,WS_EX_DLGMODALFRAME - EDITTEXT IDC_EDIT_DELAY_ESTIMATE_1,631,40,24,14,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP - CONTROL "RxVAD",IDC_CHECK_RXVAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,664,24,40,14,WS_EX_DLGMODALFRAME - EDITTEXT IDC_EDIT_RXVAD,671,40,24,14,ES_CENTER | ES_AUTOHSCROLL | ES_READONLY - CONTROL "AGC",IDC_CHECK_AGC_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,748,24,36,14,WS_EX_DLGMODALFRAME - CONTROL "NS",IDC_CHECK_NS_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,748,40,36,14,WS_EX_DLGMODALFRAME - LTEXT "RX VQE",IDC_STATIC_RX_VQE,753,8,25,8 - CONTROL "RecordCall",IDC_CHECK_REC_CALL,"Button",BS_AUTOCHECKBOX | NOT WS_VISIBLE | WS_TABSTOP,517,156,52,14,WS_EX_DLGMODALFRAME - LTEXT "RX",IDC_STATIC_RX_PORT,133,42,10,8 - LTEXT "RX",IDC_STATIC_RX_PORT2,133,91,10,8 - CONTROL "TypingDetect",IDC_CHECK_TYPING_DETECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,572,156,60,14,WS_EX_DLGMODALFRAME - EDITTEXT IDC_EDIT_AUDIO_LAYER,28,224,116,14,ES_AUTOHSCROLL | ES_READONLY - EDITTEXT IDC_EDIT_CPU_LOAD,152,224,116,14,ES_AUTOHSCROLL | ES_READONLY - CONTROL "RED",IDC_CHECK_RED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,176,55,28,14,WS_EX_DLGMODALFRAME - LTEXT "=> Callbacks",IDC_STATIC_ERROR_CALLBACK,283,226,43,8 - EDITTEXT IDC_EDIT_ERROR_CALLBACK,328,224,312,14,ES_AUTOHSCROLL - PUSHBUTTON "Clear",IDC_BUTTON_CLEAR_ERROR_CALLBACK,644,224,24,14 - EDITTEXT IDC_EDIT_RX_CODEC_1,256,56,216,12,ES_AUTOHSCROLL | ES_READONLY - EDITTEXT IDC_EDIT_RTCP_STAT_1,476,56,316,12,ES_AUTOHSCROLL | ES_READONLY -END - -IDD_DTMF_DIALOG DIALOGEX 0, 0, 316, 212 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Telehone Events" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,260,192,50,14 - PUSHBUTTON "1",IDC_BUTTON_1,16,20,16,14 - PUSHBUTTON "2",IDC_BUTTON_2,36,20,16,14 - PUSHBUTTON "3",IDC_BUTTON_3,56,20,16,14 - PUSHBUTTON "4",IDC_BUTTON_4,16,36,16,14 - PUSHBUTTON "5",IDC_BUTTON_5,36,36,16,14 - PUSHBUTTON "6",IDC_BUTTON_6,56,36,16,14 - PUSHBUTTON "7",IDC_BUTTON_7,16,52,16,14 - PUSHBUTTON "8",IDC_BUTTON_8,36,52,16,14 - PUSHBUTTON "9",IDC_BUTTON_9,56,52,16,14 - PUSHBUTTON "*",IDC_BUTTON_10,16,68,16,14 - PUSHBUTTON "0",IDC_BUTTON_11,36,68,16,14 - PUSHBUTTON "#",IDC_BUTTON_12,56,68,16,14 - PUSHBUTTON "A",IDC_BUTTON_13,76,20,16,14 - PUSHBUTTON "B",IDC_BUTTON_14,76,36,16,14 - PUSHBUTTON "C",IDC_BUTTON_15,76,52,16,14 - PUSHBUTTON "D",IDC_BUTTON_16,76,68,16,14 - EDITTEXT IDC_EDIT_DTMF_EVENT,56,90,16,12,ES_AUTOHSCROLL | ES_READONLY - LTEXT "Event code",IDC_STATIC_DTMF_EVENT,17,91,37,8 - PUSHBUTTON "1",IDC_BUTTON_17,16,20,16,14 - PUSHBUTTON "2",IDC_BUTTON_18,36,20,16,14 - PUSHBUTTON "3",IDC_BUTTON_19,56,20,16,14 - PUSHBUTTON "4",IDC_BUTTON_20,16,36,16,14 - PUSHBUTTON "A",IDC_BUTTON_21,76,20,16,14 - GROUPBOX "DTMF Events",IDC_STATIC_GROUP_DTMF,4,4,188,132 - CONTROL "",IDC_CHECK_DTMF_PLAYOUT_RX,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,21,12,14 - LTEXT "Play out-band RX",IDC_STATIC_PLAYOUT_RX,101,24,56,8 - CONTROL "",IDC_CHECK_DTMF_PLAY_TONE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,160,39,12,14 - LTEXT "Play tone locally",IDC_STATIC_PLAY_TONE,101,41,52,8 - EDITTEXT IDC_EDIT_EVENT_LENGTH,44,163,28,14,ES_AUTOHSCROLL - LTEXT "Duration",IDC_STATIC_EVENT_LENGTH,12,165,28,8 - EDITTEXT IDC_EDIT_EVENT_ATTENUATION,44,183,28,14,ES_AUTOHSCROLL - LTEXT "Volume",IDC_STATIC_EVENT_ATTENUATION,12,186,24,8 - CONTROL "Inband",IDC_CHECK_EVENT_INBAND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,84,163,40,14,WS_EX_DLGMODALFRAME - CONTROL "Feedback",IDC_CHECK_DTMF_FEEDBACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,16,112,48,14,WS_EX_DLGMODALFRAME - CONTROL "",IDC_CHECK_DIRECT_FEEDBACK,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,96,112,12,14 - LTEXT "Direct",IDC_STATIC_DIRECT_FEEDBACK,72,115,20,8 - CONTROL "Single",IDC_RADIO_SINGLE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,112,68,35,10 - CONTROL "Sequence",IDC_RADIO_MULTI,"Button",BS_AUTORADIOBUTTON,112,80,47,10 - CONTROL "Start/Stop",IDC_RADIO_START_STOP,"Button",BS_AUTORADIOBUTTON,112,92,49,10 - GROUPBOX "Mode",IDC_STATIC_MODE,100,56,68,52 - EDITTEXT IDC_EDIT_EVENT_RX_PT,220,20,24,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_EVENT_TX_PT,220,41,24,14,ES_AUTOHSCROLL - LTEXT "RX",IDC_STATIC_EVENT_RX_PT,208,22,10,8 - LTEXT "TX",IDC_STATIC_EVENT_TX_PT,208,42,9,8 - PUSHBUTTON "Set",IDC_BUTTON_SET_TX_TELEPHONE_PT,248,41,24,14 - PUSHBUTTON "Set",IDC_BUTTON_SET_RX_TELEPHONE_PT,248,20,24,14 - GROUPBOX "Payload Type",IDC_STATIC_PT,200,4,80,56 - EDITTEXT IDC_EDIT_EVENT_CODE,128,163,28,14,ES_AUTOHSCROLL - LTEXT "Event code",IDC_STATIC_EVENT_CODE,125,152,37,8 - PUSHBUTTON "Send",IDC_BUTTON_SEND_TELEPHONE_EVENT,160,163,24,14 - CONTROL "On/Off",IDC_CHECK_EVENT_DETECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,208,80,40,14,WS_EX_DLGMODALFRAME - CONTROL "",IDC_CHECK_DETECT_INBAND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,208,100,12,14 - CONTROL "",IDC_CHECK_DETECT_OUT_OF_BAND,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,208,116,12,14 - LTEXT "Inband",IDC_STATIC_INBAND_DETECTION,220,103,24,8 - LTEXT "Outband",IDC_STATIC_OUT_OF_BAND_DETECTION,220,120,29,8 - GROUPBOX "Event Detection",IDC_STATIC_EVENT_DETECTION,200,68,108,68 - GROUPBOX "Telephone Events",IDC_STATIC_TELEPHONE_EVENTS,4,140,188,64 - EDITTEXT IDC_EDIT_ON_EVENT_OUT_OF_BAND,252,117,48,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_ON_EVENT_INBAND,252,101,48,14,ES_AUTOHSCROLL - LTEXT "=> Detections",IDC_STATIC_EVEN,253,90,48,8 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,0 - PRODUCTVERSION 1,0,0,0 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904e4" - BEGIN - VALUE "FileDescription", "WebRTC VoiceEngine Test" - VALUE "FileVersion", "1.0.0.0" - VALUE "InternalName", "WinTest.exe" - VALUE "LegalCopyright", "Copyright (c) 2011 The WebRTC project authors. All Rights Reserved." - VALUE "OriginalFilename", "WinTest.exe" - VALUE "ProductName", "WebRTC VoiceEngine" - VALUE "ProductVersion", "1.0.0.0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1252 - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_ABOUTBOX, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 228 - TOPMARGIN, 7 - BOTTOMMARGIN, 48 - END - - IDD_WINTEST_DIALOG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 789 - TOPMARGIN, 7 - BOTTOMMARGIN, 271 - END - - IDD_DTMF_DIALOG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 309 - TOPMARGIN, 7 - BOTTOMMARGIN, 205 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// String Table -// - -STRINGTABLE -BEGIN - IDS_ABOUTBOX "&About WinTest..." -END - -#endif // Swedish resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// -#define _AFX_NO_SPLITTER_RESOURCES -#define _AFX_NO_OLE_RESOURCES -#define _AFX_NO_TRACKER_RESOURCES -#define _AFX_NO_PROPERTY_RESOURCES - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_SVE) -LANGUAGE 29, 1 -#pragma code_page(1252) -#include "res\WinTest.rc2" // non-Microsoft Visual C++ edited resources -#include "afxres.rc" // Standard components -#endif - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/webrtc/voice_engine/test/win_test/WinTestDlg.cc b/webrtc/voice_engine/test/win_test/WinTestDlg.cc deleted file mode 100644 index 4436a86d86..0000000000 --- a/webrtc/voice_engine/test/win_test/WinTestDlg.cc +++ /dev/null @@ -1,3367 +0,0 @@ -/* - * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include -#include "webrtc/test/testsupport/fileutils.h" -#include "webrtc/voice_engine/test/win_test/WinTest.h" -#include "webrtc/voice_engine/test/win_test/WinTestDlg.h" -#include "webrtc/voice_engine/test/win_test/stdafx.h" - -#ifdef _DEBUG -#define new DEBUG_NEW -#endif - -using namespace webrtc; - -unsigned char key[30] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; - -// Hack to convert char to TCHAR, using two buffers to be able to -// call twice in the same statement -TCHAR convertTemp1[256] = {0}; -TCHAR convertTemp2[256] = {0}; -bool convertBufferSwitch(false); -TCHAR* CharToTchar(const char* str, int len) -{ -#ifdef _UNICODE - TCHAR* temp = convertBufferSwitch ? convertTemp1 : convertTemp2; - convertBufferSwitch = !convertBufferSwitch; - memset(temp, 0, sizeof(convertTemp1)); - MultiByteToWideChar(CP_UTF8, 0, str, len, temp, 256); - return temp; -#else - return str; -#endif -} - -// Hack to convert TCHAR to char -char convertTemp3[256] = {0}; -char* TcharToChar(TCHAR* str, int len) -{ -#ifdef _UNICODE - memset(convertTemp3, 0, sizeof(convertTemp3)); - WideCharToMultiByte(CP_UTF8, 0, str, len, convertTemp3, 256, 0, 0); - return convertTemp3; -#else - return str; -#endif -} - -// ---------------------------------------------------------------------------- -// VoiceEngineObserver -// ---------------------------------------------------------------------------- - -void CWinTestDlg::CallbackOnError(int channel, int errCode) -{ - _nErrorCallbacks++; - - CString str; - str.Format(_T("[#%d] CallbackOnError(channel=%d) => errCode = %d"), _nErrorCallbacks, channel, errCode); - if (errCode == VE_RECEIVE_PACKET_TIMEOUT) - { - str += _T(" <=> VE_RECEIVE_PACKET_TIMEOUT"); - } - else if (errCode == VE_PACKET_RECEIPT_RESTARTED) - { - str += _T(" <=> VE_PACKET_RECEIPT_RESTARTED"); - } - else if (errCode == VE_RUNTIME_PLAY_WARNING) - { - str += _T(" <=> VE_RUNTIME_PLAY_WARNING"); - } - else if (errCode == VE_RUNTIME_REC_WARNING) - { - str += _T(" <=> VE_RUNTIME_REC_WARNING"); - } - else if (errCode == VE_RUNTIME_PLAY_ERROR) - { - str += _T(" <=> VE_RUNTIME_PLAY_ERROR"); - } - else if (errCode == VE_RUNTIME_REC_ERROR) - { - str += _T(" <=> VE_RUNTIME_REC_ERROR"); - } - else if (errCode == VE_SATURATION_WARNING) - { - str += _T(" <=> VE_SATURATION_WARNING"); - } - else if (errCode == VE_TYPING_NOISE_WARNING) - { - str += _T(" <=> VE_TYPING_NOISE_WARNING"); - } - else if (errCode == VE_REC_DEVICE_REMOVED) - { - str += _T(" <=> VE_REC_DEVICE_REMOVED"); - } - // AfxMessageBox((LPCTSTR)str, MB_OK); - SetDlgItemText(IDC_EDIT_ERROR_CALLBACK, (LPCTSTR)str); -} - -// ---------------------------------------------------------------------------- -// VoERTPObserver -// ---------------------------------------------------------------------------- - -void CWinTestDlg::OnIncomingCSRCChanged(int channel, unsigned int CSRC, bool added) -{ - CString str; - str.Format(_T("OnIncomingCSRCChanged(channel=%d) => CSRC=%u, added=%d"), channel, CSRC, added); - SetDlgItemText(IDC_EDIT_ERROR_CALLBACK, (LPCTSTR)str); -} - -void CWinTestDlg::OnIncomingSSRCChanged(int channel, unsigned int SSRC) -{ - CString str; - str.Format(_T("OnIncomingSSRCChanged(channel=%d) => SSRC=%u"), channel, SSRC); - SetDlgItemText(IDC_EDIT_ERROR_CALLBACK, (LPCTSTR)str); -} - -// ---------------------------------------------------------------------------- -// Transport -// ---------------------------------------------------------------------------- - -class MyTransport : public Transport -{ -public: - MyTransport(VoENetwork* veNetwork); - int SendPacket(int channel, const void* data, size_t len) override; - int SendRTCPPacket(int channel, const void* data, size_t len) override; - -private: - VoENetwork* _veNetworkPtr; -}; - -MyTransport::MyTransport(VoENetwork* veNetwork) : - _veNetworkPtr(veNetwork) -{ -} - -int -MyTransport::SendPacket(int channel, const void *data, size_t len) -{ - _veNetworkPtr->ReceivedRTPPacket(channel, data, len); - return len; -} - -int -MyTransport::SendRTCPPacket(int channel, const void *data, size_t len) -{ - _veNetworkPtr->ReceivedRTCPPacket(channel, data, len); - return len; -} - -// ---------------------------------------------------------------------------- -// VoEMediaProcess -// ---------------------------------------------------------------------------- - -class MediaProcessImpl : public VoEMediaProcess -{ -public: - MediaProcessImpl(); - virtual void Process(int channel, - ProcessingTypes type, - int16_t audio_10ms[], - int length, - int samplingFreqHz, - bool stereo); -}; - -MediaProcessImpl::MediaProcessImpl() -{ -} - -void MediaProcessImpl::Process(int channel, - ProcessingTypes type, - int16_t audio_10ms[], - int length, - int samplingFreqHz, - bool stereo) -{ - int x = rand() % 100; - - for (int i = 0; i < length; i++) - { - if (channel == -1) - { - if (type == kPlaybackAllChannelsMixed) - { - // playout: scale up - if (!stereo) - { - audio_10ms[i] = (audio_10ms[i] << 2); - } - else - { - audio_10ms[2*i] = (audio_10ms[2*i] << 2); - audio_10ms[2*i+1] = (audio_10ms[2*i+1] << 2); - } - } - else - { - // recording: emulate packet loss by "dropping" 10% of the packets - if (x >= 0 && x < 10) - { - if (!stereo) - { - audio_10ms[i] = 0; - } - else - { - audio_10ms[2*i] = 0; - audio_10ms[2*i+1] = 0; - } - } - } - } - else - { - if (type == kPlaybackPerChannel) - { - // playout: mute - if (!stereo) - { - audio_10ms[i] = 0; - } - else - { - audio_10ms[2*i] = 0; - audio_10ms[2*i+1] = 0; - } - } - else - { - // recording: emulate packet loss by "dropping" 50% of the packets - if (x >= 0 && x < 50) - { - if (!stereo) - { - audio_10ms[i] = 0; - } - else - { - audio_10ms[2*i] = 0; - audio_10ms[2*i+1] = 0; - } - } - } - } - } -} - -// ---------------------------------------------------------------------------- -// TelephoneEventObserver -// ---------------------------------------------------------------------------- - -class TelephoneEventObserver: public VoETelephoneEventObserver -{ -public: - TelephoneEventObserver(CWnd* editControlOut, CWnd* editControlIn); - virtual void OnReceivedTelephoneEventInband(int channel, int eventCode, - bool endOfEvent); - virtual void OnReceivedTelephoneEventOutOfBand(int channel, int eventCode, - bool endOfEvent); -private: - CWnd* _editControlOutPtr; - CWnd* _editControlInPtr; -}; - -TelephoneEventObserver::TelephoneEventObserver(CWnd* editControlOut, CWnd* editControlIn) : - _editControlOutPtr(editControlOut), - _editControlInPtr(editControlIn) -{ -} - -void TelephoneEventObserver::OnReceivedTelephoneEventInband(int channel, - int eventCode, - bool endOfEvent) -{ - CString msg; - if (endOfEvent) - { - msg.AppendFormat(_T("%d [END]"), eventCode); - _editControlInPtr->SetWindowText((LPCTSTR)msg); - } - else - { - msg.AppendFormat(_T("%d [START]"), eventCode); - _editControlInPtr->SetWindowText((LPCTSTR)msg); - } -} - -void TelephoneEventObserver::OnReceivedTelephoneEventOutOfBand(int channel, - int eventCode, - bool endOfEvent) -{ - CString msg; - if (endOfEvent) - { - msg.AppendFormat(_T("%d [END]"), eventCode); - _editControlOutPtr->SetWindowText((LPCTSTR)msg); - } - else - { - msg.AppendFormat(_T("%d [START]"), eventCode); - _editControlOutPtr->SetWindowText((LPCTSTR)msg); - } -} - -// ---------------------------------------------------------------------------- -// RxVadCallback -// ---------------------------------------------------------------------------- - -class RxCallback : public VoERxVadCallback -{ -public: - RxCallback() : vad_decision(-1) {}; - - virtual void OnRxVad(int , int vadDecision) - { - vad_decision = vadDecision; - } - - int vad_decision; -}; - -// ---------------------------------------------------------------------------- -// CAboutDlg dialog -// ---------------------------------------------------------------------------- - -class CAboutDlg : public CDialog -{ -public: - CAboutDlg(); - -// Dialog Data - enum { IDD = IDD_ABOUTBOX }; - - protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - -// Implementation -protected: - DECLARE_MESSAGE_MAP() -}; - -CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) -{ -} - -void CAboutDlg::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); -} - -BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) -END_MESSAGE_MAP() - -// ---------------------------------------------------------------------------- -// CTelephonyEvent dialog -// ---------------------------------------------------------------------------- - -class CTelephonyEvent : public CDialog -{ - DECLARE_DYNAMIC(CTelephonyEvent) - -public: - CTelephonyEvent(VoiceEngine* voiceEngine, int channel, CDialog* pParentDialog, CWnd* pParent = NULL); // standard constructor - virtual ~CTelephonyEvent(); - -// Dialog Data - enum { IDD = IDD_DTMF_DIALOG }; - -protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - virtual BOOL OnInitDialog(); - - DECLARE_MESSAGE_MAP() -public: - afx_msg void OnBnClickedButton1(); - afx_msg void OnBnClickedButton2(); - afx_msg void OnBnClickedButton3(); - afx_msg void OnBnClickedButton4(); - afx_msg void OnBnClickedButton5(); - afx_msg void OnBnClickedButton6(); - afx_msg void OnBnClickedButton7(); - afx_msg void OnBnClickedButton8(); - afx_msg void OnBnClickedButton9(); - afx_msg void OnBnClickedButton10(); - afx_msg void OnBnClickedButton11(); - afx_msg void OnBnClickedButton12(); - afx_msg void OnBnClickedButtonA(); - afx_msg void OnBnClickedButtonB(); - afx_msg void OnBnClickedButtonC(); - afx_msg void OnBnClickedButtonD(); - afx_msg void OnBnClickedCheckDtmfPlayoutRx(); - afx_msg void OnBnClickedCheckDtmfPlayTone(); - afx_msg void OnBnClickedCheckStartStopMode(); - afx_msg void OnBnClickedCheckEventInband(); - afx_msg void OnBnClickedCheckDtmfFeedback(); - afx_msg void OnBnClickedCheckDirectFeedback(); - afx_msg void OnBnClickedRadioSingle(); - afx_msg void OnBnClickedRadioMulti(); - afx_msg void OnBnClickedRadioStartStop(); - afx_msg void OnBnClickedButtonSetRxTelephonePt(); - afx_msg void OnBnClickedButtonSetTxTelephonePt(); - afx_msg void OnBnClickedButtonSendTelephoneEvent(); - afx_msg void OnBnClickedCheckDetectInband(); - afx_msg void OnBnClickedCheckDetectOutOfBand(); - afx_msg void OnBnClickedCheckEventDetection(); - -private: - void SendTelephoneEvent(unsigned char eventCode); - -private: - VoiceEngine* _vePtr; - VoEBase* _veBasePtr; - VoEDtmf* _veDTMFPtr; - VoECodec* _veCodecPtr; - int _channel; - CString _strMsg; - CDialog* _parentDialogPtr; - TelephoneEventObserver* _telephoneEventObserverPtr; - bool _PlayDtmfToneLocally; - bool _modeStartStop; - bool _modeSingle; - bool _modeSequence; - bool _playingDTMFTone; - bool _outOfBandEventDetection; - bool _inbandEventDetection; -}; - -IMPLEMENT_DYNAMIC(CTelephonyEvent, CDialog) - -CTelephonyEvent::CTelephonyEvent(VoiceEngine* voiceEngine, - int channel, - CDialog* pParentDialog, - CWnd* pParent /*=NULL*/) - : _vePtr(voiceEngine), - _channel(channel), - _PlayDtmfToneLocally(false), - _modeStartStop(false), - _modeSingle(true), - _modeSequence(false), - _playingDTMFTone(false), - _outOfBandEventDetection(true), - _inbandEventDetection(false), - _parentDialogPtr(pParentDialog), - _telephoneEventObserverPtr(NULL), - CDialog(CTelephonyEvent::IDD, pParent) -{ - _veBasePtr = VoEBase::GetInterface(_vePtr); - _veDTMFPtr = VoEDtmf::GetInterface(_vePtr); - _veCodecPtr = VoECodec::GetInterface(_vePtr); -} - -CTelephonyEvent::~CTelephonyEvent() -{ - _veDTMFPtr->Release(); - _veCodecPtr->Release(); - _veBasePtr->Release(); - - if (_telephoneEventObserverPtr) - { - _veDTMFPtr->DeRegisterTelephoneEventDetection(_channel); - delete _telephoneEventObserverPtr; - _telephoneEventObserverPtr = NULL; - } -} - -void CTelephonyEvent::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); -} - - -BEGIN_MESSAGE_MAP(CTelephonyEvent, CDialog) - ON_BN_CLICKED(IDC_BUTTON_1, &CTelephonyEvent::OnBnClickedButton1) - ON_BN_CLICKED(IDC_BUTTON_2, &CTelephonyEvent::OnBnClickedButton2) - ON_BN_CLICKED(IDC_BUTTON_3, &CTelephonyEvent::OnBnClickedButton3) - ON_BN_CLICKED(IDC_BUTTON_4, &CTelephonyEvent::OnBnClickedButton4) - ON_BN_CLICKED(IDC_BUTTON_5, &CTelephonyEvent::OnBnClickedButton5) - ON_BN_CLICKED(IDC_BUTTON_6, &CTelephonyEvent::OnBnClickedButton6) - ON_BN_CLICKED(IDC_BUTTON_7, &CTelephonyEvent::OnBnClickedButton7) - ON_BN_CLICKED(IDC_BUTTON_8, &CTelephonyEvent::OnBnClickedButton8) - ON_BN_CLICKED(IDC_BUTTON_9, &CTelephonyEvent::OnBnClickedButton9) - ON_BN_CLICKED(IDC_BUTTON_10, &CTelephonyEvent::OnBnClickedButton10) - ON_BN_CLICKED(IDC_BUTTON_11, &CTelephonyEvent::OnBnClickedButton11) - ON_BN_CLICKED(IDC_BUTTON_12, &CTelephonyEvent::OnBnClickedButton12) - ON_BN_CLICKED(IDC_BUTTON_13, &CTelephonyEvent::OnBnClickedButtonA) - ON_BN_CLICKED(IDC_BUTTON_14, &CTelephonyEvent::OnBnClickedButtonB) - ON_BN_CLICKED(IDC_BUTTON_15, &CTelephonyEvent::OnBnClickedButtonC) - ON_BN_CLICKED(IDC_BUTTON_16, &CTelephonyEvent::OnBnClickedButtonD) - ON_BN_CLICKED(IDC_CHECK_DTMF_PLAYOUT_RX, &CTelephonyEvent::OnBnClickedCheckDtmfPlayoutRx) - ON_BN_CLICKED(IDC_CHECK_DTMF_PLAY_TONE, &CTelephonyEvent::OnBnClickedCheckDtmfPlayTone) - ON_BN_CLICKED(IDC_CHECK_EVENT_INBAND, &CTelephonyEvent::OnBnClickedCheckEventInband) - ON_BN_CLICKED(IDC_CHECK_DTMF_FEEDBACK, &CTelephonyEvent::OnBnClickedCheckDtmfFeedback) - ON_BN_CLICKED(IDC_CHECK_DIRECT_FEEDBACK, &CTelephonyEvent::OnBnClickedCheckDirectFeedback) - ON_BN_CLICKED(IDC_RADIO_SINGLE, &CTelephonyEvent::OnBnClickedRadioSingle) - ON_BN_CLICKED(IDC_RADIO_MULTI, &CTelephonyEvent::OnBnClickedRadioMulti) - ON_BN_CLICKED(IDC_RADIO_START_STOP, &CTelephonyEvent::OnBnClickedRadioStartStop) - ON_BN_CLICKED(IDC_BUTTON_SET_RX_TELEPHONE_PT, &CTelephonyEvent::OnBnClickedButtonSetRxTelephonePt) - ON_BN_CLICKED(IDC_BUTTON_SET_TX_TELEPHONE_PT, &CTelephonyEvent::OnBnClickedButtonSetTxTelephonePt) - ON_BN_CLICKED(IDC_BUTTON_SEND_TELEPHONE_EVENT, &CTelephonyEvent::OnBnClickedButtonSendTelephoneEvent) - ON_BN_CLICKED(IDC_CHECK_DETECT_INBAND, &CTelephonyEvent::OnBnClickedCheckDetectInband) - ON_BN_CLICKED(IDC_CHECK_DETECT_OUT_OF_BAND, &CTelephonyEvent::OnBnClickedCheckDetectOutOfBand) - ON_BN_CLICKED(IDC_CHECK_EVENT_DETECTION, &CTelephonyEvent::OnBnClickedCheckEventDetection) -END_MESSAGE_MAP() - - -// CTelephonyEvent message handlers - -BOOL CTelephonyEvent::OnInitDialog() -{ - CDialog::OnInitDialog(); - - CString str; - GetWindowText(str); - str.AppendFormat(_T(" [channel = %d]"), _channel); - SetWindowText(str); - - // Update dialog with latest playout state - bool enabled(false); - _veDTMFPtr->GetDtmfPlayoutStatus(_channel, enabled); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_DTMF_PLAYOUT_RX); - button->SetCheck(enabled ? BST_CHECKED : BST_UNCHECKED); - - // Update dialog with latest feedback state - bool directFeedback(false); - _veDTMFPtr->GetDtmfFeedbackStatus(enabled, directFeedback); - button = (CButton*)GetDlgItem(IDC_CHECK_DTMF_FEEDBACK); - button->SetCheck(enabled ? BST_CHECKED : BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_DIRECT_FEEDBACK); - button->SetCheck(directFeedback ? BST_CHECKED : BST_UNCHECKED); - - // Default event length is 160 ms - SetDlgItemInt(IDC_EDIT_EVENT_LENGTH, 160); - - // Default event attenuation is 10 (<-> -10dBm0) - SetDlgItemInt(IDC_EDIT_EVENT_ATTENUATION, 10); - - // Current event-detection status - TelephoneEventDetectionMethods detectionMethod(kOutOfBand); - if (_veDTMFPtr->GetTelephoneEventDetectionStatus(_channel, enabled, detectionMethod) == 0) - { - // DTMF detection is supported - if (enabled) - { - button = (CButton*)GetDlgItem(IDC_CHECK_EVENT_DETECTION); - button->SetCheck(BST_CHECKED); - } - if (detectionMethod == kOutOfBand || detectionMethod == kInAndOutOfBand) - { - button = (CButton*)GetDlgItem(IDC_CHECK_DETECT_OUT_OF_BAND); - button->SetCheck(BST_CHECKED); - } - if (detectionMethod == kInBand || detectionMethod == kInAndOutOfBand) - { - button = (CButton*)GetDlgItem(IDC_CHECK_DETECT_INBAND); - button->SetCheck(BST_CHECKED); - } - } - else - { - // DTMF detection is not supported - GetDlgItem(IDC_CHECK_EVENT_DETECTION)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_DETECT_OUT_OF_BAND)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_DETECT_INBAND)->EnableWindow(FALSE); - GetDlgItem(IDC_EDIT_ON_EVENT_INBAND)->EnableWindow(FALSE); - GetDlgItem(IDC_EDIT_ON_EVENT_OUT_OF_BAND)->EnableWindow(FALSE); - } - - // Telephone-event PTs - unsigned char pt(0); - _veDTMFPtr->GetSendTelephoneEventPayloadType(_channel, pt); - SetDlgItemInt(IDC_EDIT_EVENT_TX_PT, pt); - - CodecInst codec; - strcpy_s(codec.plname, 32, "telephone-event"); codec.channels = 1; codec.plfreq = 8000; - _veCodecPtr->GetRecPayloadType(_channel, codec); - SetDlgItemInt(IDC_EDIT_EVENT_RX_PT, codec.pltype); - - if (_modeSingle) - { - ((CButton*)GetDlgItem(IDC_RADIO_SINGLE))->SetCheck(BST_CHECKED); - } - else if (_modeStartStop) - { - ((CButton*)GetDlgItem(IDC_RADIO_START_STOP))->SetCheck(BST_CHECKED); - } - else if (_modeSequence) - { - ((CButton*)GetDlgItem(IDC_RADIO_MULTI))->SetCheck(BST_CHECKED); - } - - return TRUE; // return TRUE unless you set the focus to a control -} -void CTelephonyEvent::SendTelephoneEvent(unsigned char eventCode) -{ - BOOL ret; - int lengthMs(0); - int attenuationDb(0); - bool outBand(false); - int res(0); - - // tone length - if (!_modeStartStop) - { - lengthMs = GetDlgItemInt(IDC_EDIT_EVENT_LENGTH, &ret); - if (ret == FALSE) - { - // use default length if edit field is empty - lengthMs = 160; - } - } - - // attenuation - attenuationDb = GetDlgItemInt(IDC_EDIT_EVENT_ATTENUATION, &ret); - if (ret == FALSE) - { - // use default length if edit field is empty - attenuationDb = 10; - } - - // out-band or in-band - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EVENT_INBAND); - int check = button->GetCheck(); - outBand = (check == BST_UNCHECKED); - - if (eventCode < 16) - SetDlgItemInt(IDC_EDIT_DTMF_EVENT, eventCode); - - if (_PlayDtmfToneLocally) - { - // --- PlayDtmfTone - - if (_modeSingle) - { - TEST2(_veDTMFPtr->PlayDtmfTone(eventCode, lengthMs, attenuationDb) == 0, - _T("PlayDtmfTone(eventCode=%u, lengthMs=%d, attenuationDb=%d)"), eventCode, lengthMs, attenuationDb); - } - else if (_modeStartStop) - { - if (!_playingDTMFTone) - { - TEST2((res = _veDTMFPtr->StartPlayingDtmfTone(eventCode, attenuationDb)) == 0, - _T("StartPlayingDtmfTone(eventCode=%u, attenuationDb=%d)"), eventCode, attenuationDb); - } - else - { - TEST2((res = _veDTMFPtr->StopPlayingDtmfTone()) == 0, - _T("StopPlayingDTMFTone()")); - } - if (res == 0) - _playingDTMFTone = !_playingDTMFTone; - } - else if (_modeSequence) - { - int nTones(1); - int sleepMs(0); - int lenMult(1); - if (eventCode == 1) - { - nTones = 2; - sleepMs = lengthMs; - lenMult = 1; - } - else if (eventCode == 2) - { - nTones = 2; - sleepMs = lengthMs/2; - lenMult = 2; - } - else if (eventCode == 3) - { - nTones = 3; - sleepMs = 0; - lenMult = 1; - } - for (int i = 0; i < nTones; i++) - { - TEST2(_veDTMFPtr->PlayDtmfTone(eventCode, lengthMs, attenuationDb) == 0, - _T("PlayDtmfTone(eventCode=%u, outBand=%d, lengthMs=%d, attenuationDb=%d)"), eventCode, lengthMs, attenuationDb); - Sleep(sleepMs); - lengthMs = lenMult*lengthMs; - eventCode++; - } - } - } - else - { - // --- SendTelephoneEvent - - if (_modeSingle) - { - TEST2(_veDTMFPtr->SendTelephoneEvent(_channel, eventCode, outBand, lengthMs, attenuationDb) == 0, - _T("SendTelephoneEvent(channel=%d, eventCode=%u, outBand=%d, lengthMs=%d, attenuationDb=%d)"), _channel, eventCode, outBand, lengthMs, attenuationDb); - } - else if (_modeStartStop) - { - TEST2(false, _T("*** NOT IMPLEMENTED ***")); - } - else if (_modeSequence) - { - int nTones(1); - int sleepMs(0); - int lenMult(1); - if (eventCode == 1) - { - nTones = 2; - sleepMs = lengthMs; - lenMult = 1; - } - else if (eventCode == 2) - { - eventCode = 1; - nTones = 2; - sleepMs = lengthMs/2; - lenMult = 2; - } - else if (eventCode == 3) - { - eventCode = 1; - nTones = 3; - sleepMs = 0; - lenMult = 1; - } - for (int i = 0; i < nTones; i++) - { - TEST2(_veDTMFPtr->SendTelephoneEvent(_channel, eventCode, outBand, lengthMs, attenuationDb) == 0, - _T("SendTelephoneEvent(channel=%d, eventCode=%u, outBand=%d, lengthMs=%d, attenuationDb=%d)"), _channel, eventCode, outBand, lengthMs, attenuationDb); - Sleep(sleepMs); - lengthMs = lenMult*lengthMs; - eventCode++; - } - } - } -} - -void CTelephonyEvent::OnBnClickedButtonSendTelephoneEvent() -{ - BOOL ret; - unsigned char eventCode(0); - - eventCode = (unsigned char)GetDlgItemInt(IDC_EDIT_EVENT_CODE, &ret); - if (ret == FALSE) - { - return; - } - SendTelephoneEvent(eventCode); -} - -void CTelephonyEvent::OnBnClickedButton1() -{ - SendTelephoneEvent(1); -} - -void CTelephonyEvent::OnBnClickedButton2() -{ - SendTelephoneEvent(2); -} - -void CTelephonyEvent::OnBnClickedButton3() -{ - SendTelephoneEvent(3); -} - -void CTelephonyEvent::OnBnClickedButton4() -{ - SendTelephoneEvent(4); -} - -void CTelephonyEvent::OnBnClickedButton5() -{ - SendTelephoneEvent(5); -} - -void CTelephonyEvent::OnBnClickedButton6() -{ - SendTelephoneEvent(6); -} - -void CTelephonyEvent::OnBnClickedButton7() -{ - SendTelephoneEvent(7); -} - -void CTelephonyEvent::OnBnClickedButton8() -{ - SendTelephoneEvent(8); -} - -void CTelephonyEvent::OnBnClickedButton9() -{ - SendTelephoneEvent(9); -} - -void CTelephonyEvent::OnBnClickedButton10() -{ - // * - SendTelephoneEvent(10); -} - -void CTelephonyEvent::OnBnClickedButton11() -{ - SendTelephoneEvent(0); -} - -void CTelephonyEvent::OnBnClickedButton12() -{ - // # - SendTelephoneEvent(11); -} - -void CTelephonyEvent::OnBnClickedButtonA() -{ - SendTelephoneEvent(12); -} - -void CTelephonyEvent::OnBnClickedButtonB() -{ - SendTelephoneEvent(13); -} - -void CTelephonyEvent::OnBnClickedButtonC() -{ - SendTelephoneEvent(14); -} - -void CTelephonyEvent::OnBnClickedButtonD() -{ - SendTelephoneEvent(15); -} - -void CTelephonyEvent::OnBnClickedCheckDtmfPlayoutRx() -{ - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_DTMF_PLAYOUT_RX); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - TEST2(_veDTMFPtr->SetDtmfPlayoutStatus(_channel, enable) == 0, _T("SetDtmfPlayoutStatus(channel=%d, enable=%d)"), _channel, enable); -} - -void CTelephonyEvent::OnBnClickedCheckDtmfPlayTone() -{ - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_DTMF_PLAY_TONE); - int check = button->GetCheck(); - _PlayDtmfToneLocally = (check == BST_CHECKED); -} - -void CTelephonyEvent::OnBnClickedRadioSingle() -{ - _modeStartStop = false; - _modeSingle = true; - _modeSequence = false; -} - -void CTelephonyEvent::OnBnClickedRadioMulti() -{ - _modeStartStop = false; - _modeSingle = false; - _modeSequence = true; -} - -void CTelephonyEvent::OnBnClickedRadioStartStop() -{ - // CButton* button = (CButton*)GetDlgItem(IDC_RADIO_START_STOP); - // int check = button->GetCheck(); - _modeStartStop = true; - _modeSingle = false; - _modeSequence = false; - // GetDlgItem(IDC_EDIT_EVENT_LENGTH)->EnableWindow(); -} - -void CTelephonyEvent::OnBnClickedCheckEventInband() -{ - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EVENT_INBAND); - int check = button->GetCheck(); - GetDlgItem(IDC_EDIT_EVENT_CODE)->EnableWindow(check?FALSE:TRUE); - GetDlgItem(IDC_BUTTON_SEND_TELEPHONE_EVENT)->EnableWindow(check?FALSE:TRUE); -} - -void CTelephonyEvent::OnBnClickedCheckDtmfFeedback() -{ - CButton* button(NULL); - - // Retrieve feedback state - button = (CButton*)GetDlgItem(IDC_CHECK_DTMF_FEEDBACK); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - - // Retrieve direct-feedback setting - button = (CButton*)GetDlgItem(IDC_CHECK_DIRECT_FEEDBACK); - check = button->GetCheck(); - const bool directFeedback = (check == BST_CHECKED); - - // GetDlgItem(IDC_CHECK_DIRECT_FEEDBACK)->EnableWindow(enable ? TRUE : FALSE); - - TEST2(_veDTMFPtr->SetDtmfFeedbackStatus(enable, directFeedback) == 0, - _T("SetDtmfFeedbackStatus(enable=%d, directFeedback=%d)"), enable, directFeedback); -} - -void CTelephonyEvent::OnBnClickedCheckDirectFeedback() -{ - CButton* button(NULL); - - // Retrieve feedback state - button = (CButton*)GetDlgItem(IDC_CHECK_DTMF_FEEDBACK); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - - // Retrieve new direct-feedback setting - button = (CButton*)GetDlgItem(IDC_CHECK_DIRECT_FEEDBACK); - check = button->GetCheck(); - const bool directFeedback = (check == BST_CHECKED); - - TEST2(_veDTMFPtr->SetDtmfFeedbackStatus(enable, directFeedback) == 0, - _T("SetDtmfFeedbackStatus(enable=%d, directFeedback=%d)"), enable, directFeedback); -} - -void CTelephonyEvent::OnBnClickedButtonSetRxTelephonePt() -{ - BOOL ret; - int pt = GetDlgItemInt(IDC_EDIT_EVENT_RX_PT, &ret); - if (ret == FALSE || pt < 0 || pt > 127) - return; - CodecInst codec; - strcpy_s(codec.plname, 32, "telephone-event"); - codec.pltype = pt; - codec.channels = 1; - codec.plfreq = 8000; - TEST2(_veCodecPtr->SetRecPayloadType(_channel, codec) == 0, - _T("SetRecPayloadType(channel=%d, codec.pltype=%d)"), _channel, - codec.pltype); -} - -void CTelephonyEvent::OnBnClickedButtonSetTxTelephonePt() -{ - BOOL ret; - int pt = GetDlgItemInt(IDC_EDIT_EVENT_TX_PT, &ret); - if (ret == FALSE || pt < 0 || pt > 127) - return; - TEST2(_veDTMFPtr->SetSendTelephoneEventPayloadType(_channel, pt) == 0, - _T("SetSendTelephoneEventPayloadType(channel=%d, type=%d)"), _channel, - pt); -} - -void CTelephonyEvent::OnBnClickedCheckDetectInband() -{ - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_DETECT_INBAND); - int check = button->GetCheck(); - _inbandEventDetection = (check == BST_CHECKED); - - bool enabled(false); - TelephoneEventDetectionMethods detectionMethod; - _veDTMFPtr->GetTelephoneEventDetectionStatus(_channel, enabled, detectionMethod); - if (enabled) - { - // deregister - _veDTMFPtr->DeRegisterTelephoneEventDetection(_channel); - delete _telephoneEventObserverPtr; - _telephoneEventObserverPtr = NULL; - SetDlgItemText(IDC_EDIT_ON_EVENT_INBAND,_T("")); - SetDlgItemText(IDC_EDIT_ON_EVENT_OUT_OF_BAND,_T("")); - } - OnBnClickedCheckEventDetection(); -} - -void CTelephonyEvent::OnBnClickedCheckDetectOutOfBand() -{ - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_DETECT_OUT_OF_BAND); - int check = button->GetCheck(); - _outOfBandEventDetection = (check == BST_CHECKED); - - bool enabled(false); - TelephoneEventDetectionMethods detectionMethod; - _veDTMFPtr->GetTelephoneEventDetectionStatus(_channel, enabled, detectionMethod); - if (enabled) - { - // deregister - _veDTMFPtr->DeRegisterTelephoneEventDetection(_channel); - delete _telephoneEventObserverPtr; - _telephoneEventObserverPtr = NULL; - SetDlgItemText(IDC_EDIT_ON_EVENT_INBAND,_T("")); - SetDlgItemText(IDC_EDIT_ON_EVENT_OUT_OF_BAND,_T("")); - } - OnBnClickedCheckEventDetection(); -} - -void CTelephonyEvent::OnBnClickedCheckEventDetection() -{ - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EVENT_DETECTION); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - - if (enable) - { - TelephoneEventDetectionMethods method(kInBand); - if (_inbandEventDetection && !_outOfBandEventDetection) - method = kInBand; - else if (!_inbandEventDetection && _outOfBandEventDetection) - method = kOutOfBand; - else if (_inbandEventDetection && _outOfBandEventDetection) - method = kInAndOutOfBand; - - CWnd* wndOut = GetDlgItem(IDC_EDIT_ON_EVENT_OUT_OF_BAND); - CWnd* wndIn = GetDlgItem(IDC_EDIT_ON_EVENT_INBAND); - _telephoneEventObserverPtr = new TelephoneEventObserver(wndOut, wndIn); - - TEST2(_veDTMFPtr->RegisterTelephoneEventDetection(_channel, method, *_telephoneEventObserverPtr) == 0, - _T("RegisterTelephoneEventDetection(channel=%d, detectionMethod=%d)"), _channel, method); - } - else - { - TEST2(_veDTMFPtr->DeRegisterTelephoneEventDetection(_channel) == 0, - _T("DeRegisterTelephoneEventDetection(channel=%d)"), _channel); - delete _telephoneEventObserverPtr; - _telephoneEventObserverPtr = NULL; - SetDlgItemText(IDC_EDIT_ON_EVENT_INBAND,_T("")); - SetDlgItemText(IDC_EDIT_ON_EVENT_OUT_OF_BAND,_T("")); - } -} - -// ============================================================================ -// CWinTestDlg dialog -// ============================================================================ - -CWinTestDlg::CWinTestDlg(CWnd* pParent /*=NULL*/) - : CDialog(CWinTestDlg::IDD, pParent), - _failCount(0), - _vePtr(NULL), - _veBasePtr(NULL), - _veCodecPtr(NULL), - _veNetworkPtr(NULL), - _veFilePtr(NULL), - _veHardwarePtr(NULL), - _veExternalMediaPtr(NULL), - _veApmPtr(NULL), - _veRtpRtcpPtr(NULL), - _transportPtr(NULL), - _externalMediaPtr(NULL), - _externalTransport(false), - _externalTransportBuild(false), - _checkPlayFileIn(0), - _checkPlayFileIn1(0), - _checkPlayFileIn2(0), - _checkPlayFileOut1(0), - _checkPlayFileOut2(0), - _checkAGC(0), - _checkAGC1(0), - _checkNS(0), - _checkNS1(0), - _checkEC(0), - _checkVAD1(0), - _checkVAD2(0), - _checkSrtpTx1(0), - _checkSrtpTx2(0), - _checkSrtpRx1(0), - _checkSrtpRx2(0), - _checkConference1(0), - _checkConference2(0), - _checkOnHold1(0), - _checkOnHold2(0), - _strComboIp1(_T("")), - _strComboIp2(_T("")), - _delayEstimate1(false), - _delayEstimate2(false), - _rxVad(false), - _nErrorCallbacks(0), - _timerTicks(0) -{ - m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); - - _vePtr = VoiceEngine::Create(); - - VoiceEngine::SetTraceFilter(kTraceNone); - // VoiceEngine::SetTraceFilter(kTraceAll); - // VoiceEngine::SetTraceFilter(kTraceStream | kTraceStateInfo | kTraceWarning | kTraceError | kTraceCritical | kTraceApiCall | kTraceModuleCall | kTraceMemory | kTraceDebug | kTraceInfo); - // VoiceEngine::SetTraceFilter(kTraceStateInfo | kTraceWarning | kTraceError | kTraceCritical | kTraceApiCall | kTraceModuleCall | kTraceMemory | kTraceInfo); - - VoiceEngine::SetTraceFile("ve_win_test.txt"); - VoiceEngine::SetTraceCallback(NULL); - - if (_vePtr) - { - _veExternalMediaPtr = VoEExternalMedia::GetInterface(_vePtr); - _veVolumeControlPtr = VoEVolumeControl::GetInterface(_vePtr); - _veVideoSyncPtr = VoEVideoSync::GetInterface(_vePtr); - _veNetworkPtr = VoENetwork::GetInterface(_vePtr); - _veFilePtr = VoEFile::GetInterface(_vePtr); - _veApmPtr = VoEAudioProcessing::GetInterface(_vePtr); - - _veBasePtr = VoEBase::GetInterface(_vePtr); - _veCodecPtr = VoECodec::GetInterface(_vePtr); - _veHardwarePtr = VoEHardware::GetInterface(_vePtr); - _veRtpRtcpPtr = VoERTP_RTCP::GetInterface(_vePtr); - _transportPtr = new MyTransport(_veNetworkPtr); - _externalMediaPtr = new MediaProcessImpl(); - _rxVadObserverPtr = new RxCallback(); - } - - _veBasePtr->RegisterVoiceEngineObserver(*this); - - std::string resource_path = webrtc::test::ProjectRootPath(); - if (resource_path == webrtc::test::kCannotFindProjectRootDir) { - _long_audio_file_path = "./"; - } else { - _long_audio_file_path = resource_path + "data\\voice_engine\\"; - } -} - -CWinTestDlg::~CWinTestDlg() -{ - if (_externalMediaPtr) delete _externalMediaPtr; - if (_transportPtr) delete _transportPtr; - if (_rxVadObserverPtr) delete _rxVadObserverPtr; - - if (_veExternalMediaPtr) _veExternalMediaPtr->Release(); - if (_veVideoSyncPtr) _veVideoSyncPtr->Release(); - if (_veVolumeControlPtr) _veVolumeControlPtr->Release(); - - if (_veBasePtr) _veBasePtr->Terminate(); - if (_veBasePtr) _veBasePtr->Release(); - - if (_veCodecPtr) _veCodecPtr->Release(); - if (_veNetworkPtr) _veNetworkPtr->Release(); - if (_veFilePtr) _veFilePtr->Release(); - if (_veHardwarePtr) _veHardwarePtr->Release(); - if (_veApmPtr) _veApmPtr->Release(); - if (_veRtpRtcpPtr) _veRtpRtcpPtr->Release(); - if (_vePtr) - { - VoiceEngine::Delete(_vePtr); - } - VoiceEngine::SetTraceFilter(kTraceNone); -} - -void CWinTestDlg::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); - DDX_CBString(pDX, IDC_COMBO_IP_1, _strComboIp1); - DDX_CBString(pDX, IDC_COMBO_IP_2, _strComboIp2); -} - -BEGIN_MESSAGE_MAP(CWinTestDlg, CDialog) - ON_WM_SYSCOMMAND() - ON_WM_PAINT() - ON_WM_QUERYDRAGICON() - ON_WM_TIMER() - //}}AFX_MSG_MAP - ON_BN_CLICKED(IDC_BUTTON_CREATE_1, &CWinTestDlg::OnBnClickedButtonCreate1) - ON_BN_CLICKED(IDC_BUTTON_DELETE_1, &CWinTestDlg::OnBnClickedButtonDelete1) - ON_BN_CLICKED(IDC_BUTTON_CREATE_2, &CWinTestDlg::OnBnClickedButtonCreate2) - ON_BN_CLICKED(IDC_BUTTON_DELETE_2, &CWinTestDlg::OnBnClickedButtonDelete2) - ON_CBN_SELCHANGE(IDC_COMBO_CODEC_1, &CWinTestDlg::OnCbnSelchangeComboCodec1) - ON_BN_CLICKED(IDC_BUTTON_START_LISTEN_1, &CWinTestDlg::OnBnClickedButtonStartListen1) - ON_BN_CLICKED(IDC_BUTTON_STOP_LISTEN_1, &CWinTestDlg::OnBnClickedButtonStopListen1) - ON_BN_CLICKED(IDC_BUTTON_START_PLAYOUT_1, &CWinTestDlg::OnBnClickedButtonStartPlayout1) - ON_BN_CLICKED(IDC_BUTTON_STOP_PLAYOUT_1, &CWinTestDlg::OnBnClickedButtonStopPlayout1) - ON_BN_CLICKED(IDC_BUTTON_START_SEND_1, &CWinTestDlg::OnBnClickedButtonStartSend1) - ON_BN_CLICKED(IDC_BUTTON_STOP_SEND_1, &CWinTestDlg::OnBnClickedButtonStopSend1) - ON_CBN_SELCHANGE(IDC_COMBO_IP_2, &CWinTestDlg::OnCbnSelchangeComboIp2) - ON_CBN_SELCHANGE(IDC_COMBO_IP_1, &CWinTestDlg::OnCbnSelchangeComboIp1) - ON_CBN_SELCHANGE(IDC_COMBO_CODEC_2, &CWinTestDlg::OnCbnSelchangeComboCodec2) - ON_BN_CLICKED(IDC_BUTTON_START_LISTEN_2, &CWinTestDlg::OnBnClickedButtonStartListen2) - ON_BN_CLICKED(IDC_BUTTON_STOP_LISTEN_2, &CWinTestDlg::OnBnClickedButtonStopListen2) - ON_BN_CLICKED(IDC_BUTTON_START_PLAYOUT_2, &CWinTestDlg::OnBnClickedButtonStartPlayout2) - ON_BN_CLICKED(IDC_BUTTON_STOP_PLAYOUT_2, &CWinTestDlg::OnBnClickedButtonStopPlayout2) - ON_BN_CLICKED(IDC_BUTTON_START_SEND_2, &CWinTestDlg::OnBnClickedButtonStartSend2) - ON_BN_CLICKED(IDC_BUTTON_STOP_SEND_2, &CWinTestDlg::OnBnClickedButtonStopSend2) - ON_BN_CLICKED(IDC_CHECK_EXT_TRANS_1, &CWinTestDlg::OnBnClickedCheckExtTrans1) - ON_BN_CLICKED(IDC_CHECK_PLAY_FILE_IN_1, &CWinTestDlg::OnBnClickedCheckPlayFileIn1) - ON_BN_CLICKED(IDC_CHECK_PLAY_FILE_OUT_1, &CWinTestDlg::OnBnClickedCheckPlayFileOut1) - ON_BN_CLICKED(IDC_CHECK_EXT_TRANS_2, &CWinTestDlg::OnBnClickedCheckExtTrans2) - ON_BN_CLICKED(IDC_CHECK_PLAY_FILE_IN_2, &CWinTestDlg::OnBnClickedCheckPlayFileIn2) - ON_BN_CLICKED(IDC_CHECK_PLAY_FILE_OUT_2, &CWinTestDlg::OnBnClickedCheckPlayFileOut2) - ON_BN_CLICKED(IDC_CHECK_PLAY_FILE_IN, &CWinTestDlg::OnBnClickedCheckPlayFileIn) - ON_CBN_SELCHANGE(IDC_COMBO_REC_DEVICE, &CWinTestDlg::OnCbnSelchangeComboRecDevice) - ON_CBN_SELCHANGE(IDC_COMBO_PLAY_DEVICE, &CWinTestDlg::OnCbnSelchangeComboPlayDevice) - ON_BN_CLICKED(IDC_CHECK_EXT_MEDIA_IN_1, &CWinTestDlg::OnBnClickedCheckExtMediaIn1) - ON_BN_CLICKED(IDC_CHECK_EXT_MEDIA_OUT_1, &CWinTestDlg::OnBnClickedCheckExtMediaOut1) - ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_INPUT_VOLUME, &CWinTestDlg::OnNMReleasedcaptureSliderInputVolume) - ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_OUTPUT_VOLUME, &CWinTestDlg::OnNMReleasedcaptureSliderOutputVolume) - ON_BN_CLICKED(IDC_CHECK_AGC, &CWinTestDlg::OnBnClickedCheckAgc) - ON_BN_CLICKED(IDC_CHECK_NS, &CWinTestDlg::OnBnClickedCheckNs) - ON_BN_CLICKED(IDC_CHECK_EC, &CWinTestDlg::OnBnClickedCheckEc) - ON_BN_CLICKED(IDC_CHECK_VAD_1, &CWinTestDlg::OnBnClickedCheckVad1) - ON_BN_CLICKED(IDC_CHECK_VAD_3, &CWinTestDlg::OnBnClickedCheckVad2) - ON_BN_CLICKED(IDC_CHECK_EXT_MEDIA_IN_2, &CWinTestDlg::OnBnClickedCheckExtMediaIn2) - ON_BN_CLICKED(IDC_CHECK_EXT_MEDIA_OUT_2, &CWinTestDlg::OnBnClickedCheckExtMediaOut2) - ON_BN_CLICKED(IDC_CHECK_MUTE_IN, &CWinTestDlg::OnBnClickedCheckMuteIn) - ON_BN_CLICKED(IDC_CHECK_MUTE_IN_1, &CWinTestDlg::OnBnClickedCheckMuteIn1) - ON_BN_CLICKED(IDC_CHECK_MUTE_IN_2, &CWinTestDlg::OnBnClickedCheckMuteIn2) - ON_BN_CLICKED(IDC_CHECK_SRTP_TX_1, &CWinTestDlg::OnBnClickedCheckSrtpTx1) - ON_BN_CLICKED(IDC_CHECK_SRTP_RX_1, &CWinTestDlg::OnBnClickedCheckSrtpRx1) - ON_BN_CLICKED(IDC_CHECK_SRTP_TX_2, &CWinTestDlg::OnBnClickedCheckSrtpTx2) - ON_BN_CLICKED(IDC_CHECK_SRTP_RX_2, &CWinTestDlg::OnBnClickedCheckSrtpRx2) - ON_BN_CLICKED(IDC_CHECK_EXT_ENCRYPTION_1, &CWinTestDlg::OnBnClickedCheckExtEncryption1) - ON_BN_CLICKED(IDC_CHECK_EXT_ENCRYPTION_2, &CWinTestDlg::OnBnClickedCheckExtEncryption2) - ON_BN_CLICKED(IDC_BUTTON_DTMF_1, &CWinTestDlg::OnBnClickedButtonDtmf1) - ON_BN_CLICKED(IDC_CHECK_REC_MIC, &CWinTestDlg::OnBnClickedCheckRecMic) - ON_BN_CLICKED(IDC_BUTTON_DTMF_2, &CWinTestDlg::OnBnClickedButtonDtmf2) - ON_BN_CLICKED(IDC_BUTTON_TEST_1, &CWinTestDlg::OnBnClickedButtonTest1) - ON_BN_CLICKED(IDC_CHECK_CONFERENCE_1, &CWinTestDlg::OnBnClickedCheckConference1) - ON_BN_CLICKED(IDC_CHECK_CONFERENCE_2, &CWinTestDlg::OnBnClickedCheckConference2) - ON_BN_CLICKED(IDC_CHECK_ON_HOLD_1, &CWinTestDlg::OnBnClickedCheckOnHold1) - ON_BN_CLICKED(IDC_CHECK_ON_HOLD_2, &CWinTestDlg::OnBnClickedCheckOnHold2) - ON_BN_CLICKED(IDC_CHECK_EXT_MEDIA_IN, &CWinTestDlg::OnBnClickedCheckExtMediaIn) - ON_BN_CLICKED(IDC_CHECK_EXT_MEDIA_OUT, &CWinTestDlg::OnBnClickedCheckExtMediaOut) - ON_LBN_SELCHANGE(IDC_LIST_CODEC_1, &CWinTestDlg::OnLbnSelchangeListCodec1) - ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_PAN_LEFT, &CWinTestDlg::OnNMReleasedcaptureSliderPanLeft) - ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_PAN_RIGHT, &CWinTestDlg::OnNMReleasedcaptureSliderPanRight) - ON_BN_CLICKED(IDC_BUTTON_VERSION, &CWinTestDlg::OnBnClickedButtonVersion) - ON_BN_CLICKED(IDC_CHECK_DELAY_ESTIMATE_1, &CWinTestDlg::OnBnClickedCheckDelayEstimate1) - ON_BN_CLICKED(IDC_CHECK_RXVAD, &CWinTestDlg::OnBnClickedCheckRxvad) - ON_BN_CLICKED(IDC_CHECK_AGC_1, &CWinTestDlg::OnBnClickedCheckAgc1) - ON_BN_CLICKED(IDC_CHECK_NS_1, &CWinTestDlg::OnBnClickedCheckNs1) - ON_BN_CLICKED(IDC_CHECK_REC_CALL, &CWinTestDlg::OnBnClickedCheckRecCall) - ON_BN_CLICKED(IDC_CHECK_TYPING_DETECTION, &CWinTestDlg::OnBnClickedCheckTypingDetection) - ON_BN_CLICKED(IDC_CHECK_RED, &CWinTestDlg::OnBnClickedCheckRED) - ON_BN_CLICKED(IDC_BUTTON_CLEAR_ERROR_CALLBACK, &CWinTestDlg::OnBnClickedButtonClearErrorCallback) -END_MESSAGE_MAP() - -BOOL CWinTestDlg::UpdateTest(bool failed, const CString& strMsg) -{ - if (failed) - { - SetDlgItemText(IDC_EDIT_MESSAGE, strMsg); - _strErr.Format(_T("FAILED (error=%d)"), _veBasePtr->LastError()); - SetDlgItemText(IDC_EDIT_RESULT, _strErr); - _failCount++; - SetDlgItemInt(IDC_EDIT_N_FAILS, _failCount); - SetDlgItemInt(IDC_EDIT_LAST_ERROR, _veBasePtr->LastError()); - } - else - { - SetDlgItemText(IDC_EDIT_MESSAGE, strMsg); - SetDlgItemText(IDC_EDIT_RESULT, _T("OK")); - } - return TRUE; -} - - -// CWinTestDlg message handlers - -BOOL CWinTestDlg::OnInitDialog() -{ - CDialog::OnInitDialog(); - - // Add "About..." menu item to system menu. - - // IDM_ABOUTBOX must be in the system command range. - ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); - ASSERT(IDM_ABOUTBOX < 0xF000); - - CMenu* pSysMenu = GetSystemMenu(FALSE); - if (pSysMenu != NULL) - { - CString strAboutMenu; - strAboutMenu.LoadString(IDS_ABOUTBOX); - if (!strAboutMenu.IsEmpty()) - { - pSysMenu->AppendMenu(MF_SEPARATOR); - pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); - } - } - - // Set the icon for this dialog. The framework does this automatically - // when the application's main window is not a dialog - SetIcon(m_hIcon, TRUE); // Set big icon - SetIcon(m_hIcon, FALSE); // Set small icon - - // char version[1024]; - // _veBasePtr->GetVersion(version); - // AfxMessageBox(version, MB_OK); - - if (_veBasePtr->Init() != 0) - { - AfxMessageBox(_T("Init() failed "), MB_OKCANCEL); - } - - int ch = _veBasePtr->CreateChannel(); - if (_veBasePtr->SetSendDestination(ch, 1234, "127.0.0.1") == -1) - { - if (_veBasePtr->LastError() == VE_EXTERNAL_TRANSPORT_ENABLED) - { - _strMsg.Format(_T("*** External transport build ***")); - SetDlgItemText(IDC_EDIT_MESSAGE, _strMsg); - _externalTransportBuild = true; - } - } - _veBasePtr->DeleteChannel(ch); - - // --- Add (preferred) local IPv4 address in title - - if (_veNetworkPtr) - { - char localIP[64]; - _veNetworkPtr->GetLocalIP(localIP); - CString str; - GetWindowText(str); - str.AppendFormat(_T(" [Local IPv4 address: %s]"), CharToTchar(localIP, 64)); - SetWindowText(str); - } - - // --- Volume sliders - - if (_veVolumeControlPtr) - { - unsigned int volume(0); - CSliderCtrl* slider(NULL); - - slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_INPUT_VOLUME); - slider->SetRangeMin(0); - slider->SetRangeMax(255); - _veVolumeControlPtr->GetMicVolume(volume); - slider->SetPos(volume); - - slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_OUTPUT_VOLUME); - slider->SetRangeMin(0); - slider->SetRangeMax(255); - _veVolumeControlPtr->GetSpeakerVolume(volume); - slider->SetPos(volume); - } - - // --- Panning sliders - - if (_veVolumeControlPtr) - { - float lVol(0.0); - float rVol(0.0); - int leftVol, rightVol; - CSliderCtrl* slider(NULL); - - _veVolumeControlPtr->GetOutputVolumePan(-1, lVol, rVol); - - leftVol = (int)(lVol*10.0f); // [0,10] - rightVol = (int)(rVol*10.0f); // [0,10] - - slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_PAN_LEFT); - slider->SetRange(0,10); - slider->SetPos(10-leftVol); // pos 0 <=> max pan 1.0 (top of slider) - - slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_PAN_RIGHT); - slider->SetRange(0,10); - slider->SetPos(10-rightVol); - } - - // --- APM settings - - bool enable(false); - CButton* button(NULL); - - AgcModes agcMode(kAgcDefault); - if (_veApmPtr->GetAgcStatus(enable, agcMode) == 0) - { - button = (CButton*)GetDlgItem(IDC_CHECK_AGC); - enable ? button->SetCheck(BST_CHECKED) : button->SetCheck(BST_UNCHECKED); - } - else - { - // AGC is not supported - GetDlgItem(IDC_CHECK_AGC)->EnableWindow(FALSE); - } - - NsModes nsMode(kNsDefault); - if (_veApmPtr->GetNsStatus(enable, nsMode) == 0) - { - button = (CButton*)GetDlgItem(IDC_CHECK_NS); - enable ? button->SetCheck(BST_CHECKED) : button->SetCheck(BST_UNCHECKED); - } - else - { - // NS is not supported - GetDlgItem(IDC_CHECK_NS)->EnableWindow(FALSE); - } - - EcModes ecMode(kEcDefault); - if (_veApmPtr->GetEcStatus(enable, ecMode) == 0) - { - button = (CButton*)GetDlgItem(IDC_CHECK_EC); - enable ? button->SetCheck(BST_CHECKED) : button->SetCheck(BST_UNCHECKED); - } - else - { - // EC is not supported - GetDlgItem(IDC_CHECK_EC)->EnableWindow(FALSE); - } - - // --- First channel section - - GetDlgItem(IDC_COMBO_IP_1)->EnableWindow(FALSE); - GetDlgItem(IDC_EDIT_TX_PORT_1)->EnableWindow(FALSE); - GetDlgItem(IDC_EDIT_RX_PORT_1)->EnableWindow(FALSE); - GetDlgItem(IDC_COMBO_CODEC_1)->EnableWindow(FALSE); - GetDlgItem(IDC_LIST_CODEC_1)->EnableWindow(FALSE); - GetDlgItem(IDC_EDIT_CODEC_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_DELETE_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_START_LISTEN_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_LISTEN_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_START_PLAYOUT_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_START_SEND_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_SEND_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_TRANS_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_PLAY_FILE_IN_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_VAD_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_MUTE_IN_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_SRTP_TX_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_SRTP_RX_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_DTMF_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_CONFERENCE_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_ON_HOLD_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_DELAY_ESTIMATE_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_RXVAD)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_AGC_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_NS_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_RED)->EnableWindow(FALSE); - - CComboBox* comboIP(NULL); - comboIP = (CComboBox*)GetDlgItem(IDC_COMBO_IP_1); - comboIP->AddString(_T("127.0.0.1")); - comboIP->SetCurSel(0); - - SetDlgItemInt(IDC_EDIT_TX_PORT_1, 1111); - SetDlgItemInt(IDC_EDIT_RX_PORT_1, 1111); - - // --- Add supported codecs to the codec combo box - - CComboBox* comboCodec(NULL); - comboCodec = (CComboBox*)GetDlgItem(IDC_COMBO_CODEC_1); - comboCodec->ResetContent(); - - int numCodecs = _veCodecPtr->NumOfCodecs(); - for (int idx = 0; idx < numCodecs; idx++) - { - CodecInst codec; - _veCodecPtr->GetCodec(idx, codec); - if ((_stricmp(codec.plname, "CNNB") != 0) && - (_stricmp(codec.plname, "CNWB") != 0)) - { - CString strCodec; - if (_stricmp(codec.plname, "G7221") == 0) - strCodec.Format(_T("%s (%d/%d/%d)"), CharToTchar(codec.plname, 32), codec.pltype, codec.plfreq/1000, codec.rate/1000); - else - strCodec.Format(_T("%s (%d/%d)"), CharToTchar(codec.plname, 32), codec.pltype, codec.plfreq/1000); - comboCodec->AddString(strCodec); - } - if (idx == 0) - { - SetDlgItemInt(IDC_EDIT_CODEC_1, codec.pltype); - } - } - comboCodec->SetCurSel(0); - - CListBox* list = (CListBox*)GetDlgItem(IDC_LIST_CODEC_1); - list->AddString(_T("pltype")); - list->AddString(_T("plfreq")); - list->AddString(_T("pacsize")); - list->AddString(_T("channels")); - list->AddString(_T("rate")); - list->SetCurSel(0); - - // --- Add available audio devices to the combo boxes - - CComboBox* comboRecDevice(NULL); - CComboBox* comboPlayDevice(NULL); - comboRecDevice = (CComboBox*)GetDlgItem(IDC_COMBO_REC_DEVICE); - comboPlayDevice = (CComboBox*)GetDlgItem(IDC_COMBO_PLAY_DEVICE); - comboRecDevice->ResetContent(); - comboPlayDevice->ResetContent(); - - if (_veHardwarePtr) - { - int numPlayout(0); - int numRecording(0); - char nameStr[128]; - char guidStr[128]; - CString strDevice; - AudioLayers audioLayer; - - _veHardwarePtr->GetAudioDeviceLayer(audioLayer); - if (kAudioWindowsWave == audioLayer) - { - strDevice.FormatMessage(_T("Audio Layer: Windows Wave API")); - } - else if (kAudioWindowsCore == audioLayer) - { - strDevice.FormatMessage(_T("Audio Layer: Windows Core API")); - } - else - { - strDevice.FormatMessage(_T("Audio Layer: ** UNKNOWN **")); - } - SetDlgItemText(IDC_EDIT_AUDIO_LAYER, (LPCTSTR)strDevice); - - _veHardwarePtr->GetNumOfRecordingDevices(numRecording); - - for (int idx = 0; idx < numRecording; idx++) - { - _veHardwarePtr->GetRecordingDeviceName(idx, nameStr, guidStr); - strDevice.Format(_T("%s"), CharToTchar(nameStr, 128)); - comboRecDevice->AddString(strDevice); - } - // Select default (communication) device in the combo box - _veHardwarePtr->GetRecordingDeviceName(-1, nameStr, guidStr); - CString tmp = CString(nameStr); - int nIndex = comboRecDevice->SelectString(-1, tmp); - ASSERT(nIndex != CB_ERR); - - _veHardwarePtr->GetNumOfPlayoutDevices(numPlayout); - - for (int idx = 0; idx < numPlayout; idx++) - { - _veHardwarePtr->GetPlayoutDeviceName(idx, nameStr, guidStr); - strDevice.Format(_T("%s"), CharToTchar(nameStr, 128)); - comboPlayDevice->AddString(strDevice); - } - // Select default (communication) device in the combo box - _veHardwarePtr->GetPlayoutDeviceName(-1, nameStr, guidStr); - nIndex = comboPlayDevice->SelectString(-1, CString(nameStr)); - ASSERT(nIndex != CB_ERR); - } - - // --- Second channel section - - GetDlgItem(IDC_COMBO_IP_2)->EnableWindow(FALSE); - GetDlgItem(IDC_EDIT_TX_PORT_2)->EnableWindow(FALSE); - GetDlgItem(IDC_EDIT_RX_PORT_2)->EnableWindow(FALSE); - GetDlgItem(IDC_COMBO_CODEC_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_DELETE_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_START_LISTEN_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_LISTEN_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_START_PLAYOUT_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_START_SEND_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_SEND_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_TRANS_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_PLAY_FILE_IN_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_VAD_3)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_MUTE_IN_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_SRTP_TX_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_SRTP_RX_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_DTMF_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_CONFERENCE_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_ON_HOLD_2)->EnableWindow(FALSE); - - comboIP = (CComboBox*)GetDlgItem(IDC_COMBO_IP_2); - comboIP->AddString(_T("127.0.0.1")); - comboIP->SetCurSel(0); - - SetDlgItemInt(IDC_EDIT_TX_PORT_2, 2222); - SetDlgItemInt(IDC_EDIT_RX_PORT_2, 2222); - - comboCodec = (CComboBox*)GetDlgItem(IDC_COMBO_CODEC_2); - comboCodec->ResetContent(); - - if (_veCodecPtr) - { - numCodecs = _veCodecPtr->NumOfCodecs(); - for (int idx = 0; idx < numCodecs; idx++) - { - CodecInst codec; - _veCodecPtr->GetCodec(idx, codec); - CString strCodec; - strCodec.Format(_T("%s (%d/%d)"), CharToTchar(codec.plname, 32), codec.pltype, codec.plfreq/1000); - comboCodec->AddString(strCodec); - } - comboCodec->SetCurSel(0); - } - - // --- Start windows timer - - SetTimer(0, 1000, NULL); - - return TRUE; // return TRUE unless you set the focus to a control -} - -void CWinTestDlg::OnSysCommand(UINT nID, LPARAM lParam) -{ - if ((nID & 0xFFF0) == IDM_ABOUTBOX) - { - CAboutDlg dlgAbout; - dlgAbout.DoModal(); - } - else if (nID == SC_CLOSE) - { - BOOL ret; - int channel(0); - channel = GetDlgItemInt(IDC_EDIT_1, &ret); - if (ret == TRUE) - { - _veBasePtr->DeleteChannel(channel); - } - channel = GetDlgItemInt(IDC_EDIT_2, &ret); - if (ret == TRUE) - { - _veBasePtr->DeleteChannel(channel); - } - - CDialog::OnSysCommand(nID, lParam); - } - else - { - CDialog::OnSysCommand(nID, lParam); - } - -} - -// If you add a minimize button to your dialog, you will need the code below -// to draw the icon. For MFC applications using the document/view model, -// this is automatically done for you by the framework. - -void CWinTestDlg::OnPaint() -{ - if (IsIconic()) - { - CPaintDC dc(this); // device context for painting - - SendMessage(WM_ICONERASEBKGND, reinterpret_cast(dc.GetSafeHdc()), 0); - - // Center icon in client rectangle - int cxIcon = GetSystemMetrics(SM_CXICON); - int cyIcon = GetSystemMetrics(SM_CYICON); - CRect rect; - GetClientRect(&rect); - int x = (rect.Width() - cxIcon + 1) / 2; - int y = (rect.Height() - cyIcon + 1) / 2; - - // Draw the icon - dc.DrawIcon(x, y, m_hIcon); - } - else - { - CDialog::OnPaint(); - } -} - -// The system calls this function to obtain the cursor to display while the user drags -// the minimized window. -HCURSOR CWinTestDlg::OnQueryDragIcon() -{ - return static_cast(m_hIcon); -} - - -void CWinTestDlg::OnBnClickedButtonCreate1() -{ - int channel(0); - TEST((channel = _veBasePtr->CreateChannel()) >= 0, _T("CreateChannel(channel=%d)"), channel); - if (channel >= 0) - { - _veRtpRtcpPtr->RegisterRTPObserver(channel, *this); - - SetDlgItemInt(IDC_EDIT_1, channel); - GetDlgItem(IDC_BUTTON_CREATE_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_DELETE_1)->EnableWindow(TRUE); - GetDlgItem(IDC_COMBO_IP_1)->EnableWindow(TRUE); - GetDlgItem(IDC_EDIT_TX_PORT_1)->EnableWindow(TRUE); - GetDlgItem(IDC_EDIT_RX_PORT_1)->EnableWindow(TRUE); - GetDlgItem(IDC_COMBO_CODEC_1)->EnableWindow(TRUE); - GetDlgItem(IDC_LIST_CODEC_1)->EnableWindow(TRUE); - GetDlgItem(IDC_EDIT_CODEC_1)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_START_LISTEN_1)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_START_PLAYOUT_1)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_START_SEND_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_EXT_TRANS_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_PLAY_FILE_IN_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_VAD_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_MUTE_IN_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_SRTP_TX_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_SRTP_RX_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_1)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_DTMF_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_ON_HOLD_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_DELAY_ESTIMATE_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_RXVAD)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_AGC_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_NS_1)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_RED)->EnableWindow(TRUE); - - // Always set send codec to default codec <=> index 0. - CodecInst codec; - _veCodecPtr->GetCodec(0, codec); - _veCodecPtr->SetSendCodec(channel, codec); - } -} - -void CWinTestDlg::OnBnClickedButtonCreate2() -{ - int channel(0); - TEST((channel = _veBasePtr->CreateChannel()) >=0 , _T("CreateChannel(%d)"), channel); - if (channel >= 0) - { - _veRtpRtcpPtr->RegisterRTPObserver(channel, *this); - - SetDlgItemInt(IDC_EDIT_2, channel); - GetDlgItem(IDC_BUTTON_CREATE_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_DELETE_2)->EnableWindow(TRUE); - GetDlgItem(IDC_COMBO_IP_2)->EnableWindow(TRUE); - GetDlgItem(IDC_EDIT_TX_PORT_2)->EnableWindow(TRUE); - GetDlgItem(IDC_EDIT_RX_PORT_2)->EnableWindow(TRUE); - GetDlgItem(IDC_COMBO_CODEC_2)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_START_LISTEN_2)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_START_PLAYOUT_2)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_START_SEND_2)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_EXT_TRANS_2)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_PLAY_FILE_IN_2)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_2)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_2)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_2)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_VAD_3)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_MUTE_IN_2)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_SRTP_TX_2)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_SRTP_RX_2)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_2)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_DTMF_2)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_CONFERENCE_2)->EnableWindow(TRUE); - GetDlgItem(IDC_CHECK_ON_HOLD_2)->EnableWindow(TRUE); - - // Always set send codec to default codec <=> index 0. - CodecInst codec; - _veCodecPtr->GetCodec(0, codec); - _veCodecPtr->SetSendCodec(channel, codec); - } -} - -void CWinTestDlg::OnBnClickedButtonDelete1() -{ - BOOL ret; - int channel = GetDlgItemInt(IDC_EDIT_1, &ret); - if (ret == TRUE) - { - _delayEstimate1 = false; - _rxVad = false; - _veRtpRtcpPtr->DeRegisterRTPObserver(channel); - TEST(_veBasePtr->DeleteChannel(channel) == 0, _T("DeleteChannel(channel=%d)"), channel); - SetDlgItemText(IDC_EDIT_1, _T("")); - GetDlgItem(IDC_BUTTON_CREATE_1)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_DELETE_1)->EnableWindow(FALSE); - GetDlgItem(IDC_COMBO_IP_1)->EnableWindow(FALSE); - GetDlgItem(IDC_EDIT_TX_PORT_1)->EnableWindow(FALSE); - GetDlgItem(IDC_EDIT_RX_PORT_1)->EnableWindow(FALSE); - GetDlgItem(IDC_COMBO_CODEC_1)->EnableWindow(FALSE); - GetDlgItem(IDC_LIST_CODEC_1)->EnableWindow(FALSE); - GetDlgItem(IDC_EDIT_CODEC_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_START_LISTEN_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_START_PLAYOUT_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_START_SEND_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_LISTEN_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_SEND_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_DTMF_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_TRANS_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_PLAY_FILE_IN_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_VAD_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_MUTE_IN_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_SRTP_TX_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_SRTP_RX_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_CONFERENCE_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_ON_HOLD_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_DELAY_ESTIMATE_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_AGC_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_NS_1)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_RXVAD)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_RED)->EnableWindow(FALSE); - SetDlgItemText(IDC_EDIT_RXVAD, _T("")); - GetDlgItem(IDC_EDIT_RXVAD)->EnableWindow(FALSE); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EXT_TRANS_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_IN_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_VAD_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_MUTE_IN_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_SRTP_TX_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_SRTP_RX_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_CONFERENCE_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_ON_HOLD_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_DELAY_ESTIMATE_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_AGC_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_NS_1); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_RXVAD); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_RED); - button->SetCheck(BST_UNCHECKED); - } -} - -void CWinTestDlg::OnBnClickedButtonDelete2() -{ - BOOL ret; - int channel = GetDlgItemInt(IDC_EDIT_2, &ret); - if (ret == TRUE) - { - _delayEstimate2 = false; - _veRtpRtcpPtr->DeRegisterRTPObserver(channel); - TEST(_veBasePtr->DeleteChannel(channel) == 0, _T("DeleteChannel(%d)"), channel); - SetDlgItemText(IDC_EDIT_2, _T("")); - GetDlgItem(IDC_BUTTON_CREATE_2)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_DELETE_2)->EnableWindow(FALSE); - GetDlgItem(IDC_COMBO_IP_2)->EnableWindow(FALSE); - GetDlgItem(IDC_EDIT_TX_PORT_2)->EnableWindow(FALSE); - GetDlgItem(IDC_EDIT_RX_PORT_2)->EnableWindow(FALSE); - GetDlgItem(IDC_COMBO_CODEC_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_START_LISTEN_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_START_PLAYOUT_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_START_SEND_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_LISTEN_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_SEND_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_TRANS_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_PLAY_FILE_IN_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_MUTE_IN_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_VAD_3)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_SRTP_TX_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_SRTP_RX_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_CONFERENCE_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_DTMF_2)->EnableWindow(FALSE); - GetDlgItem(IDC_CHECK_ON_HOLD_2)->EnableWindow(FALSE); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EXT_TRANS_2); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_IN_2); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_2); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_2); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_2); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_VAD_3); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_MUTE_IN_2); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_SRTP_TX_2); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_SRTP_RX_2); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_2); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_CONFERENCE_2); - button->SetCheck(BST_UNCHECKED); - button = (CButton*)GetDlgItem(IDC_CHECK_ON_HOLD_2); - button->SetCheck(BST_UNCHECKED); - } -} - -void CWinTestDlg::OnCbnSelchangeComboIp1() -{ - int channel = GetDlgItemInt(IDC_EDIT_1); - CString str; - int port = GetDlgItemInt(IDC_EDIT_TX_PORT_1); - CComboBox* comboIP = (CComboBox*)GetDlgItem(IDC_COMBO_IP_1); - int n = comboIP->GetLBTextLen(0); - comboIP->GetLBText(0, str.GetBuffer(n)); - TEST(_veBasePtr->SetSendDestination(channel, port, TcharToChar(str.GetBuffer(n), -1)) == 0, - _T("SetSendDestination(channel=%d, port=%d, ip=%s)"), channel, port, str.GetBuffer(n)); - str.ReleaseBuffer(); -} - -void CWinTestDlg::OnCbnSelchangeComboIp2() -{ - int channel = GetDlgItemInt(IDC_EDIT_2); - CString str; - int port = GetDlgItemInt(IDC_EDIT_TX_PORT_2); - CComboBox* comboIP = (CComboBox*)GetDlgItem(IDC_COMBO_IP_2); - int n = comboIP->GetLBTextLen(0); - comboIP->GetLBText(0, str.GetBuffer(n)); - TEST(_veBasePtr->SetSendDestination(channel, port, TcharToChar(str.GetBuffer(n), -1)) == 0, - _T("SetSendDestination(channel=%d, port=%d, ip=%s)"), channel, port, str.GetBuffer(n)); - str.ReleaseBuffer(); -} - -void CWinTestDlg::OnCbnSelchangeComboCodec1() -{ - int channel = GetDlgItemInt(IDC_EDIT_1); - - CodecInst codec; - CComboBox* comboCodec(NULL); - comboCodec = (CComboBox*)GetDlgItem(IDC_COMBO_CODEC_1); - int index = comboCodec->GetCurSel(); - _veCodecPtr->GetCodec(index, codec); - if (strncmp(codec.plname, "ISAC", 4) == 0) - { - // Set iSAC to adaptive mode by default. - codec.rate = -1; - } - TEST(_veCodecPtr->SetSendCodec(channel, codec) == 0, - _T("SetSendCodec(channel=%d, plname=%s, pltype=%d, plfreq=%d, rate=%d, pacsize=%d, channels=%d)"), - channel, CharToTchar(codec.plname, 32), codec.pltype, codec.plfreq, codec.rate, codec.pacsize, codec.channels); - - CListBox* list = (CListBox*)GetDlgItem(IDC_LIST_CODEC_1); - list->SetCurSel(0); - SetDlgItemInt(IDC_EDIT_CODEC_1, codec.pltype); -} - -void CWinTestDlg::OnLbnSelchangeListCodec1() -{ - int channel = GetDlgItemInt(IDC_EDIT_1); - - CListBox* list = (CListBox*)GetDlgItem(IDC_LIST_CODEC_1); - int listIdx = list->GetCurSel(); - if (listIdx < 0) - return; - CString str; - list->GetText(listIdx, str); - - CodecInst codec; - _veCodecPtr->GetSendCodec(channel, codec); - - int value = GetDlgItemInt(IDC_EDIT_CODEC_1); - if (str == _T("pltype")) - { - codec.pltype = value; - } - else if (str == _T("plfreq")) - { - codec.plfreq = value; - } - else if (str == _T("pacsize")) - { - codec.pacsize = value; - } - else if (str == _T("channels")) - { - codec.channels = value; - } - else if (str == _T("rate")) - { - codec.rate = value; - } - TEST(_veCodecPtr->SetSendCodec(channel, codec) == 0, - _T("SetSendCodec(channel=%d, plname=%s, pltype=%d, plfreq=%d, rate=%d, pacsize=%d, channels=%d)"), - channel, CharToTchar(codec.plname, 32), codec.pltype, codec.plfreq, codec.rate, codec.pacsize, codec.channels); -} - -void CWinTestDlg::OnCbnSelchangeComboCodec2() -{ - int channel = GetDlgItemInt(IDC_EDIT_2); - - CodecInst codec; - CComboBox* comboCodec(NULL); - comboCodec = (CComboBox*)GetDlgItem(IDC_COMBO_CODEC_2); - int index = comboCodec->GetCurSel(); - _veCodecPtr->GetCodec(index, codec); - TEST(_veCodecPtr->SetSendCodec(channel, codec) == 0, - _T("SetSendCodec(channel=%d, plname=%s, pltype=%d, plfreq=%d, rate=%d, pacsize=%d, channels=%d)"), - channel, CharToTchar(codec.plname, 32), codec.pltype, codec.plfreq, codec.rate, codec.pacsize, codec.channels); -} - -void CWinTestDlg::OnBnClickedButtonStartListen1() -{ - int ret1(0); - int ret2(0); - int channel = GetDlgItemInt(IDC_EDIT_1); - int port = GetDlgItemInt(IDC_EDIT_RX_PORT_1); - TEST((ret1 = _veBasePtr->SetLocalReceiver(channel, port)) == 0, _T("SetLocalReceiver(channel=%d, port=%d)"), channel, port); - TEST((ret2 = _veBasePtr->StartReceive(channel)) == 0, _T("StartReceive(channel=%d)"), channel); - if (ret1 == 0 && ret2 == 0) - { - GetDlgItem(IDC_BUTTON_START_LISTEN_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_LISTEN_1)->EnableWindow(TRUE); - } -} - -void CWinTestDlg::OnBnClickedButtonStartListen2() -{ - int ret1(0); - int ret2(0); - int channel = GetDlgItemInt(IDC_EDIT_2); - int port = GetDlgItemInt(IDC_EDIT_RX_PORT_2); - TEST((ret1 = _veBasePtr->SetLocalReceiver(channel, port)) == 0, _T("SetLocalReceiver(channel=%d, port=%d)"), channel, port); - TEST((ret2 = _veBasePtr->StartReceive(channel)) == 0, _T("StartReceive(channel=%d)"), channel); - if (ret1 == 0 && ret2 == 0) - { - GetDlgItem(IDC_BUTTON_START_LISTEN_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_LISTEN_2)->EnableWindow(TRUE); - } -} - -void CWinTestDlg::OnBnClickedButtonStopListen1() -{ - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_1); - TEST((ret = _veBasePtr->StopReceive(channel)) == 0, _T("StopListen(channel=%d)"), channel); - if (ret == 0) - { - GetDlgItem(IDC_BUTTON_START_LISTEN_1)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_STOP_LISTEN_1)->EnableWindow(FALSE); - } -} - -void CWinTestDlg::OnBnClickedButtonStopListen2() -{ - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_2); - TEST((ret = _veBasePtr->StopReceive(channel)) == 0, _T("StopListen(channel=%d)"), channel); - if (ret == 0) - { - GetDlgItem(IDC_BUTTON_START_LISTEN_2)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_STOP_LISTEN_2)->EnableWindow(FALSE); - } -} - -void CWinTestDlg::OnBnClickedButtonStartPlayout1() -{ - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_1); - TEST((ret = _veBasePtr->StartPlayout(channel)) == 0, _T("StartPlayout(channel=%d)"), channel); - if (ret == 0) - { - GetDlgItem(IDC_BUTTON_START_PLAYOUT_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_1)->EnableWindow(TRUE); - } -} - -void CWinTestDlg::OnBnClickedButtonStartPlayout2() -{ - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_2); - TEST((ret = _veBasePtr->StartPlayout(channel)) == 0, _T("StartPlayout(channel=%d)"), channel); - if (ret == 0) - { - GetDlgItem(IDC_BUTTON_START_PLAYOUT_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_2)->EnableWindow(TRUE); - } -} - -void CWinTestDlg::OnBnClickedButtonStopPlayout1() -{ - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_1); - TEST((ret = _veBasePtr->StopPlayout(channel)) == 0, _T("StopPlayout(channel=%d)"), channel); - if (ret == 0) - { - GetDlgItem(IDC_BUTTON_START_PLAYOUT_1)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_1)->EnableWindow(FALSE); - } -} - -void CWinTestDlg::OnBnClickedButtonStopPlayout2() -{ - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_2); - TEST((ret = _veBasePtr->StopPlayout(channel)) == 0, _T("StopPlayout(channel=%d)")); - if (ret == 0) - { - GetDlgItem(IDC_BUTTON_START_PLAYOUT_2)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_2)->EnableWindow(FALSE); - } -} - -void CWinTestDlg::OnBnClickedButtonStartSend1() -{ - UpdateData(TRUE); // update IP address - - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_1); - if (!_externalTransport) - { - CString str; - int port = GetDlgItemInt(IDC_EDIT_TX_PORT_1); - TEST(_veBasePtr->SetSendDestination(channel, port, TcharToChar(_strComboIp1.GetBuffer(7), -1)) == 0, - _T("SetSendDestination(channel=%d, port=%d, ip=%s)"), channel, port, _strComboIp1.GetBuffer(7)); - str.ReleaseBuffer(); - } - - //_veVideoSyncPtr->SetInitTimestamp(0,0); - // OnCbnSelchangeComboCodec1(); - - TEST((ret = _veBasePtr->StartSend(channel)) == 0, _T("StartSend(channel=%d)"), channel); - if (ret == 0) - { - GetDlgItem(IDC_BUTTON_START_SEND_1)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_SEND_1)->EnableWindow(TRUE); - } -} - -void CWinTestDlg::OnBnClickedButtonStartSend2() -{ - UpdateData(TRUE); // update IP address - - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_2); - if (!_externalTransport) - { - CString str; - int port = GetDlgItemInt(IDC_EDIT_TX_PORT_2); - TEST(_veBasePtr->SetSendDestination(channel, port, TcharToChar(_strComboIp2.GetBuffer(7), -1)) == 0, - _T("SetSendDestination(channel=%d, port=%d, ip=%s)"), channel, port, _strComboIp2.GetBuffer(7)); - str.ReleaseBuffer(); - } - - // OnCbnSelchangeComboCodec2(); - - TEST((ret = _veBasePtr->StartSend(channel)) == 0, _T("StartSend(channel=%d)"), channel); - if (ret == 0) - { - GetDlgItem(IDC_BUTTON_START_SEND_2)->EnableWindow(FALSE); - GetDlgItem(IDC_BUTTON_STOP_SEND_2)->EnableWindow(TRUE); - } -} - -void CWinTestDlg::OnBnClickedButtonStopSend1() -{ - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_1); - TEST((ret = _veBasePtr->StopSend(channel)) == 0, _T("StopSend(channel=%d)"), channel); - if (ret == 0) - { - GetDlgItem(IDC_BUTTON_START_SEND_1)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_STOP_SEND_1)->EnableWindow(FALSE); - } -} - -void CWinTestDlg::OnBnClickedButtonStopSend2() -{ - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_2); - TEST((ret = _veBasePtr->StopSend(channel)) == 0, _T("StopSend(channel=%d)"), channel); - if (ret == 0) - { - GetDlgItem(IDC_BUTTON_START_SEND_2)->EnableWindow(TRUE); - GetDlgItem(IDC_BUTTON_STOP_SEND_2)->EnableWindow(FALSE); - } -} - -void CWinTestDlg::OnBnClickedCheckExtTrans1() -{ - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_1); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EXT_TRANS_1); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - TEST((ret = _veNetworkPtr->RegisterExternalTransport(channel, *_transportPtr)) == 0, - _T("RegisterExternalTransport(channel=%d, transport=0x%x)"), channel, _transportPtr); - } - else - { - TEST((ret = _veNetworkPtr->DeRegisterExternalTransport(channel)) == 0, - _T("DeRegisterExternalTransport(channel=%d)"), channel); - } - if (ret == 0) - { - _externalTransport = enable; - } - else - { - // restore inital state since API call failed - button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED); - } -} - -void CWinTestDlg::OnBnClickedCheckExtTrans2() -{ - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_2); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EXT_TRANS_2); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - TEST((ret = _veNetworkPtr->RegisterExternalTransport(channel, *_transportPtr)) == 0, - _T("RegisterExternalTransport(channel=%d, transport=0x%x)"), channel, _transportPtr); - } - else - { - TEST((ret = _veNetworkPtr->DeRegisterExternalTransport(channel)) == 0, - _T("DeRegisterExternalTransport(channel=%d)"), channel); - } - if (ret == 0) - { - _externalTransport = enable; - } - else - { - // restore inital state since API call failed - button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED); - } -} - -void CWinTestDlg::OnBnClickedCheckPlayFileIn1() -{ - std::string micFile = _long_audio_file_path + "audio_short16.pcm"; - - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_1); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_IN_1); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - bool mix; - const bool loop(true); - const FileFormats format = kFileFormatPcm16kHzFile; - const float scale(1.0); - - (_checkPlayFileIn1 %2 == 0) ? mix = true : mix = false; - TEST((ret = _veFilePtr->StartPlayingFileAsMicrophone(channel, - micFile.c_str(), loop, mix, format, scale) == 0), - _T("StartPlayingFileAsMicrophone(channel=%d, file=%s, loop=%d, ") - _T("mix=%d, format=%d, scale=%2.1f)"), - channel, CharToTchar(micFile.c_str(), -1), - loop, mix, format, scale); - _checkPlayFileIn1++; - } - else - { - TEST((ret = _veFilePtr->StopPlayingFileAsMicrophone(channel) == 0), - _T("StopPlayingFileAsMicrophone(channel=%d)"), channel); - } - if (ret == -1) - { - // restore inital state since API call failed - button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED); - } -} - -void CWinTestDlg::OnBnClickedCheckPlayFileIn2() -{ - std::string micFile = _long_audio_file_path + "audio_long16.pcm"; - - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_2); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_IN_2); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - bool mix; - const bool loop(true); - const FileFormats format = kFileFormatPcm16kHzFile; - const float scale(1.0); - - (_checkPlayFileIn2 %2 == 0) ? mix = true : mix = false; - TEST((ret = _veFilePtr->StartPlayingFileAsMicrophone(channel, - micFile.c_str(), loop, mix, format, scale) == 0), - _T("StartPlayingFileAsMicrophone(channel=%d, file=%s, loop=%d, ") - _T("mix=%d, format=%d, scale=%2.1f)"), - channel, CharToTchar(micFile.c_str(), -1), - loop, mix, format, scale); - _checkPlayFileIn2++; - } - else - { - TEST((ret = _veFilePtr->StopPlayingFileAsMicrophone(channel) == 0), - _T("StopPlayingFileAsMicrophone(channel=%d)"), channel); - } - if (ret == -1) - { - // restore inital state since API call failed - button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED); - } -} - -void CWinTestDlg::OnBnClickedCheckPlayFileOut1() -{ - const FileFormats formats[8] = {{kFileFormatPcm16kHzFile}, - {kFileFormatWavFile}, - {kFileFormatWavFile}, - {kFileFormatWavFile}, - {kFileFormatWavFile}, - {kFileFormatWavFile}, - {kFileFormatWavFile}, - {kFileFormatWavFile}}; - // File path is relative to the location of 'voice_engine.gyp'. - const char spkrFiles[8][64] = {{"audio_short16.pcm"}, - {"audio_tiny8.wav"}, - {"audio_tiny11.wav"}, - {"audio_tiny16.wav"}, - {"audio_tiny22.wav"}, - {"audio_tiny32.wav"}, - {"audio_tiny44.wav"}, - {"audio_tiny48.wav"}}; - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_1); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_1); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - const bool loop(true); - const float volumeScaling(1.0); - const int startPointMs(0); - const int stopPointMs(0); - const FileFormats format = formats[_checkPlayFileOut1 % 8]; - std::string spkrFile = _long_audio_file_path + - spkrFiles[_checkPlayFileOut1 % 8]; - - CString str; - if (_checkPlayFileOut1 % 8 == 0) - { - str = _T("kFileFormatPcm16kHzFile"); - } - else - { - str = _T("kFileFormatWavFile"); - } - // (_checkPlayFileOut1 %2 == 0) ? mix = true : mix = false; - TEST((ret = _veFilePtr->StartPlayingFileLocally(channel, - spkrFile.c_str(), loop, format, volumeScaling, - startPointMs,stopPointMs) == 0), - _T("StartPlayingFileLocally(channel=%d, file=%s, loop=%d, ") - _T("format=%s, scale=%2.1f, start=%d, stop=%d)"), - channel, CharToTchar(spkrFile.c_str(), -1), - loop, str, volumeScaling, startPointMs, stopPointMs); - _checkPlayFileOut1++; - } - else - { - TEST((ret = _veFilePtr->StopPlayingFileLocally(channel) == 0), - _T("StopPlayingFileLocally(channel=%d)"), channel); - } - if (ret == -1) - { - // restore inital state since API call failed - button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED); - } -} - -void CWinTestDlg::OnBnClickedCheckPlayFileOut2() -{ - std::string spkrFile = _long_audio_file_path + "audio_long16.pcm"; - - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_2); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_2); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - const bool loop(true); - const FileFormats format = kFileFormatPcm16kHzFile; - const float volumeScaling(1.0); - const int startPointMs(0); - const int stopPointMs(0); - - // (_checkPlayFileOut2 %2 == 0) ? mix = true : mix = false; - TEST((ret = _veFilePtr->StartPlayingFileLocally(channel, - spkrFile.c_str(), loop, format, volumeScaling, - startPointMs,stopPointMs) == 0), - _T("StartPlayingFileLocally(channel=%d, file=%s, loop=%d, ") - _T("format=%d, scale=%2.1f, start=%d, stop=%d)"), - channel, CharToTchar(spkrFile.c_str(), -1), - loop, format, volumeScaling, startPointMs, stopPointMs); - // _checkPlayFileIn2++; - } - else - { - TEST((ret = _veFilePtr->StopPlayingFileLocally(channel) == 0), - _T("StopPlayingFileLocally(channel=%d)"), channel); - } - if (ret == -1) - { - // restore inital state since API call failed - button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED); - } -} - -void CWinTestDlg::OnBnClickedCheckExtMediaIn1() -{ - int channel = GetDlgItemInt(IDC_EDIT_1); - CButton* buttonExtTrans = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_1); - int check = buttonExtTrans->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - TEST(_veExternalMediaPtr->RegisterExternalMediaProcessing(channel, kRecordingPerChannel, *_externalMediaPtr) == 0, - _T("RegisterExternalMediaProcessing(channel=%d, kRecordingPerChannel, processObject=0x%x)"), channel, _externalMediaPtr); - } - else - { - TEST(_veExternalMediaPtr->DeRegisterExternalMediaProcessing(channel, kRecordingPerChannel) == 0, - _T("DeRegisterExternalMediaProcessing(channel=%d, kRecordingPerChannel)"), channel); - } -} - -void CWinTestDlg::OnBnClickedCheckExtMediaIn2() -{ - int channel = GetDlgItemInt(IDC_EDIT_2); - CButton* buttonExtTrans = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_2); - int check = buttonExtTrans->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - TEST(_veExternalMediaPtr->RegisterExternalMediaProcessing(channel, kRecordingPerChannel, *_externalMediaPtr) == 0, - _T("RegisterExternalMediaProcessing(channel=%d, kRecordingPerChannel, processObject=0x%x)"), channel, _externalMediaPtr); - } - else - { - TEST(_veExternalMediaPtr->DeRegisterExternalMediaProcessing(channel, kRecordingPerChannel) == 0, - _T("DeRegisterExternalMediaProcessing(channel=%d, kRecordingPerChannel)"), channel); - } -} - -void CWinTestDlg::OnBnClickedCheckExtMediaOut1() -{ - int channel = GetDlgItemInt(IDC_EDIT_1); - CButton* buttonExtTrans = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_1); - int check = buttonExtTrans->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - TEST(_veExternalMediaPtr->RegisterExternalMediaProcessing(channel, kPlaybackPerChannel, *_externalMediaPtr) == 0, - _T("RegisterExternalMediaProcessing(channel=%d, kPlaybackPerChannel, processObject=0x%x)"), channel, _externalMediaPtr); - } - else - { - TEST(_veExternalMediaPtr->DeRegisterExternalMediaProcessing(channel, kPlaybackPerChannel) == 0, - _T("DeRegisterExternalMediaProcessing(channel=%d, kPlaybackPerChannel)"), channel); - } -} - -void CWinTestDlg::OnBnClickedCheckExtMediaOut2() -{ - int channel = GetDlgItemInt(IDC_EDIT_2); - CButton* buttonExtTrans = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_2); - int check = buttonExtTrans->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - TEST(_veExternalMediaPtr->RegisterExternalMediaProcessing(channel, kPlaybackPerChannel, *_externalMediaPtr) == 0, - _T("RegisterExternalMediaProcessing(channel=%d, kPlaybackPerChannel, processObject=0x%x)"), channel, _externalMediaPtr); - } - else - { - TEST(_veExternalMediaPtr->DeRegisterExternalMediaProcessing(channel, kPlaybackPerChannel) == 0, - _T("DeRegisterExternalMediaProcessing(channel=%d, kPlaybackPerChannel)"), channel); - } -} - -void CWinTestDlg::OnBnClickedCheckVad1() -{ - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_1); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_VAD_1); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - CString str; - VadModes mode(kVadConventional); - if (_checkVAD1 % 4 == 0) - { - mode = kVadConventional; - str = _T("kVadConventional"); - } - else if (_checkVAD1 % 4 == 1) - { - mode = kVadAggressiveLow; - str = _T("kVadAggressiveLow"); - } - else if (_checkVAD1 % 4 == 2) - { - mode = kVadAggressiveMid; - str = _T("kVadAggressiveMid"); - } - else if (_checkVAD1 % 4 == 3) - { - mode = kVadAggressiveHigh; - str = _T("kVadAggressiveHigh"); - } - const bool disableDTX(false); - TEST((ret = _veCodecPtr->SetVADStatus(channel, true, mode, disableDTX) == 0), - _T("SetVADStatus(channel=%d, enable=%d, mode=%s, disableDTX=%d)"), channel, enable, str, disableDTX); - _checkVAD1++; - } - else - { - TEST((ret = _veCodecPtr->SetVADStatus(channel, false)) == 0, _T("SetVADStatus(channel=%d, enable=%d)"), channel, false); - } - if (ret == -1) - { - // restore inital state since API call failed - button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED); - } -} - -void CWinTestDlg::OnBnClickedCheckVad2() -{ - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_2); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_VAD_2); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - CString str; - VadModes mode(kVadConventional); - if (_checkVAD2 % 4 == 0) - { - mode = kVadConventional; - str = _T("kVadConventional"); - } - else if (_checkVAD2 % 4 == 1) - { - mode = kVadAggressiveLow; - str = _T("kVadAggressiveLow"); - } - else if (_checkVAD2 % 4 == 2) - { - mode = kVadAggressiveMid; - str = _T("kVadAggressiveMid"); - } - else if (_checkVAD2 % 4 == 3) - { - mode = kVadAggressiveHigh; - str = _T("kVadAggressiveHigh"); - } - const bool disableDTX(false); - TEST((ret = _veCodecPtr->SetVADStatus(channel, true, mode, disableDTX)) == 0, - _T("SetVADStatus(channel=%d, enable=%d, mode=%s, disableDTX=%d)"), channel, enable, str, disableDTX); - _checkVAD2++; - } - else - { - TEST((ret = _veCodecPtr->SetVADStatus(channel, false) == 0), _T("SetVADStatus(channel=%d, enable=%d)"), channel, false); - } - if (ret == -1) - { - // restore inital state since API call failed - button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED); - } -} - -void CWinTestDlg::OnBnClickedCheckMuteIn1() -{ - int channel = GetDlgItemInt(IDC_EDIT_1); - CButton* buttonMute = (CButton*)GetDlgItem(IDC_CHECK_MUTE_IN_1); - int check = buttonMute->GetCheck(); - const bool enable = (check == BST_CHECKED); - TEST(_veVolumeControlPtr->SetInputMute(channel, enable) == 0, - _T("SetInputMute(channel=%d, enable=%d)"), channel, enable); -} - -void CWinTestDlg::OnBnClickedCheckMuteIn2() -{ - int channel = GetDlgItemInt(IDC_EDIT_2); - CButton* buttonMute = (CButton*)GetDlgItem(IDC_CHECK_MUTE_IN_2); - int check = buttonMute->GetCheck(); - const bool enable = (check == BST_CHECKED); - TEST(_veVolumeControlPtr->SetInputMute(channel, enable) == 0, - _T("SetInputMute(channel=%d, enable=%d)"), channel, enable); -} - -void CWinTestDlg::OnBnClickedCheckSrtpTx1() -{ - TEST(true, "Built-in SRTP support is deprecated."); -} - -void CWinTestDlg::OnBnClickedCheckSrtpTx2() -{ - TEST(true, "Built-in SRTP support is deprecated."); -} - -void CWinTestDlg::OnBnClickedCheckSrtpRx1() -{ - TEST(true, "Built-in SRTP support is deprecated."); -} - -void CWinTestDlg::OnBnClickedCheckSrtpRx2() -{ - TEST(true, "Built-in SRTP support is deprecated."); -} - -void CWinTestDlg::OnBnClickedCheckExtEncryption1() -{ - TEST(true, "External Encryption has been removed from the API!"); -} - -void CWinTestDlg::OnBnClickedCheckExtEncryption2() -{ - TEST(true, "External Encryption has been removed from the API!"); -} - -void CWinTestDlg::OnBnClickedButtonDtmf1() -{ - int channel = GetDlgItemInt(IDC_EDIT_1); - CTelephonyEvent dlgTelephoneEvent(_vePtr, channel, this); - dlgTelephoneEvent.DoModal(); -} - -void CWinTestDlg::OnBnClickedButtonDtmf2() -{ - int channel = GetDlgItemInt(IDC_EDIT_2); - CTelephonyEvent dlgTelephoneEvent(_vePtr, channel, this); - dlgTelephoneEvent.DoModal(); -} - -void CWinTestDlg::OnBnClickedCheckConference1() -{ - // Not supported yet -} - -void CWinTestDlg::OnBnClickedCheckConference2() -{ - // Not supported yet -} - -void CWinTestDlg::OnBnClickedCheckOnHold1() -{ - SHORT shiftKeyIsPressed = ::GetAsyncKeyState(VK_SHIFT); - - CString str; - int channel = GetDlgItemInt(IDC_EDIT_1); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_ON_HOLD_1); - int check = button->GetCheck(); - - if (shiftKeyIsPressed) - { - bool enabled(false); - OnHoldModes mode(kHoldSendAndPlay); - TEST(_veBasePtr->GetOnHoldStatus(channel, enabled, mode) == 0, - _T("GetOnHoldStatus(channel=%d, enabled=?, mode=?)"), channel); - button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED); - - switch (mode) - { - case kHoldSendAndPlay: - str = _T("kHoldSendAndPlay"); - break; - case kHoldSendOnly: - str = _T("kHoldSendOnly"); - break; - case kHoldPlayOnly: - str = _T("kHoldPlayOnly"); - break; - default: - break; - } - PRINT_GET_RESULT(_T("enabled=%d, mode=%s"), enabled, str); - return; - } - - int ret(0); - const bool enable = (check == BST_CHECKED); - if (enable) - { - OnHoldModes mode(kHoldSendAndPlay); - if (_checkOnHold1 % 3 == 0) - { - mode = kHoldSendAndPlay; - str = _T("kHoldSendAndPlay"); - } - else if (_checkOnHold1 % 3 == 1) - { - mode = kHoldSendOnly; - str = _T("kHoldSendOnly"); - } - else if (_checkOnHold1 % 3 == 2) - { - mode = kHoldPlayOnly; - str = _T("kHoldPlayOnly"); - } - TEST((ret = _veBasePtr->SetOnHoldStatus(channel, enable, mode)) == 0, - _T("SetOnHoldStatus(channel=%d, enable=%d, mode=%s)"), channel, enable, str); - _checkOnHold1++; - } - else - { - TEST((ret = _veBasePtr->SetOnHoldStatus(channel, enable)) == 0, - _T("SetOnHoldStatus(channel=%d, enable=%d)"), channel, enable); - } -} - -void CWinTestDlg::OnBnClickedCheckOnHold2() -{ - int ret(0); - int channel = GetDlgItemInt(IDC_EDIT_2); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_ON_HOLD_2); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - CString str; - OnHoldModes mode(kHoldSendAndPlay); - if (_checkOnHold1 % 3 == 0) - { - mode = kHoldSendAndPlay; - str = _T("kHoldSendAndPlay"); - } - else if (_checkOnHold1 % 3 == 1) - { - mode = kHoldSendOnly; - str = _T("kHoldSendOnly"); - } - else if (_checkOnHold1 % 3 == 2) - { - mode = kHoldPlayOnly; - str = _T("kHoldPlayOnly"); - } - TEST((ret = _veBasePtr->SetOnHoldStatus(channel, enable, mode)) == 0, - _T("SetOnHoldStatus(channel=%d, enable=%d, mode=%s)"), channel, enable, str); - _checkOnHold1++; - } - else - { - TEST((ret = _veBasePtr->SetOnHoldStatus(channel, enable)) == 0, - _T("SetOnHoldStatus(channel=%d, enable=%d)"), channel, enable); - } -} - -void CWinTestDlg::OnBnClickedCheckDelayEstimate1() -{ - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_DELAY_ESTIMATE_1); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - - if (enable) - { - _delayEstimate1 = true; - SetDlgItemInt(IDC_EDIT_DELAY_ESTIMATE_1, 0); - } - else - { - _delayEstimate1 = false; - SetDlgItemText(IDC_EDIT_DELAY_ESTIMATE_1, _T("")); - } -} - -void CWinTestDlg::OnBnClickedCheckRxvad() -{ - int channel = GetDlgItemInt(IDC_EDIT_1); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_RXVAD); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - - if (enable) - { - _rxVad = true; - _veApmPtr->RegisterRxVadObserver(channel, *_rxVadObserverPtr); - SetDlgItemInt(IDC_EDIT_RXVAD, 0); - } - else - { - _rxVad = false; - _veApmPtr->DeRegisterRxVadObserver(channel); - SetDlgItemText(IDC_EDIT_RXVAD, _T("")); - } -} - -void CWinTestDlg::OnBnClickedCheckAgc1() -{ - SHORT shiftKeyIsPressed = ::GetAsyncKeyState(VK_SHIFT); - - CString str; - int channel = GetDlgItemInt(IDC_EDIT_1); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_AGC_1); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - - if (shiftKeyIsPressed) - { - bool enabled(false); - AgcModes mode(kAgcAdaptiveDigital); - TEST(_veApmPtr->GetRxAgcStatus(channel, enabled, mode) == 0, - _T("GetRxAgcStatus(channel=%d, enabled=?, mode=?)"), channel); - button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED); - - switch (mode) - { - case kAgcAdaptiveAnalog: - str = _T("kAgcAdaptiveAnalog"); - break; - case kAgcAdaptiveDigital: - str = _T("kAgcAdaptiveDigital"); - break; - case kAgcFixedDigital: - str = _T("kAgcFixedDigital"); - break; - default: - break; - } - PRINT_GET_RESULT(_T("enabled=%d, mode=%s"), enabled, str); - return; - } - - if (enable) - { - CString str; - AgcModes mode(kAgcDefault); - if (_checkAGC1 % 3 == 0) - { - mode = kAgcDefault; - str = _T("kAgcDefault"); - } - else if (_checkAGC1 % 3 == 1) - { - mode = kAgcAdaptiveDigital; - str = _T("kAgcAdaptiveDigital"); - } - else if (_checkAGC1 % 3 == 2) - { - mode = kAgcFixedDigital; - str = _T("kAgcFixedDigital"); - } - TEST(_veApmPtr->SetRxAgcStatus(channel, true, mode) == 0, _T("SetRxAgcStatus(channel=%d, enable=%d, %s)"), channel, enable, str); - _checkAGC1++; - } - else - { - TEST(_veApmPtr->SetRxAgcStatus(channel, false, kAgcUnchanged) == 0, _T("SetRxAgcStatus(channel=%d, enable=%d)"), channel, enable); - } -} - -void CWinTestDlg::OnBnClickedCheckNs1() -{ - int channel = GetDlgItemInt(IDC_EDIT_1); - CButton* buttonNS = (CButton*)GetDlgItem(IDC_CHECK_NS_1); - int check = buttonNS->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - CString str; - NsModes mode(kNsDefault); - if (_checkNS1 % 6 == 0) - { - mode = kNsDefault; - str = _T("kNsDefault"); - } - else if (_checkNS1 % 6 == 1) - { - mode = kNsConference; - str = _T("kNsConference"); - } - else if (_checkNS1 % 6 == 2) - { - mode = kNsLowSuppression; - str = _T("kNsLowSuppression"); - } - else if (_checkNS1 % 6 == 3) - { - mode = kNsModerateSuppression; - str = _T("kNsModerateSuppression"); - } - else if (_checkNS1 % 6 == 4) - { - mode = kNsHighSuppression; - str = _T("kNsHighSuppression"); - } - else if (_checkNS1 % 6 == 5) - { - mode = kNsVeryHighSuppression; - str = _T("kNsVeryHighSuppression"); - } - TEST(_veApmPtr->SetRxNsStatus(channel, true, mode) == 0, _T("SetRxNsStatus(channel=%d, enable=%d, %s)"), channel, enable, str); - _checkNS1++; - } - else - { - TEST(_veApmPtr->SetRxNsStatus(channel, false, kNsUnchanged) == 0, _T("SetRxNsStatus(channel=%d, enable=%d)"), enable, channel); - } -} - -// ---------------------------------------------------------------------------- -// Channel-independent Operations -// ---------------------------------------------------------------------------- - -void CWinTestDlg::OnBnClickedCheckPlayFileIn() -{ - std::string micFile = _long_audio_file_path + "audio_short16.pcm"; - // std::string micFile = _long_audio_file_path + "audio_long16noise.pcm"; - - int channel(-1); - CButton* buttonExtTrans = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_IN); - int check = buttonExtTrans->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - bool mix; - const bool loop(true); - const FileFormats format = kFileFormatPcm16kHzFile; - const float scale(1.0); - - (_checkPlayFileIn %2 == 0) ? mix = true : mix = false; - TEST(_veFilePtr->StartPlayingFileAsMicrophone(channel, - micFile.c_str(), loop, mix, format, scale) == 0, - _T("StartPlayingFileAsMicrophone(channel=%d, file=%s, ") - _T("loop=%d, mix=%d, format=%d, scale=%2.1f)"), - channel, CharToTchar(micFile.c_str(), -1), - loop, mix, format, scale); - _checkPlayFileIn++; - } - else - { - TEST(_veFilePtr->StopPlayingFileAsMicrophone(channel) == 0, - _T("StopPlayingFileAsMicrophone(channel=%d)"), channel); - } -} - -void CWinTestDlg::OnBnClickedCheckRecMic() -{ - std::string micFile = webrtc::test::OutputPath() + - "rec_mic_mono_16kHz.pcm"; - - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_REC_MIC); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - TEST(_veFilePtr->StartRecordingMicrophone(micFile.c_str(), NULL) == 0, - _T("StartRecordingMicrophone(file=%s)"), - CharToTchar(micFile.c_str(), -1)); - } - else - { - TEST(_veFilePtr->StopRecordingMicrophone() == 0, - _T("StopRecordingMicrophone()")); - } -} - -void CWinTestDlg::OnBnClickedCheckAgc() -{ - CButton* buttonAGC = (CButton*)GetDlgItem(IDC_CHECK_AGC); - int check = buttonAGC->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - CString str; - AgcModes mode(kAgcDefault); - if (_checkAGC % 4 == 0) - { - mode = kAgcDefault; - str = _T("kAgcDefault"); - } - else if (_checkAGC % 4 == 1) - { - mode = kAgcAdaptiveAnalog; - str = _T("kAgcAdaptiveAnalog"); - } - else if (_checkAGC % 4 == 2) - { - mode = kAgcAdaptiveDigital; - str = _T("kAgcAdaptiveDigital"); - } - else if (_checkAGC % 4 == 3) - { - mode = kAgcFixedDigital; - str = _T("kAgcFixedDigital"); - } - TEST(_veApmPtr->SetAgcStatus(true, mode) == 0, _T("SetAgcStatus(enable=%d, %s)"), enable, str); - _checkAGC++; - } - else - { - TEST(_veApmPtr->SetAgcStatus(false, kAgcUnchanged) == 0, _T("SetAgcStatus(enable=%d)"), enable); - } -} - -void CWinTestDlg::OnBnClickedCheckNs() -{ - CButton* buttonNS = (CButton*)GetDlgItem(IDC_CHECK_NS); - int check = buttonNS->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - CString str; - NsModes mode(kNsDefault); - if (_checkNS % 6 == 0) - { - mode = kNsDefault; - str = _T("kNsDefault"); - } - else if (_checkNS % 6 == 1) - { - mode = kNsConference; - str = _T("kNsConference"); - } - else if (_checkNS % 6 == 2) - { - mode = kNsLowSuppression; - str = _T("kNsLowSuppression"); - } - else if (_checkNS % 6 == 3) - { - mode = kNsModerateSuppression; - str = _T("kNsModerateSuppression"); - } - else if (_checkNS % 6 == 4) - { - mode = kNsHighSuppression; - str = _T("kNsHighSuppression"); - } - else if (_checkNS % 6 == 5) - { - mode = kNsVeryHighSuppression; - str = _T("kNsVeryHighSuppression"); - } - TEST(_veApmPtr->SetNsStatus(true, mode) == 0, _T("SetNsStatus(enable=%d, %s)"), enable, str); - _checkNS++; - } - else - { - TEST(_veApmPtr->SetNsStatus(false, kNsUnchanged) == 0, _T("SetNsStatus(enable=%d)"), enable); - } -} - -void CWinTestDlg::OnBnClickedCheckEc() -{ - CButton* buttonEC = (CButton*)GetDlgItem(IDC_CHECK_EC); - int check = buttonEC->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - CString str; - EcModes mode(kEcDefault); - if (_checkEC % 4 == 0) - { - mode = kEcDefault; - str = _T("kEcDefault"); - } - else if (_checkEC % 4 == 1) - { - mode = kEcConference; - str = _T("kEcConference"); - } - else if (_checkEC % 4 == 2) - { - mode = kEcAec; - str = _T("kEcAec"); - } - else if (_checkEC % 4 == 3) - { - mode = kEcAecm; - str = _T("kEcAecm"); - } - TEST(_veApmPtr->SetEcStatus(true, mode) == 0, _T("SetEcStatus(enable=%d, %s)"), enable, str); - _checkEC++; - } - else - { - TEST(_veApmPtr->SetEcStatus(false, kEcUnchanged) == 0, _T("SetEcStatus(enable=%d)"), enable); - } -} - -void CWinTestDlg::OnBnClickedCheckMuteIn() -{ - CButton* buttonMute = (CButton*)GetDlgItem(IDC_CHECK_MUTE_IN); - int check = buttonMute->GetCheck(); - const bool enable = (check == BST_CHECKED); - const int channel(-1); - TEST(_veVolumeControlPtr->SetInputMute(channel, enable) == 0, - _T("SetInputMute(channel=%d, enable=%d)"), channel, enable); -} - -void CWinTestDlg::OnBnClickedCheckExtMediaIn() -{ - const int channel(-1); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_IN); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - TEST(_veExternalMediaPtr->RegisterExternalMediaProcessing(channel, kRecordingAllChannelsMixed, *_externalMediaPtr) == 0, - _T("RegisterExternalMediaProcessing(channel=%d, kRecordingAllChannelsMixed, processObject=0x%x)"), channel, _externalMediaPtr); - } - else - { - TEST(_veExternalMediaPtr->DeRegisterExternalMediaProcessing(channel, kRecordingAllChannelsMixed) == 0, - _T("DeRegisterExternalMediaProcessing(channel=%d, kRecordingAllChannelsMixed)"), channel); - } -} - -void CWinTestDlg::OnBnClickedCheckExtMediaOut() -{ - const int channel(-1); - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - if (enable) - { - TEST(_veExternalMediaPtr->RegisterExternalMediaProcessing(channel, kPlaybackAllChannelsMixed, *_externalMediaPtr) == 0, - _T("RegisterExternalMediaProcessing(channel=%d, kPlaybackAllChannelsMixed, processObject=0x%x)"), channel, _externalMediaPtr); - } - else - { - TEST(_veExternalMediaPtr->DeRegisterExternalMediaProcessing(channel, kPlaybackAllChannelsMixed) == 0, - _T("DeRegisterExternalMediaProcessing(channel=%d, kPlaybackAllChannelsMixed)"), channel); - } -} - -void CWinTestDlg::OnCbnSelchangeComboRecDevice() -{ - CComboBox* comboCodec(NULL); - comboCodec = (CComboBox*)GetDlgItem(IDC_COMBO_REC_DEVICE); - int index = comboCodec->GetCurSel(); - TEST(_veHardwarePtr->SetRecordingDevice(index) == 0, - _T("SetRecordingDevice(index=%d)"), index); -} - -void CWinTestDlg::OnCbnSelchangeComboPlayDevice() -{ - CComboBox* comboCodec(NULL); - comboCodec = (CComboBox*)GetDlgItem(IDC_COMBO_PLAY_DEVICE); - int index = comboCodec->GetCurSel(); - TEST(_veHardwarePtr->SetPlayoutDevice(index) == 0, - _T("SetPlayoutDevice(index=%d)"), index); -} - -void CWinTestDlg::OnNMReleasedcaptureSliderInputVolume(NMHDR *pNMHDR, LRESULT *pResult) -{ - CSliderCtrl* slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_INPUT_VOLUME); - slider->SetRangeMin(0); - slider->SetRangeMax(255); - int pos = slider->GetPos(); - - TEST(_veVolumeControlPtr->SetMicVolume(pos) == 0, _T("SetMicVolume(volume=%d)"), pos); - - *pResult = 0; -} - -void CWinTestDlg::OnNMReleasedcaptureSliderOutputVolume(NMHDR *pNMHDR, LRESULT *pResult) -{ - CSliderCtrl* slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_OUTPUT_VOLUME); - slider->SetRangeMin(0); - slider->SetRangeMax(255); - int pos = slider->GetPos(); - - TEST(_veVolumeControlPtr->SetSpeakerVolume(pos) == 0, _T("SetSpeakerVolume(volume=%d)"), pos); - - *pResult = 0; -} - -void CWinTestDlg::OnNMReleasedcaptureSliderPanLeft(NMHDR *pNMHDR, LRESULT *pResult) -{ - CSliderCtrl* slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_PAN_LEFT); - slider->SetRange(0,10); - int pos = 10 - slider->GetPos(); // 0 <=> lower end, 10 <=> upper end - - float left(0.0); - float right(0.0); - const int channel(-1); - - // Only left channel will be modified - _veVolumeControlPtr->GetOutputVolumePan(channel, left, right); - - left = (float)((float)pos/10.0f); - - TEST(_veVolumeControlPtr->SetOutputVolumePan(channel, left, right) == 0, - _T("SetOutputVolumePan(channel=%d, left=%2.1f, right=%2.1f)"), channel, left, right); - - *pResult = 0; -} - -void CWinTestDlg::OnNMReleasedcaptureSliderPanRight(NMHDR *pNMHDR, LRESULT *pResult) -{ - CSliderCtrl* slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_PAN_RIGHT); - slider->SetRange(0,10); - int pos = 10 - slider->GetPos(); // 0 <=> lower end, 10 <=> upper end - - float left(0.0); - float right(0.0); - const int channel(-1); - - // Only right channel will be modified - _veVolumeControlPtr->GetOutputVolumePan(channel, left, right); - - right = (float)((float)pos/10.0f); - - TEST(_veVolumeControlPtr->SetOutputVolumePan(channel, left, right) == 0, - _T("SetOutputVolumePan(channel=%d, left=%2.1f, right=%2.1f)"), channel, left, right); - - *pResult = 0; -} - -void CWinTestDlg::OnBnClickedButtonVersion() -{ - if (_veBasePtr) - { - char version[1024]; - if (_veBasePtr->GetVersion(version) == 0) - { - AfxMessageBox(CString(version), MB_OK); - } - else - { - AfxMessageBox(_T("FAILED!"), MB_OK); - } - } -} - -void CWinTestDlg::OnBnClickedCheckRecCall() -{ - // Not supported -} - -void CWinTestDlg::OnBnClickedCheckTypingDetection() -{ - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_TYPING_DETECTION); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - TEST(_veApmPtr->SetTypingDetectionStatus(enable) == 0, _T("SetTypingDetectionStatus(enable=%d)"), enable); -} - -void CWinTestDlg::OnBnClickedCheckRED() -{ - CButton* button = (CButton*)GetDlgItem(IDC_CHECK_RED); - int channel = GetDlgItemInt(IDC_EDIT_1); - int check = button->GetCheck(); - const bool enable = (check == BST_CHECKED); - TEST(_veRtpRtcpPtr->SetREDStatus(channel, enable) == 0, - _T("SetREDStatus(enable=%d)"), enable); -} - -// ---------------------------------------------------------------------------- -// Message Handlers -// ---------------------------------------------------------------------------- - -void CWinTestDlg::OnTimer(UINT_PTR nIDEvent) -{ - CString str; - - unsigned int svol(0); - unsigned int mvol(0); - - _timerTicks++; - - // Get speaker and microphone volumes - _veVolumeControlPtr->GetSpeakerVolume(svol); - _veVolumeControlPtr->GetMicVolume(mvol); - - // Update speaker volume slider - CSliderCtrl* sliderSpkr = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_OUTPUT_VOLUME); - sliderSpkr->SetRangeMin(0); - sliderSpkr->SetRangeMax(255); - sliderSpkr->SetPos(svol); - - // Update microphone volume slider - CSliderCtrl* sliderMic = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_INPUT_VOLUME); - sliderMic->SetRangeMin(0); - sliderMic->SetRangeMax(255); - sliderMic->SetPos(mvol); - - unsigned int micLevel; - unsigned int combinedOutputLevel; - - // Get audio levels - _veVolumeControlPtr->GetSpeechInputLevel(micLevel); - _veVolumeControlPtr->GetSpeechOutputLevel(-1, combinedOutputLevel); - - // Update audio level controls - CProgressCtrl* progressMic = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_AUDIO_LEVEL_IN); - progressMic->SetRange(0,9); - progressMic->SetStep(1); - progressMic->SetPos(micLevel); - CProgressCtrl* progressOut = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_AUDIO_LEVEL_OUT); - progressOut->SetRange(0,9); - progressOut->SetStep(1); - progressOut->SetPos(combinedOutputLevel); - - // Update playout delay (buffer size) - if (_veVideoSyncPtr) - { - int bufferMs(0); - _veVideoSyncPtr->GetPlayoutBufferSize(bufferMs); - SetDlgItemInt(IDC_EDIT_PLAYOUT_BUFFER_SIZE, bufferMs); - } - - if (_delayEstimate1 && _veVideoSyncPtr) - { - const int channel = GetDlgItemInt(IDC_EDIT_1); - int delayMs(0); - _veVideoSyncPtr->GetDelayEstimate(channel, delayMs); - SetDlgItemInt(IDC_EDIT_DELAY_ESTIMATE_1, delayMs); - } - - if (_rxVad && _veApmPtr && _rxVadObserverPtr) - { - SetDlgItemInt(IDC_EDIT_RXVAD, _rxVadObserverPtr->vad_decision); - } - - if (_veHardwarePtr) - { - int load1, load2; - _veHardwarePtr->GetSystemCPULoad(load1); - _veHardwarePtr->GetCPULoad(load2); - str.Format(_T("CPU load (system/VoE): %d/%d [%%]"), load1, load2); - SetDlgItemText(IDC_EDIT_CPU_LOAD, (LPCTSTR)str); - } - - BOOL ret; - int channel = GetDlgItemInt(IDC_EDIT_1, &ret); - - if (_veCodecPtr) - { - if (ret == TRUE) - { - CodecInst codec; - if (_veCodecPtr->GetRecCodec(channel, codec) == 0) - { - str.Format(_T("RX codec: %s, freq=%d, pt=%d, rate=%d, size=%d"), CharToTchar(codec.plname, 32), codec.plfreq, codec.pltype, codec.rate, codec.pacsize); - SetDlgItemText(IDC_EDIT_RX_CODEC_1, (LPCTSTR)str); - } - } - } - - if (_veRtpRtcpPtr) - { - if (ret == TRUE) - { - CallStatistics stats; - if (_veRtpRtcpPtr->GetRTCPStatistics(channel, stats) == 0) - { - str.Format(_T("RTCP | RTP: cum=%u, ext=%d, frac=%u, jitter=%u | TX=%d, RX=%d, RTT=%d"), - stats.cumulativeLost, stats.extendedMax, stats.fractionLost, stats.jitterSamples, stats.packetsSent, stats.packetsReceived, stats.rttMs); - SetDlgItemText(IDC_EDIT_RTCP_STAT_1, (LPCTSTR)str); - } - } - } - - SetTimer(0, 1000, NULL); - CDialog::OnTimer(nIDEvent); -} - -void CWinTestDlg::OnBnClickedButtonClearErrorCallback() -{ - _nErrorCallbacks = 0; - SetDlgItemText(IDC_EDIT_ERROR_CALLBACK, _T("")); -} - -// ---------------------------------------------------------------------------- -// TEST -// ---------------------------------------------------------------------------- - -void CWinTestDlg::OnBnClickedButtonTest1() -{ - // add tests here... -} diff --git a/webrtc/voice_engine/test/win_test/WinTestDlg.h b/webrtc/voice_engine/test/win_test/WinTestDlg.h deleted file mode 100644 index a77988096d..0000000000 --- a/webrtc/voice_engine/test/win_test/WinTestDlg.h +++ /dev/null @@ -1,274 +0,0 @@ -/* - * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ -#ifndef WEBRTC_VOICE_ENGINE_TEST_WIN_TEST_WINTESTDLG_H_ -#define WEBRTC_VOICE_ENGINE_TEST_WIN_TEST_WINTESTDLG_H_ - -#if (_MSC_VER >= 1400) -#define PRINT_GET_RESULT(...) \ - { \ - _strMsg.Format(__VA_ARGS__); \ - SetDlgItemText(IDC_EDIT_GET_OUTPUT, _strMsg); \ - } \ - -#define TEST(x, ...) \ - if (!(x)) \ - { \ - _strMsg.Format(__VA_ARGS__); \ - SetDlgItemText(IDC_EDIT_MESSAGE, _strMsg); \ - _strErr.Format(_T("FAILED (error=%d)"), _veBasePtr->LastError()); \ - SetDlgItemText(IDC_EDIT_RESULT, _strErr); \ - _failCount++; \ - SetDlgItemInt(IDC_EDIT_N_FAILS, _failCount); \ - SetDlgItemInt(IDC_EDIT_LAST_ERROR, _veBasePtr->LastError()); \ - } \ - else \ - { \ - _strMsg.Format(__VA_ARGS__); \ - SetDlgItemText(IDC_EDIT_MESSAGE, _strMsg); \ - SetDlgItemText(IDC_EDIT_RESULT, _T("OK")); \ - } \ - -#define TEST2(x, ...) \ - if (!(x)) \ - { \ - _strMsg.Format(__VA_ARGS__); \ - ((CWinTestDlg*)_parentDialogPtr)->UpdateTest(true, _strMsg); \ - } \ - else \ - { \ - _strMsg.Format(__VA_ARGS__); \ - ((CWinTestDlg*)_parentDialogPtr)->UpdateTest(false, _strMsg); \ - } -#else -#define TEST(x, exp) \ - if (!(x)) \ - { \ - _strMsg.Format(exp); \ - SetDlgItemText(IDC_EDIT_MESSAGE, _strMsg); \ - _strErr.Format("FAILED (error=%d)", _veBasePtr->LastError()); \ - SetDlgItemText(IDC_EDIT_RESULT, _strErr); \ - _failCount++; \ - SetDlgItemInt(IDC_EDIT_N_FAILS, _failCount); \ - SetDlgItemInt(IDC_EDIT_LAST_ERROR, _veBasePtr->LastError()); \ - } \ - else \ - { \ - _strMsg.Format(exp); \ - SetDlgItemText(IDC_EDIT_MESSAGE, _strMsg); \ - SetDlgItemText(IDC_EDIT_RESULT, _T("OK")); \ - } \ - -#define TEST2(x, exp) \ - if (!(x)) \ - { \ - _strMsg.Format(exp); \ - ((CWinTestDlg*)_parentDialogPtr)->UpdateTest(true, _strMsg); \ - } \ - else \ - { \ - _strMsg.Format(exp); \ - ((CWinTestDlg*)_parentDialogPtr)->UpdateTest(false, _strMsg); \ - } -#endif - -#include - -#include "webrtc/voice_engine/include/voe_base.h" -#include "webrtc/voice_engine/include/voe_codec.h" -#include "webrtc/voice_engine/include/voe_dtmf.h" -#include "webrtc/voice_engine/include/voe_external_media.h" -#include "webrtc/voice_engine/include/voe_file.h" -#include "webrtc/voice_engine/include/voe_hardware.h" -#include "webrtc/voice_engine/include/voe_network.h" -#include "webrtc/voice_engine/include/voe_rtp_rtcp.h" -#include "webrtc/voice_engine/include/voe_video_sync.h" -#include "webrtc/voice_engine/include/voe_volume_control.h" - -#include "webrtc/voice_engine/include/voe_audio_processing.h" -#include "webrtc/voice_engine/include/voe_errors.h" -#include "webrtc/voice_engine/include/voe_rtp_rtcp.h" - -class MediaProcessImpl; -class RxCallback; -class MyTransport; - -using namespace webrtc; - -#define MAX_NUM_OF_CHANNELS 10 - -// CWinTestDlg dialog -class CWinTestDlg : public CDialog, - public VoiceEngineObserver, - public VoERTPObserver -{ -// Construction -public: - CWinTestDlg(CWnd* pParent = NULL); // standard constructor - virtual ~CWinTestDlg(); - -// Dialog Data - enum { IDD = IDD_WINTEST_DIALOG }; - - BOOL UpdateTest(bool failed, const CString& strMsg); - -protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - -protected: // VoiceEngineObserver - virtual void CallbackOnError(int channel, int errCode); - -protected: // VoERTPObserver - virtual void OnIncomingCSRCChanged( - int channel, unsigned int CSRC, bool added); - virtual void OnIncomingSSRCChanged( - int channel, unsigned int SSRC); - -// Implementation -protected: - HICON m_hIcon; - - // Generated message map functions - virtual BOOL OnInitDialog(); - afx_msg void OnSysCommand(UINT nID, LPARAM lParam); - afx_msg void OnPaint(); - afx_msg HCURSOR OnQueryDragIcon(); - DECLARE_MESSAGE_MAP() -public: - afx_msg void OnBnClickedButtonCreate1(); - afx_msg void OnBnClickedButtonDelete1(); - -private: - VoiceEngine* _vePtr; - - VoECodec* _veCodecPtr; - VoEExternalMedia* _veExternalMediaPtr; - VoEVolumeControl* _veVolumeControlPtr; - VoEHardware* _veHardwarePtr; - VoEVideoSync* _veVideoSyncPtr; - VoENetwork* _veNetworkPtr; - VoEFile* _veFilePtr; - VoEAudioProcessing* _veApmPtr; - VoEBase* _veBasePtr; - VoERTP_RTCP* _veRtpRtcpPtr; - - MyTransport* _transportPtr; - MediaProcessImpl* _externalMediaPtr; - RxCallback* _rxVadObserverPtr; - -private: - int _failCount; - CString _strMsg; - CString _strErr; - bool _externalTransport; - bool _externalTransportBuild; - int _checkPlayFileIn; - int _checkPlayFileIn1; - int _checkPlayFileIn2; - int _checkPlayFileOut1; - int _checkPlayFileOut2; - int _checkAGC; - int _checkAGC1; - int _checkNS; - int _checkNS1; - int _checkEC; - int _checkVAD1; - int _checkVAD2; - int _checkSrtpTx1; - int _checkSrtpTx2; - int _checkSrtpRx1; - int _checkSrtpRx2; - int _checkConference1; - int _checkConference2; - int _checkOnHold1; - int _checkOnHold2; - bool _delayEstimate1; - bool _delayEstimate2; - bool _rxVad; - int _nErrorCallbacks; - int _timerTicks; - std::string _long_audio_file_path; - -public: - afx_msg void OnBnClickedButtonCreate2(); - afx_msg void OnBnClickedButtonDelete2(); - afx_msg void OnCbnSelchangeComboCodec1(); - afx_msg void OnBnClickedButtonStartListen1(); - afx_msg void OnBnClickedButtonStopListen1(); - afx_msg void OnBnClickedButtonStartPlayout1(); - afx_msg void OnBnClickedButtonStopPlayout1(); - afx_msg void OnBnClickedButtonStartSend1(); - afx_msg void OnBnClickedButtonStopSend1(); - afx_msg void OnCbnSelchangeComboIp2(); - afx_msg void OnCbnSelchangeComboIp1(); - afx_msg void OnCbnSelchangeComboCodec2(); - afx_msg void OnBnClickedButtonStartListen2(); - afx_msg void OnBnClickedButtonStopListen2(); - afx_msg void OnBnClickedButtonStartPlayout2(); - afx_msg void OnBnClickedButtonStopPlayout2(); - afx_msg void OnBnClickedButtonStartSend2(); - afx_msg void OnBnClickedButtonStopSend2(); - afx_msg void OnBnClickedButtonTest11(); - afx_msg void OnBnClickedCheckExtTrans1(); - afx_msg void OnBnClickedCheckPlayFileIn1(); - afx_msg void OnBnClickedCheckPlayFileOut1(); - afx_msg void OnBnClickedCheckExtTrans2(); - afx_msg void OnBnClickedCheckPlayFileIn2(); - afx_msg void OnBnClickedCheckPlayFileOut2(); - afx_msg void OnBnClickedCheckPlayFileIn(); - afx_msg void OnBnClickedCheckPlayFileOut(); - afx_msg void OnCbnSelchangeComboRecDevice(); - afx_msg void OnCbnSelchangeComboPlayDevice(); - afx_msg void OnBnClickedCheckExtMediaIn1(); - afx_msg void OnBnClickedCheckExtMediaOut1(); - afx_msg void OnNMReleasedcaptureSliderInputVolume(NMHDR *pNMHDR, LRESULT *pResult); - afx_msg void OnNMReleasedcaptureSliderOutputVolume(NMHDR *pNMHDR, LRESULT *pResult); - afx_msg void OnTimer(UINT_PTR nIDEvent); - afx_msg void OnBnClickedCheckAgc(); - CString _strComboIp1; - CString _strComboIp2; - afx_msg void OnBnClickedCheckNs(); - afx_msg void OnBnClickedCheckEc(); - afx_msg void OnBnClickedCheckVad1(); - afx_msg void OnBnClickedCheckVad2(); - afx_msg void OnBnClickedCheckExtMediaIn2(); - afx_msg void OnBnClickedCheckExtMediaOut2(); - afx_msg void OnBnClickedCheckMuteIn(); - afx_msg void OnBnClickedCheckMuteIn1(); - afx_msg void OnBnClickedCheckMuteIn2(); - afx_msg void OnBnClickedCheckSrtpTx1(); - afx_msg void OnBnClickedCheckSrtpRx1(); - afx_msg void OnBnClickedCheckSrtpTx2(); - afx_msg void OnBnClickedCheckSrtpRx2(); - afx_msg void OnBnClickedButtonDtmf1(); - afx_msg void OnBnClickedCheckRecMic(); - afx_msg void OnBnClickedButtonDtmf2(); - afx_msg void OnBnClickedButtonTest1(); - afx_msg void OnBnClickedCheckConference1(); - afx_msg void OnBnClickedCheckConference2(); - afx_msg void OnBnClickedCheckOnHold1(); - afx_msg void OnBnClickedCheckOnHold2(); - afx_msg void OnBnClickedCheckExtMediaIn(); - afx_msg void OnBnClickedCheckExtMediaOut(); - afx_msg void OnLbnSelchangeListCodec1(); - afx_msg void OnNMReleasedcaptureSliderPanLeft(NMHDR *pNMHDR, LRESULT *pResult); - afx_msg void OnNMReleasedcaptureSliderPanRight(NMHDR *pNMHDR, LRESULT *pResult); - afx_msg void OnBnClickedButtonVersion(); - afx_msg void OnBnClickedCheckDelayEstimate1(); - afx_msg void OnBnClickedCheckRxvad(); - afx_msg void OnBnClickedCheckAgc1(); - afx_msg void OnBnClickedCheckNs1(); - afx_msg void OnBnClickedCheckRecCall(); - afx_msg void OnBnClickedCheckTypingDetection(); - afx_msg void OnBnClickedCheckRED(); - afx_msg void OnBnClickedButtonClearErrorCallback(); - afx_msg void OnBnClickedCheckBwe1(); -}; - -#endif // WEBRTC_VOICE_ENGINE_TEST_WIN_TEST_WINTESTDLG_H_ diff --git a/webrtc/voice_engine/test/win_test/res/WinTest.ico b/webrtc/voice_engine/test/win_test/res/WinTest.ico deleted file mode 100644 index 8a84ca3d34597ada57e4c79ef62b28cf07b5ed9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21630 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 V7_3;)FxY%t!w{8u!r68W{|isv(C`2N diff --git a/webrtc/voice_engine/test/win_test/res/WinTest.rc2 b/webrtc/voice_engine/test/win_test/res/WinTest.rc2 deleted file mode 100644 index 044bf7e1ad..0000000000 --- a/webrtc/voice_engine/test/win_test/res/WinTest.rc2 +++ /dev/null @@ -1,13 +0,0 @@ -// -// WinTest.RC2 - resources Microsoft Visual C++ does not edit directly -// - -#ifdef APSTUDIO_INVOKED -#error this file is not editable by Microsoft Visual C++ -#endif //APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// Add manually edited resources here... - -///////////////////////////////////////////////////////////////////////////// diff --git a/webrtc/voice_engine/test/win_test/stdafx.cc b/webrtc/voice_engine/test/win_test/stdafx.cc deleted file mode 100644 index e321601295..0000000000 --- a/webrtc/voice_engine/test/win_test/stdafx.cc +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -// stdafx.cpp : source file that includes just the standard includes -// WinTest.pch will be the pre-compiled header -// stdafx.obj will contain the pre-compiled type information - -#include "webrtc/voice_engine/test/win_test/stdafx.h" diff --git a/webrtc/voice_engine/test/win_test/stdafx.h b/webrtc/voice_engine/test/win_test/stdafx.h deleted file mode 100644 index 17b3c30eaa..0000000000 --- a/webrtc/voice_engine/test/win_test/stdafx.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#ifndef WEBRTC_VOICE_ENGINE_TEST_WIN_TEST_STDAFX_H_ -#define WEBRTC_VOICE_ENGINE_TEST_WIN_TEST_STDAFX_H_ - -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, -// but are changed infrequently - -#ifndef _SECURE_ATL -#define _SECURE_ATL 1 -#endif - -#ifndef VC_EXTRALEAN -#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers -#endif - -// Modify the following defines if you have to target a platform prior to the ones specified below. -// Refer to MSDN for the latest info on corresponding values for different platforms. -#ifndef WINVER // Allow use of features specific to Windows XP or later. -#define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later. -#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. -#endif - -#ifndef _WIN32_WINDOWS // Allow use of features specific to Windows 98 or later. -#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. -#endif - -#ifndef _WIN32_IE // Allow use of features specific to IE 6.0 or later. -#define _WIN32_IE 0x0600 // Change this to the appropriate value to target other versions of IE. -#endif - -#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit - -// turns off MFC's hiding of some common and often safely ignored warning messages -#define _AFX_ALL_WARNINGS - -#include // MFC core and standard components -#include // MFC extensions - -#ifndef _AFX_NO_OLE_SUPPORT -#include // MFC support for Internet Explorer 4 Common Controls -#endif -#ifndef _AFX_NO_AFXCMN_SUPPORT -#include // MFC support for Windows Common Controls -#endif // _AFX_NO_AFXCMN_SUPPORT - -#ifdef _UNICODE -#if defined _M_IX86 -#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") -#elif defined _M_IA64 -#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"") -#elif defined _M_X64 -#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") -#else -#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") -#endif -#endif - -#endif // WEBRTC_VOICE_ENGINE_TEST_WIN_TEST_STDAFX_H_ diff --git a/webrtc/voice_engine/voice_engine.gyp b/webrtc/voice_engine/voice_engine.gyp index 006df0fef4..077b19372e 100644 --- a/webrtc/voice_engine/voice_engine.gyp +++ b/webrtc/voice_engine/voice_engine.gyp @@ -228,52 +228,6 @@ }, ], # targets 'conditions': [ - # TODO(kjellander): Support UseoFMFC on VS2010. - # http://code.google.com/p/webrtc/issues/detail?id=709 - ['OS=="win" and MSVS_VERSION < "2010"', { - 'targets': [ - # WinTest - GUI test for Windows - { - 'target_name': 'voe_ui_win_test', - 'type': 'executable', - 'dependencies': [ - 'voice_engine', - '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', - '<(webrtc_root)/test/test.gyp:test_support', - ], - 'sources': [ - 'test/win_test/Resource.h', - 'test/win_test/WinTest.cc', - 'test/win_test/WinTest.h', - 'test/win_test/WinTest.rc', - 'test/win_test/WinTestDlg.cc', - 'test/win_test/WinTestDlg.h', - 'test/win_test/res/WinTest.ico', - 'test/win_test/res/WinTest.rc2', - 'test/win_test/stdafx.cc', - 'test/win_test/stdafx.h', - ], - 'configurations': { - 'Common_Base': { - 'msvs_configuration_attributes': { - 'conditions': [ - ['component=="shared_library"', { - 'UseOfMFC': '2', # Shared DLL - },{ - 'UseOfMFC': '1', # Static - }], - ], - }, - }, - }, - 'msvs_settings': { - 'VCLinkerTool': { - 'SubSystem': '2', # Windows - }, - }, - }, - ], # targets - }], ['OS=="android"', { 'targets': [ {