1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/*
2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *
4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  Use of this source code is governed by a BSD-style license
5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  that can be found in the LICENSE file in the root of the source
6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  tree. An additional intellectual property rights grant can be found
7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  in the file PATENTS.  All contributing project authors may
8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org *  be found in the AUTHORS file in the root of the source tree.
9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */
10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <math.h>
12471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/test/testsupport/fileutils.h"
13471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/test/win_test/WinTest.h"
14471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/test/win_test/WinTestDlg.h"
15471ae72f18e7b23a96b245dbd508386fe139449cpbos@webrtc.org#include "webrtc/voice_engine/test/win_test/stdafx.h"
16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
17b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifdef _DEBUG
18b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define new DEBUG_NEW
19b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif
20b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
21b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgusing namespace webrtc;
22b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgunsigned 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};
24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Hack to convert char to TCHAR, using two buffers to be able to
26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// call twice in the same statement
27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgTCHAR convertTemp1[256] = {0};
28b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgTCHAR convertTemp2[256] = {0};
29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgbool convertBufferSwitch(false);
30b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgTCHAR* CharToTchar(const char* str, int len)
31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
32b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifdef _UNICODE
33b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  TCHAR* temp = convertBufferSwitch ? convertTemp1 : convertTemp2;
34b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  convertBufferSwitch = !convertBufferSwitch;
35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  memset(temp, 0, sizeof(convertTemp1));
36b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  MultiByteToWideChar(CP_UTF8, 0, str, len, temp, 256);
37b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  return temp;
38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#else
39b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  return str;
40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif
41b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
42b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
43b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Hack to convert TCHAR to char
44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgchar convertTemp3[256] = {0};
45b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgchar* TcharToChar(TCHAR* str, int len)
46b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
47b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifdef _UNICODE
48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  memset(convertTemp3, 0, sizeof(convertTemp3));
49b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  WideCharToMultiByte(CP_UTF8, 0, str, len, convertTemp3, 256, 0, 0);
50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  return convertTemp3;
51b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#else
52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org  return str;
53b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#endif
54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
55b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
57b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//    VoEConnectionObserver
58b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
59b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
60b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass ConnectionObserver : public  VoEConnectionObserver
61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
62b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic:
63b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ConnectionObserver();
64ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.org    virtual void OnPeriodicDeadOrAlive(int channel, bool alive);
65b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org};
66b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
67b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgConnectionObserver::ConnectionObserver()
68b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
69b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
71ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.orgvoid ConnectionObserver::OnPeriodicDeadOrAlive(int channel, bool alive)
72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
73b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString str;
74b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    str.Format(_T("OnPeriodicDeadOrAlive(channel=%d) => alive=%d"), channel, alive);
75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    OutputDebugString(str);
76b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
77b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
78b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
79b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//    VoiceEngineObserver
80b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
81b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
82ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.orgvoid CWinTestDlg::CallbackOnError(int channel, int errCode)
83b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
84b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _nErrorCallbacks++;
85b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
86b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString str;
87b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    str.Format(_T("[#%d] CallbackOnError(channel=%d) => errCode = %d"), _nErrorCallbacks, channel, errCode);
88b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (errCode == VE_RECEIVE_PACKET_TIMEOUT)
89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
90b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        str += _T(" <=> VE_RECEIVE_PACKET_TIMEOUT");
91b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
92b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (errCode == VE_PACKET_RECEIPT_RESTARTED)
93b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
94b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        str += _T(" <=> VE_PACKET_RECEIPT_RESTARTED");
95b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
96b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (errCode == VE_RUNTIME_PLAY_WARNING)
97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
98b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        str += _T(" <=> VE_RUNTIME_PLAY_WARNING");
99b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (errCode == VE_RUNTIME_REC_WARNING)
101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        str += _T(" <=> VE_RUNTIME_REC_WARNING");
103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (errCode == VE_RUNTIME_PLAY_ERROR)
105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        str += _T(" <=> VE_RUNTIME_PLAY_ERROR");
107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
108b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (errCode == VE_RUNTIME_REC_ERROR)
109b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
110b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        str += _T(" <=> VE_RUNTIME_REC_ERROR");
111b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
112b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (errCode == VE_SATURATION_WARNING)
113b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
114b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        str += _T(" <=> VE_SATURATION_WARNING");
115b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
116b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (errCode == VE_TYPING_NOISE_WARNING)
117b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
118b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        str += _T(" <=> VE_TYPING_NOISE_WARNING");
119b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
120b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (errCode == VE_REC_DEVICE_REMOVED)
121b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
122b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        str += _T(" <=> VE_REC_DEVICE_REMOVED");
123b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
124b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // AfxMessageBox((LPCTSTR)str, MB_OK);
125b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetDlgItemText(IDC_EDIT_ERROR_CALLBACK, (LPCTSTR)str);
126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
127b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
128b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
129b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//    VoERTPObserver
130b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
131b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
132ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.orgvoid CWinTestDlg::OnIncomingCSRCChanged(int channel, unsigned int CSRC, bool added)
133b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
134b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString str;
135b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    str.Format(_T("OnIncomingCSRCChanged(channel=%d) => CSRC=%u, added=%d"), channel, CSRC, added);
136b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetDlgItemText(IDC_EDIT_ERROR_CALLBACK, (LPCTSTR)str);
137b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
138b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
139ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.orgvoid CWinTestDlg::OnIncomingSSRCChanged(int channel, unsigned int SSRC)
140b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
141b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString str;
142b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    str.Format(_T("OnIncomingSSRCChanged(channel=%d) => SSRC=%u"), channel, SSRC);
143b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetDlgItemText(IDC_EDIT_ERROR_CALLBACK, (LPCTSTR)str);
144b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
146b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//    Transport
148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
149b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
150b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass MyTransport : public Transport
151b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
152b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic:
153b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    MyTransport(VoENetwork* veNetwork);
154b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    virtual int SendPacket(int channel, const void *data, int len);
155b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    virtual int SendRTCPPacket(int channel, const void *data, int len);
156b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprivate:
157b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    VoENetwork* _veNetworkPtr;
158b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org};
159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
160b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgMyTransport::MyTransport(VoENetwork* veNetwork) :
161b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veNetworkPtr(veNetwork)
162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
163b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
164b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
165b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgint
166b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgMyTransport::SendPacket(int channel, const void *data, int len)
167b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
168b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veNetworkPtr->ReceivedRTPPacket(channel, data, len);
169b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return len;
170b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
171b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
172b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgint
173b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgMyTransport::SendRTCPPacket(int channel, const void *data, int len)
174b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
175b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veNetworkPtr->ReceivedRTCPPacket(channel, data, len);
176b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return len;
177b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
178b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
179b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
180b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//    VoEMediaProcess
181b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
182b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
183b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass MediaProcessImpl : public VoEMediaProcess
184b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
185b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic:
186b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    MediaProcessImpl();
187ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.org    virtual void Process(int channel,
188ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.org                         ProcessingTypes type,
18954f03bc96c30337a3a97af7262cfb5148063b162pbos@webrtc.org                         int16_t audio_10ms[],
190ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.org                         int length,
191ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.org                         int samplingFreqHz,
192ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.org                         bool stereo);
193b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org};
194b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
195b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgMediaProcessImpl::MediaProcessImpl()
196b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
197b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
198b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
199ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.orgvoid MediaProcessImpl::Process(int channel,
200ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.org                               ProcessingTypes type,
20154f03bc96c30337a3a97af7262cfb5148063b162pbos@webrtc.org                               int16_t audio_10ms[],
202ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.org                               int length,
203ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.org                               int samplingFreqHz,
204ca7a9a2696d2f73f543241093c4faeb4c608678cpbos@webrtc.org                               bool stereo)
205b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
206b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int x = rand() % 100;
207b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
208b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    for (int i = 0; i < length; i++)
209b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
210b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (channel == -1)
211b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
212b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            if (type == kPlaybackAllChannelsMixed)
213b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
214b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                // playout: scale up
215b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                if (!stereo)
216b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                {
217b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    audio_10ms[i] = (audio_10ms[i] << 2);
218b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                }
219b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                else
220b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                {
221b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    audio_10ms[2*i] = (audio_10ms[2*i] << 2);
222b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    audio_10ms[2*i+1] = (audio_10ms[2*i+1] << 2);
223b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                }
224b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
225b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            else
226b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
227b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                // recording: emulate packet loss by "dropping" 10% of the packets
228b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                if (x >= 0 && x < 10)
229b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                {
230b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    if (!stereo)
231b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    {
232b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                        audio_10ms[i] = 0;
233b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    }
234b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    else
235b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    {
236b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                        audio_10ms[2*i] = 0;
237b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                        audio_10ms[2*i+1] = 0;
238b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    }
239b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                }
240b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
241b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
242b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else
243b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
244b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            if (type == kPlaybackPerChannel)
245b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
246b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                // playout: mute
247b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                if (!stereo)
248b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                {
249b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    audio_10ms[i] = 0;
250b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                }
251b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                else
252b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                {
253b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    audio_10ms[2*i] = 0;
254b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    audio_10ms[2*i+1] = 0;
255b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                }
256b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
257b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            else
258b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
259b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                // recording: emulate packet loss by "dropping" 50% of the packets
260b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                if (x >= 0 && x < 50)
261b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                {
262b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    if (!stereo)
263b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    {
264b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                        audio_10ms[i] = 0;
265b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    }
266b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    else
267b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    {
268b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                        audio_10ms[2*i] = 0;
269b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                        audio_10ms[2*i+1] = 0;
270b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    }
271b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                }
272b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
273b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
274b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
275b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
276b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
277b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
278b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//    TelephoneEventObserver
279b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
280b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
281b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass TelephoneEventObserver: public VoETelephoneEventObserver
282b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
283b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic:
284b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TelephoneEventObserver(CWnd* editControlOut, CWnd* editControlIn);
285b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    virtual void OnReceivedTelephoneEventInband(int channel, int eventCode,
286b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                bool endOfEvent);
287b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    virtual void OnReceivedTelephoneEventOutOfBand(int channel, int eventCode,
288b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                   bool endOfEvent);
289b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprivate:
290b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CWnd* _editControlOutPtr;
291b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CWnd* _editControlInPtr;
292b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org};
293b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
294b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgTelephoneEventObserver::TelephoneEventObserver(CWnd* editControlOut, CWnd* editControlIn) :
295b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _editControlOutPtr(editControlOut),
296b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _editControlInPtr(editControlIn)
297b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
298b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
299b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
300b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid TelephoneEventObserver::OnReceivedTelephoneEventInband(int channel,
301b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                            int eventCode,
302b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                            bool endOfEvent)
303b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
304b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString msg;
305b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (endOfEvent)
306b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
307b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        msg.AppendFormat(_T("%d [END]"), eventCode);
308b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _editControlInPtr->SetWindowText((LPCTSTR)msg);
309b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
310b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
311b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
312b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        msg.AppendFormat(_T("%d [START]"), eventCode);
313b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _editControlInPtr->SetWindowText((LPCTSTR)msg);
314b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
315b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
316b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
317b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid TelephoneEventObserver::OnReceivedTelephoneEventOutOfBand(int channel,
318b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                               int eventCode,
319b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                                               bool endOfEvent)
320b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
321b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString msg;
322b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (endOfEvent)
323b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
324b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        msg.AppendFormat(_T("%d [END]"), eventCode);
325b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _editControlOutPtr->SetWindowText((LPCTSTR)msg);
326b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
327b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
328b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
329b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        msg.AppendFormat(_T("%d [START]"), eventCode);
330b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _editControlOutPtr->SetWindowText((LPCTSTR)msg);
331b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
332b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
333b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
334b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
335b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//    RxVadCallback
336b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
337b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
338b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass RxCallback : public VoERxVadCallback
339b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
340b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic:
341b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    RxCallback() : vad_decision(-1) {};
342b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
343b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    virtual void OnRxVad(int , int vadDecision)
344b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
345b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        vad_decision = vadDecision;
346b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
347b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
348b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int vad_decision;
349b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org};
350b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
351b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
352b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//                                 CAboutDlg dialog
353b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
354b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
355b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass CAboutDlg : public CDialog
356b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
357b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic:
358b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CAboutDlg();
359b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
360b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Dialog Data
361b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    enum { IDD = IDD_ABOUTBOX };
362b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
363b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    protected:
364b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
365b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
366b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Implementation
367b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprotected:
368b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    DECLARE_MESSAGE_MAP()
369b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org};
370b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
371b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgCAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
372b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
373b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
374b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
375b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CAboutDlg::DoDataExchange(CDataExchange* pDX)
376b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
377b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CDialog::DoDataExchange(pDX);
378b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
379b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
380b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgBEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
381b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgEND_MESSAGE_MAP()
382b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
383b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
384b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//                               CTelephonyEvent dialog
385b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
386b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
387b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass CTelephonyEvent : public CDialog
388b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
389b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    DECLARE_DYNAMIC(CTelephonyEvent)
390b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
391b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic:
392b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CTelephonyEvent(VoiceEngine* voiceEngine, int channel, CDialog* pParentDialog, CWnd* pParent = NULL);   // standard constructor
393b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    virtual ~CTelephonyEvent();
394b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
395b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// Dialog Data
396b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    enum { IDD = IDD_DTMF_DIALOG };
397b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
398b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprotected:
399b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
400b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    virtual BOOL OnInitDialog();
401b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
402b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    DECLARE_MESSAGE_MAP()
403b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgpublic:
404b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButton1();
405b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButton2();
406b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButton3();
407b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButton4();
408b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButton5();
409b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButton6();
410b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButton7();
411b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButton8();
412b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButton9();
413b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButton10();
414b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButton11();
415b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButton12();
416b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButtonA();
417b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButtonB();
418b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButtonC();
419b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButtonD();
420b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedCheckDtmfPlayoutRx();
421b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedCheckDtmfPlayTone();
422b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedCheckStartStopMode();
423b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedCheckEventInband();
424b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedCheckDtmfFeedback();
425b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedCheckDirectFeedback();
426b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedRadioSingle();
427b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedRadioMulti();
428b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedRadioStartStop();
429b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButtonSetRxTelephonePt();
430b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButtonSetTxTelephonePt();
431b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedButtonSendTelephoneEvent();
432b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedCheckDetectInband();
433b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedCheckDetectOutOfBand();
434b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    afx_msg void OnBnClickedCheckEventDetection();
435b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
436b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprivate:
437b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    void SendTelephoneEvent(unsigned char eventCode);
438b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
439b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgprivate:
440b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    VoiceEngine*                _vePtr;
441b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    VoEBase*                    _veBasePtr;
442b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    VoEDtmf*                    _veDTMFPtr;
443b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    VoECodec*                   _veCodecPtr;
444b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int                         _channel;
445b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString                     _strMsg;
446b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CDialog*                    _parentDialogPtr;
447b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TelephoneEventObserver*     _telephoneEventObserverPtr;
448b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    bool                        _PlayDtmfToneLocally;
449b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    bool                        _modeStartStop;
450b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    bool                        _modeSingle;
451b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    bool                        _modeSequence;
452b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    bool                        _playingDTMFTone;
453b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    bool                        _outOfBandEventDetection;
454b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    bool                        _inbandEventDetection;
455b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org};
456b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
457b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgIMPLEMENT_DYNAMIC(CTelephonyEvent, CDialog)
458b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
459b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgCTelephonyEvent::CTelephonyEvent(VoiceEngine* voiceEngine,
460b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                 int channel,
461b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                 CDialog* pParentDialog,
462b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                 CWnd* pParent /*=NULL*/)
463b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    : _vePtr(voiceEngine),
464b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      _channel(channel),
465b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      _PlayDtmfToneLocally(false),
466b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      _modeStartStop(false),
467b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      _modeSingle(true),
468b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      _modeSequence(false),
469b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      _playingDTMFTone(false),
470b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      _outOfBandEventDetection(true),
471b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      _inbandEventDetection(false),
472b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      _parentDialogPtr(pParentDialog),
473b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      _telephoneEventObserverPtr(NULL),
474b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      CDialog(CTelephonyEvent::IDD, pParent)
475b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
476b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veBasePtr = VoEBase::GetInterface(_vePtr);
477b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veDTMFPtr = VoEDtmf::GetInterface(_vePtr);
478b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veCodecPtr = VoECodec::GetInterface(_vePtr);
479b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
480b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
481b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgCTelephonyEvent::~CTelephonyEvent()
482b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
483b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veDTMFPtr->Release();
484b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veCodecPtr->Release();
485b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veBasePtr->Release();
486b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
487b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_telephoneEventObserverPtr)
488b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
489b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veDTMFPtr->DeRegisterTelephoneEventDetection(_channel);
490b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        delete _telephoneEventObserverPtr;
491b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _telephoneEventObserverPtr = NULL;
492b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
493b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
494b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
495b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::DoDataExchange(CDataExchange* pDX)
496b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
497b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CDialog::DoDataExchange(pDX);
498b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
499b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
500b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
501b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgBEGIN_MESSAGE_MAP(CTelephonyEvent, CDialog)
502b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_1, &CTelephonyEvent::OnBnClickedButton1)
503b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_2, &CTelephonyEvent::OnBnClickedButton2)
504b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_3, &CTelephonyEvent::OnBnClickedButton3)
505b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_4, &CTelephonyEvent::OnBnClickedButton4)
506b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_5, &CTelephonyEvent::OnBnClickedButton5)
507b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_6, &CTelephonyEvent::OnBnClickedButton6)
508b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_7, &CTelephonyEvent::OnBnClickedButton7)
509b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_8, &CTelephonyEvent::OnBnClickedButton8)
510b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_9, &CTelephonyEvent::OnBnClickedButton9)
511b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_10, &CTelephonyEvent::OnBnClickedButton10)
512b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_11, &CTelephonyEvent::OnBnClickedButton11)
513b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_12, &CTelephonyEvent::OnBnClickedButton12)
514b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_13, &CTelephonyEvent::OnBnClickedButtonA)
515b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_14, &CTelephonyEvent::OnBnClickedButtonB)
516b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_15, &CTelephonyEvent::OnBnClickedButtonC)
517b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_16, &CTelephonyEvent::OnBnClickedButtonD)
518b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_DTMF_PLAYOUT_RX, &CTelephonyEvent::OnBnClickedCheckDtmfPlayoutRx)
519b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_DTMF_PLAY_TONE, &CTelephonyEvent::OnBnClickedCheckDtmfPlayTone)
520b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_EVENT_INBAND, &CTelephonyEvent::OnBnClickedCheckEventInband)
521b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_DTMF_FEEDBACK, &CTelephonyEvent::OnBnClickedCheckDtmfFeedback)
522b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_DIRECT_FEEDBACK, &CTelephonyEvent::OnBnClickedCheckDirectFeedback)
523b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_RADIO_SINGLE, &CTelephonyEvent::OnBnClickedRadioSingle)
524b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_RADIO_MULTI, &CTelephonyEvent::OnBnClickedRadioMulti)
525b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_RADIO_START_STOP, &CTelephonyEvent::OnBnClickedRadioStartStop)
526b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_SET_RX_TELEPHONE_PT, &CTelephonyEvent::OnBnClickedButtonSetRxTelephonePt)
527b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_SET_TX_TELEPHONE_PT, &CTelephonyEvent::OnBnClickedButtonSetTxTelephonePt)
528b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_SEND_TELEPHONE_EVENT, &CTelephonyEvent::OnBnClickedButtonSendTelephoneEvent)
529b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_DETECT_INBAND, &CTelephonyEvent::OnBnClickedCheckDetectInband)
530b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_DETECT_OUT_OF_BAND, &CTelephonyEvent::OnBnClickedCheckDetectOutOfBand)
531b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_EVENT_DETECTION, &CTelephonyEvent::OnBnClickedCheckEventDetection)
532b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgEND_MESSAGE_MAP()
533b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
534b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
535b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// CTelephonyEvent message handlers
536b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
537b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgBOOL CTelephonyEvent::OnInitDialog()
538b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
539b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CDialog::OnInitDialog();
540b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
541b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString str;
542b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetWindowText(str);
543b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    str.AppendFormat(_T(" [channel = %d]"), _channel);
544b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetWindowText(str);
545b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
546b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Update dialog with latest playout state
547b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    bool enabled(false);
548b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veDTMFPtr->GetDtmfPlayoutStatus(_channel, enabled);
549b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_DTMF_PLAYOUT_RX);
550b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    button->SetCheck(enabled ? BST_CHECKED : BST_UNCHECKED);
551b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
552b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Update dialog with latest feedback state
553b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    bool directFeedback(false);
554b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veDTMFPtr->GetDtmfFeedbackStatus(enabled, directFeedback);
555b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    button = (CButton*)GetDlgItem(IDC_CHECK_DTMF_FEEDBACK);
556b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    button->SetCheck(enabled ? BST_CHECKED : BST_UNCHECKED);
557b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    button = (CButton*)GetDlgItem(IDC_CHECK_DIRECT_FEEDBACK);
558b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    button->SetCheck(directFeedback ? BST_CHECKED : BST_UNCHECKED);
559b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
560b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Default event length is 160 ms
561b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetDlgItemInt(IDC_EDIT_EVENT_LENGTH, 160);
562b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
563b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Default event attenuation is 10 (<-> -10dBm0)
564b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetDlgItemInt(IDC_EDIT_EVENT_ATTENUATION, 10);
565b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
566b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Current event-detection status
567b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TelephoneEventDetectionMethods detectionMethod(kOutOfBand);
568b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veDTMFPtr->GetTelephoneEventDetectionStatus(_channel, enabled, detectionMethod) == 0)
569b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
570b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // DTMF detection is supported
571b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (enabled)
572b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
573b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            button = (CButton*)GetDlgItem(IDC_CHECK_EVENT_DETECTION);
574b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            button->SetCheck(BST_CHECKED);
575b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
576b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (detectionMethod == kOutOfBand || detectionMethod == kInAndOutOfBand)
577b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
578b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            button = (CButton*)GetDlgItem(IDC_CHECK_DETECT_OUT_OF_BAND);
579b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            button->SetCheck(BST_CHECKED);
580b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
581b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (detectionMethod == kInBand || detectionMethod == kInAndOutOfBand)
582b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
583b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            button = (CButton*)GetDlgItem(IDC_CHECK_DETECT_INBAND);
584b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            button->SetCheck(BST_CHECKED);
585b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
586b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
587b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
588b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
589b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // DTMF detection is not supported
590b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EVENT_DETECTION)->EnableWindow(FALSE);
591b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_DETECT_OUT_OF_BAND)->EnableWindow(FALSE);
592b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_DETECT_INBAND)->EnableWindow(FALSE);
593b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_EDIT_ON_EVENT_INBAND)->EnableWindow(FALSE);
594b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_EDIT_ON_EVENT_OUT_OF_BAND)->EnableWindow(FALSE);
595b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
596b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
597b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Telephone-event PTs
598b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    unsigned char pt(0);
599b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veDTMFPtr->GetSendTelephoneEventPayloadType(_channel, pt);
600b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetDlgItemInt(IDC_EDIT_EVENT_TX_PT, pt);
601b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
602b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CodecInst codec;
603b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    strcpy_s(codec.plname, 32, "telephone-event"); codec.channels = 1; codec.plfreq = 8000;
604b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veCodecPtr->GetRecPayloadType(_channel, codec);
605b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetDlgItemInt(IDC_EDIT_EVENT_RX_PT, codec.pltype);
606b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
607b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_modeSingle)
608b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
609b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        ((CButton*)GetDlgItem(IDC_RADIO_SINGLE))->SetCheck(BST_CHECKED);
610b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
611b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (_modeStartStop)
612b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
613b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        ((CButton*)GetDlgItem(IDC_RADIO_START_STOP))->SetCheck(BST_CHECKED);
614b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
615b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (_modeSequence)
616b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
617b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        ((CButton*)GetDlgItem(IDC_RADIO_MULTI))->SetCheck(BST_CHECKED);
618b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
619b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
620b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return TRUE;  // return TRUE  unless you set the focus to a control
621b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
622b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::SendTelephoneEvent(unsigned char eventCode)
623b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
624b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    BOOL ret;
625b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int lengthMs(0);
626b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int attenuationDb(0);
627b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    bool outBand(false);
628b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int res(0);
629b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
630b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // tone length
631b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (!_modeStartStop)
632b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
633b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        lengthMs = GetDlgItemInt(IDC_EDIT_EVENT_LENGTH, &ret);
634b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (ret == FALSE)
635b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
636b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            // use default length if edit field is empty
637b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            lengthMs = 160;
638b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
639b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
640b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
641b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // attenuation
642b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    attenuationDb = GetDlgItemInt(IDC_EDIT_EVENT_ATTENUATION, &ret);
643b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == FALSE)
644b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
645b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // use default length if edit field is empty
646b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        attenuationDb = 10;
647b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
648b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
649b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // out-band or in-band
650b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EVENT_INBAND);
651b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
652b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    outBand = (check == BST_UNCHECKED);
653b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
654b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (eventCode < 16)
655b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemInt(IDC_EDIT_DTMF_EVENT, eventCode);
656b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
657b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_PlayDtmfToneLocally)
658b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
659b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // --- PlayDtmfTone
660b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
661b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_modeSingle)
662b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
663b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            TEST2(_veDTMFPtr->PlayDtmfTone(eventCode, lengthMs, attenuationDb) == 0,
664b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                _T("PlayDtmfTone(eventCode=%u, lengthMs=%d, attenuationDb=%d)"), eventCode, lengthMs, attenuationDb);
665b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
666b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_modeStartStop)
667b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
668b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            if (!_playingDTMFTone)
669b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
670b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                TEST2((res = _veDTMFPtr->StartPlayingDtmfTone(eventCode, attenuationDb)) == 0,
671b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    _T("StartPlayingDtmfTone(eventCode=%u, attenuationDb=%d)"), eventCode, attenuationDb);
672b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
673b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            else
674b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
675b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                TEST2((res = _veDTMFPtr->StopPlayingDtmfTone()) == 0,
676b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    _T("StopPlayingDTMFTone()"));
677b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
678b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            if (res == 0)
679b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                _playingDTMFTone = !_playingDTMFTone;
680b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
681b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_modeSequence)
682b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
683b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            int nTones(1);
684b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            int sleepMs(0);
685b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            int lenMult(1);
686b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            if (eventCode == 1)
687b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
688b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                nTones = 2;
689b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                sleepMs = lengthMs;
690b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                lenMult = 1;
691b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
692b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            else if (eventCode == 2)
693b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
694b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                nTones = 2;
695b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                sleepMs = lengthMs/2;
696b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                lenMult = 2;
697b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
698b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            else if (eventCode == 3)
699b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
700b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                nTones = 3;
701b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                sleepMs = 0;
702b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                lenMult = 1;
703b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
704b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            for (int i = 0; i < nTones; i++)
705b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
706b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                TEST2(_veDTMFPtr->PlayDtmfTone(eventCode, lengthMs, attenuationDb) == 0,
707b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    _T("PlayDtmfTone(eventCode=%u, outBand=%d, lengthMs=%d, attenuationDb=%d)"), eventCode, lengthMs, attenuationDb);
708b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                Sleep(sleepMs);
709b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                lengthMs = lenMult*lengthMs;
710b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                eventCode++;
711b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
712b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
713b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
714b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
715b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
716b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // --- SendTelephoneEvent
717b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
718b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_modeSingle)
719b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
720b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            TEST2(_veDTMFPtr->SendTelephoneEvent(_channel, eventCode, outBand, lengthMs, attenuationDb) == 0,
721b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                _T("SendTelephoneEvent(channel=%d, eventCode=%u, outBand=%d, lengthMs=%d, attenuationDb=%d)"), _channel, eventCode, outBand, lengthMs, attenuationDb);
722b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
723b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_modeStartStop)
724b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
725b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            TEST2(false, _T("*** NOT IMPLEMENTED ***"));
726b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
727b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_modeSequence)
728b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
729b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            int nTones(1);
730b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            int sleepMs(0);
731b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            int lenMult(1);
732b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            if (eventCode == 1)
733b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
734b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                nTones = 2;
735b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                sleepMs = lengthMs;
736b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                lenMult = 1;
737b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
738b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            else if (eventCode == 2)
739b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
740b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                eventCode = 1;
741b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                nTones = 2;
742b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                sleepMs = lengthMs/2;
743b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                lenMult = 2;
744b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
745b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            else if (eventCode == 3)
746b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
747b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                eventCode = 1;
748b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                nTones = 3;
749b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                sleepMs = 0;
750b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                lenMult = 1;
751b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
752b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            for (int i = 0; i < nTones; i++)
753b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
754b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                TEST2(_veDTMFPtr->SendTelephoneEvent(_channel, eventCode, outBand, lengthMs, attenuationDb) == 0,
755b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    _T("SendTelephoneEvent(channel=%d, eventCode=%u, outBand=%d, lengthMs=%d, attenuationDb=%d)"), _channel, eventCode, outBand, lengthMs, attenuationDb);
756b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                Sleep(sleepMs);
757b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                lengthMs = lenMult*lengthMs;
758b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                eventCode++;
759b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
760b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
761b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
762b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
763b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
764b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButtonSendTelephoneEvent()
765b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
766b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    BOOL ret;
767b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    unsigned char eventCode(0);
768b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
769b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    eventCode = (unsigned char)GetDlgItemInt(IDC_EDIT_EVENT_CODE, &ret);
770b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == FALSE)
771b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
772b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        return;
773b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
774b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(eventCode);
775b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
776b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
777b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButton1()
778b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
779b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(1);
780b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
781b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
782b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButton2()
783b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
784b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(2);
785b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
786b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
787b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButton3()
788b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
789b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(3);
790b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
791b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
792b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButton4()
793b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
794b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(4);
795b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
796b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
797b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButton5()
798b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
799b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(5);
800b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
801b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
802b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButton6()
803b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
804b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(6);
805b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
806b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
807b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButton7()
808b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
809b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(7);
810b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
811b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
812b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButton8()
813b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
814b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(8);
815b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
816b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
817b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButton9()
818b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
819b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(9);
820b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
821b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
822b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButton10()
823b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
824b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // *
825b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(10);
826b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
827b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
828b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButton11()
829b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
830b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(0);
831b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
832b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
833b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButton12()
834b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
835b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // #
836b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(11);
837b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
838b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
839b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButtonA()
840b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
841b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(12);
842b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
843b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
844b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButtonB()
845b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
846b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(13);
847b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
848b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
849b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButtonC()
850b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
851b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(14);
852b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
853b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
854b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButtonD()
855b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
856b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SendTelephoneEvent(15);
857b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
858b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
859b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedCheckDtmfPlayoutRx()
860b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
861b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_DTMF_PLAYOUT_RX);
862b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
863b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
864b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST2(_veDTMFPtr->SetDtmfPlayoutStatus(_channel, enable) == 0, _T("SetDtmfPlayoutStatus(channel=%d, enable=%d)"), _channel, enable);
865b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
866b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
867b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedCheckDtmfPlayTone()
868b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
869b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_DTMF_PLAY_TONE);
870b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
871b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _PlayDtmfToneLocally = (check == BST_CHECKED);
872b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
873b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
874b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedRadioSingle()
875b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
876b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _modeStartStop = false;
877b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _modeSingle = true;
878b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _modeSequence = false;
879b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
880b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
881b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedRadioMulti()
882b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
883b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _modeStartStop = false;
884b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _modeSingle = false;
885b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _modeSequence = true;
886b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
887b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
888b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedRadioStartStop()
889b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
890b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // CButton* button = (CButton*)GetDlgItem(IDC_RADIO_START_STOP);
891b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // int check = button->GetCheck();
892b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _modeStartStop = true;
893b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _modeSingle = false;
894b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _modeSequence = false;
895b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // GetDlgItem(IDC_EDIT_EVENT_LENGTH)->EnableWindow();
896b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
897b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
898b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedCheckEventInband()
899b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
900b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EVENT_INBAND);
901b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
902b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_EDIT_EVENT_CODE)->EnableWindow(check?FALSE:TRUE);
903b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_SEND_TELEPHONE_EVENT)->EnableWindow(check?FALSE:TRUE);
904b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
905b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
906b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedCheckDtmfFeedback()
907b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
908b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button(NULL);
909b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
910b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Retrieve feedback state
911b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    button = (CButton*)GetDlgItem(IDC_CHECK_DTMF_FEEDBACK);
912b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
913b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
914b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
915b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Retrieve direct-feedback setting
916b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    button = (CButton*)GetDlgItem(IDC_CHECK_DIRECT_FEEDBACK);
917b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    check = button->GetCheck();
918b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool directFeedback = (check == BST_CHECKED);
919b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
920b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // GetDlgItem(IDC_CHECK_DIRECT_FEEDBACK)->EnableWindow(enable ? TRUE : FALSE);
921b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
922b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST2(_veDTMFPtr->SetDtmfFeedbackStatus(enable, directFeedback) == 0,
923b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetDtmfFeedbackStatus(enable=%d, directFeedback=%d)"), enable, directFeedback);
924b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
925b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
926b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedCheckDirectFeedback()
927b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
928b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button(NULL);
929b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
930b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Retrieve feedback state
931b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    button = (CButton*)GetDlgItem(IDC_CHECK_DTMF_FEEDBACK);
932b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
933b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
934b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
935b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Retrieve new direct-feedback setting
936b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    button = (CButton*)GetDlgItem(IDC_CHECK_DIRECT_FEEDBACK);
937b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    check = button->GetCheck();
938b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool directFeedback = (check == BST_CHECKED);
939b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
940b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST2(_veDTMFPtr->SetDtmfFeedbackStatus(enable, directFeedback) == 0,
941b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetDtmfFeedbackStatus(enable=%d, directFeedback=%d)"), enable, directFeedback);
942b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
943b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
944b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButtonSetRxTelephonePt()
945b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
946b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    BOOL ret;
947b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int pt = GetDlgItemInt(IDC_EDIT_EVENT_RX_PT, &ret);
948b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == FALSE)
949b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        return;
950b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CodecInst codec;
951b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    strcpy_s(codec.plname, 32, "telephone-event");
952b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    codec.pltype = pt; codec.channels = 1; codec.plfreq = 8000;
953b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST2(_veCodecPtr->SetRecPayloadType(_channel, codec) == 0,
954b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetSendTelephoneEventPayloadType(channel=%d, codec.pltype=%u)"), _channel, codec.pltype);
955b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
956b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
957b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedButtonSetTxTelephonePt()
958b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
959b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    BOOL ret;
960b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int pt = GetDlgItemInt(IDC_EDIT_EVENT_TX_PT, &ret);
961b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == FALSE)
962b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        return;
963b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST2(_veDTMFPtr->SetSendTelephoneEventPayloadType(_channel, pt) == 0,
964b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetSendTelephoneEventPayloadType(channel=%d, type=%u)"), _channel, pt);
965b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
966b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
967b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedCheckDetectInband()
968b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
969b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_DETECT_INBAND);
970b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
971b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _inbandEventDetection = (check == BST_CHECKED);
972b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
973b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    bool enabled(false);
974b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TelephoneEventDetectionMethods detectionMethod;
975b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veDTMFPtr->GetTelephoneEventDetectionStatus(_channel, enabled, detectionMethod);
976b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enabled)
977b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
978b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // deregister
979b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veDTMFPtr->DeRegisterTelephoneEventDetection(_channel);
980b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        delete _telephoneEventObserverPtr;
981b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _telephoneEventObserverPtr = NULL;
982b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_ON_EVENT_INBAND,_T(""));
983b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_ON_EVENT_OUT_OF_BAND,_T(""));
984b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
985b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    OnBnClickedCheckEventDetection();
986b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
987b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
988b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedCheckDetectOutOfBand()
989b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
990b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_DETECT_OUT_OF_BAND);
991b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
992b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _outOfBandEventDetection = (check == BST_CHECKED);
993b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
994b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    bool enabled(false);
995b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TelephoneEventDetectionMethods detectionMethod;
996b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veDTMFPtr->GetTelephoneEventDetectionStatus(_channel, enabled, detectionMethod);
997b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enabled)
998b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
999b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // deregister
1000b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veDTMFPtr->DeRegisterTelephoneEventDetection(_channel);
1001b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        delete _telephoneEventObserverPtr;
1002b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _telephoneEventObserverPtr = NULL;
1003b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_ON_EVENT_INBAND,_T(""));
1004b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_ON_EVENT_OUT_OF_BAND,_T(""));
1005b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1006b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    OnBnClickedCheckEventDetection();
1007b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1008b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1009b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CTelephonyEvent::OnBnClickedCheckEventDetection()
1010b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1011b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EVENT_DETECTION);
1012b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
1013b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
1014b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1015b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
1016b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1017b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TelephoneEventDetectionMethods method(kInBand);
1018b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_inbandEventDetection && !_outOfBandEventDetection)
1019b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            method = kInBand;
1020b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (!_inbandEventDetection && _outOfBandEventDetection)
1021b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            method = kOutOfBand;
1022b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_inbandEventDetection && _outOfBandEventDetection)
1023b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            method = kInAndOutOfBand;
1024b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1025b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CWnd* wndOut = GetDlgItem(IDC_EDIT_ON_EVENT_OUT_OF_BAND);
1026b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CWnd* wndIn = GetDlgItem(IDC_EDIT_ON_EVENT_INBAND);
1027b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _telephoneEventObserverPtr = new TelephoneEventObserver(wndOut, wndIn);
1028b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1029b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST2(_veDTMFPtr->RegisterTelephoneEventDetection(_channel, method, *_telephoneEventObserverPtr) == 0,
1030b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("RegisterTelephoneEventDetection(channel=%d, detectionMethod=%d)"), _channel, method);
1031b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1032b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
1033b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1034b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST2(_veDTMFPtr->DeRegisterTelephoneEventDetection(_channel) == 0,
1035b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("DeRegisterTelephoneEventDetection(channel=%d)"), _channel);
1036b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        delete _telephoneEventObserverPtr;
1037b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _telephoneEventObserverPtr = NULL;
1038b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_ON_EVENT_INBAND,_T(""));
1039b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_ON_EVENT_OUT_OF_BAND,_T(""));
1040b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1041b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1042b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1043b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ============================================================================
1044b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//                                 CWinTestDlg dialog
1045b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ============================================================================
1046b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1047b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgCWinTestDlg::CWinTestDlg(CWnd* pParent /*=NULL*/)
1048b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    : CDialog(CWinTestDlg::IDD, pParent),
1049b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _failCount(0),
1050b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _vePtr(NULL),
1051b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veBasePtr(NULL),
1052b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veCodecPtr(NULL),
1053b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veNetworkPtr(NULL),
1054b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veFilePtr(NULL),
1055b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veHardwarePtr(NULL),
1056b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veExternalMediaPtr(NULL),
1057b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veApmPtr(NULL),
1058b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veRtpRtcpPtr(NULL),
1059b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _transportPtr(NULL),
1060b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _externalMediaPtr(NULL),
1061b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _externalTransport(false),
1062b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _externalTransportBuild(false),
1063b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkPlayFileIn(0),
1064b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkPlayFileIn1(0),
1065b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkPlayFileIn2(0),
1066b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkPlayFileOut1(0),
1067b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkPlayFileOut2(0),
1068b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkAGC(0),
1069b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkAGC1(0),
1070b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkNS(0),
1071b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkNS1(0),
1072b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkEC(0),
1073b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkVAD1(0),
1074b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkVAD2(0),
1075b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkSrtpTx1(0),
1076b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkSrtpTx2(0),
1077b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkSrtpRx1(0),
1078b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkSrtpRx2(0),
1079b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkConference1(0),
1080b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkConference2(0),
1081b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkOnHold1(0),
1082b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _checkOnHold2(0),
1083b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _strComboIp1(_T("")),
1084b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _strComboIp2(_T("")),
1085b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _delayEstimate1(false),
1086b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _delayEstimate2(false),
1087b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _rxVad(false),
1088b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _nErrorCallbacks(0),
1089b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _timerTicks(0)
1090b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1091b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
1092b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1093b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _vePtr = VoiceEngine::Create();
1094b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1095b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    VoiceEngine::SetTraceFilter(kTraceNone);
1096b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // VoiceEngine::SetTraceFilter(kTraceAll);
1097b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // VoiceEngine::SetTraceFilter(kTraceStream | kTraceStateInfo | kTraceWarning | kTraceError | kTraceCritical | kTraceApiCall | kTraceModuleCall | kTraceMemory | kTraceDebug | kTraceInfo);
1098b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // VoiceEngine::SetTraceFilter(kTraceStateInfo | kTraceWarning | kTraceError | kTraceCritical | kTraceApiCall | kTraceModuleCall | kTraceMemory | kTraceInfo);
1099b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    VoiceEngine::SetTraceFile("ve_win_test.txt");
1101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    VoiceEngine::SetTraceCallback(NULL);
1102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_vePtr)
1104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veExternalMediaPtr = VoEExternalMedia::GetInterface(_vePtr);
1106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veVolumeControlPtr = VoEVolumeControl::GetInterface(_vePtr);
1107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veVideoSyncPtr = VoEVideoSync::GetInterface(_vePtr);
1108b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veNetworkPtr = VoENetwork::GetInterface(_vePtr);
1109b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veFilePtr = VoEFile::GetInterface(_vePtr);
1110b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veApmPtr = VoEAudioProcessing::GetInterface(_vePtr);
1111b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1112b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veBasePtr = VoEBase::GetInterface(_vePtr);
1113b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veCodecPtr = VoECodec::GetInterface(_vePtr);
1114b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veHardwarePtr = VoEHardware::GetInterface(_vePtr);
1115b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veRtpRtcpPtr = VoERTP_RTCP::GetInterface(_vePtr);
1116b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _transportPtr = new MyTransport(_veNetworkPtr);
1117b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _externalMediaPtr = new MediaProcessImpl();
1118b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _connectionObserverPtr = new ConnectionObserver();
1119b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _rxVadObserverPtr = new RxCallback();
1120b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1121b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1122b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veBasePtr->RegisterVoiceEngineObserver(*this);
1123b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1124b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    std::string resource_path = webrtc::test::ProjectRootPath();
1125b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (resource_path == webrtc::test::kCannotFindProjectRootDir) {
1126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _long_audio_file_path = "./";
1127b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    } else {
1128b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _long_audio_file_path = resource_path + "data\\voice_engine\\";
1129b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1130b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1131b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1132b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgCWinTestDlg::~CWinTestDlg()
1133b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1134b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_connectionObserverPtr) delete _connectionObserverPtr;
1135b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_externalMediaPtr) delete _externalMediaPtr;
1136b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_transportPtr) delete _transportPtr;
1137b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_rxVadObserverPtr) delete _rxVadObserverPtr;
1138b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1139b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veExternalMediaPtr) _veExternalMediaPtr->Release();
1140b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veVideoSyncPtr) _veVideoSyncPtr->Release();
1141b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veVolumeControlPtr) _veVolumeControlPtr->Release();
1142b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1143b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veBasePtr) _veBasePtr->Terminate();
1144b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veBasePtr) _veBasePtr->Release();
1145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1146b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veCodecPtr) _veCodecPtr->Release();
1147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veNetworkPtr) _veNetworkPtr->Release();
1148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veFilePtr) _veFilePtr->Release();
1149b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veHardwarePtr) _veHardwarePtr->Release();
1150b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veApmPtr) _veApmPtr->Release();
1151b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veRtpRtcpPtr) _veRtpRtcpPtr->Release();
1152b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_vePtr)
1153b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1154b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        VoiceEngine::Delete(_vePtr);
1155b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1156b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    VoiceEngine::SetTraceFilter(kTraceNone);
1157b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1158b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::DoDataExchange(CDataExchange* pDX)
1160b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1161b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CDialog::DoDataExchange(pDX);
1162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    DDX_CBString(pDX, IDC_COMBO_IP_1, _strComboIp1);
1163b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    DDX_CBString(pDX, IDC_COMBO_IP_2, _strComboIp2);
1164b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1165b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1166b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgBEGIN_MESSAGE_MAP(CWinTestDlg, CDialog)
1167b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_WM_SYSCOMMAND()
1168b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_WM_PAINT()
1169b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_WM_QUERYDRAGICON()
1170b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_WM_TIMER()
1171b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //}}AFX_MSG_MAP
1172b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_CREATE_1, &CWinTestDlg::OnBnClickedButtonCreate1)
1173b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_DELETE_1, &CWinTestDlg::OnBnClickedButtonDelete1)
1174b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_CREATE_2, &CWinTestDlg::OnBnClickedButtonCreate2)
1175b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_DELETE_2, &CWinTestDlg::OnBnClickedButtonDelete2)
1176b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_CBN_SELCHANGE(IDC_COMBO_CODEC_1, &CWinTestDlg::OnCbnSelchangeComboCodec1)
1177b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_START_LISTEN_1, &CWinTestDlg::OnBnClickedButtonStartListen1)
1178b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_STOP_LISTEN_1, &CWinTestDlg::OnBnClickedButtonStopListen1)
1179b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_START_PLAYOUT_1, &CWinTestDlg::OnBnClickedButtonStartPlayout1)
1180b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_STOP_PLAYOUT_1, &CWinTestDlg::OnBnClickedButtonStopPlayout1)
1181b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_START_SEND_1, &CWinTestDlg::OnBnClickedButtonStartSend1)
1182b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_STOP_SEND_1, &CWinTestDlg::OnBnClickedButtonStopSend1)
1183b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_CBN_SELCHANGE(IDC_COMBO_IP_2, &CWinTestDlg::OnCbnSelchangeComboIp2)
1184b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_CBN_SELCHANGE(IDC_COMBO_IP_1, &CWinTestDlg::OnCbnSelchangeComboIp1)
1185b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_CBN_SELCHANGE(IDC_COMBO_CODEC_2, &CWinTestDlg::OnCbnSelchangeComboCodec2)
1186b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_START_LISTEN_2, &CWinTestDlg::OnBnClickedButtonStartListen2)
1187b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_STOP_LISTEN_2, &CWinTestDlg::OnBnClickedButtonStopListen2)
1188b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_START_PLAYOUT_2, &CWinTestDlg::OnBnClickedButtonStartPlayout2)
1189b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_STOP_PLAYOUT_2, &CWinTestDlg::OnBnClickedButtonStopPlayout2)
1190b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_START_SEND_2, &CWinTestDlg::OnBnClickedButtonStartSend2)
1191b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_STOP_SEND_2, &CWinTestDlg::OnBnClickedButtonStopSend2)
1192b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_EXT_TRANS_1, &CWinTestDlg::OnBnClickedCheckExtTrans1)
1193b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_PLAY_FILE_IN_1, &CWinTestDlg::OnBnClickedCheckPlayFileIn1)
1194b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_PLAY_FILE_OUT_1, &CWinTestDlg::OnBnClickedCheckPlayFileOut1)
1195b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_EXT_TRANS_2, &CWinTestDlg::OnBnClickedCheckExtTrans2)
1196b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_PLAY_FILE_IN_2, &CWinTestDlg::OnBnClickedCheckPlayFileIn2)
1197b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_PLAY_FILE_OUT_2, &CWinTestDlg::OnBnClickedCheckPlayFileOut2)
1198b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_PLAY_FILE_IN, &CWinTestDlg::OnBnClickedCheckPlayFileIn)
1199b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_CBN_SELCHANGE(IDC_COMBO_REC_DEVICE, &CWinTestDlg::OnCbnSelchangeComboRecDevice)
1200b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_CBN_SELCHANGE(IDC_COMBO_PLAY_DEVICE, &CWinTestDlg::OnCbnSelchangeComboPlayDevice)
1201b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_EXT_MEDIA_IN_1, &CWinTestDlg::OnBnClickedCheckExtMediaIn1)
1202b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_EXT_MEDIA_OUT_1, &CWinTestDlg::OnBnClickedCheckExtMediaOut1)
1203b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_INPUT_VOLUME, &CWinTestDlg::OnNMReleasedcaptureSliderInputVolume)
1204b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_OUTPUT_VOLUME, &CWinTestDlg::OnNMReleasedcaptureSliderOutputVolume)
1205b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_AGC, &CWinTestDlg::OnBnClickedCheckAgc)
1206b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_NS, &CWinTestDlg::OnBnClickedCheckNs)
1207b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_EC, &CWinTestDlg::OnBnClickedCheckEc)
1208b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_VAD_1, &CWinTestDlg::OnBnClickedCheckVad1)
1209b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_VAD_3, &CWinTestDlg::OnBnClickedCheckVad2)
1210b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_EXT_MEDIA_IN_2, &CWinTestDlg::OnBnClickedCheckExtMediaIn2)
1211b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_EXT_MEDIA_OUT_2, &CWinTestDlg::OnBnClickedCheckExtMediaOut2)
1212b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_MUTE_IN, &CWinTestDlg::OnBnClickedCheckMuteIn)
1213b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_MUTE_IN_1, &CWinTestDlg::OnBnClickedCheckMuteIn1)
1214b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_MUTE_IN_2, &CWinTestDlg::OnBnClickedCheckMuteIn2)
1215b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_SRTP_TX_1, &CWinTestDlg::OnBnClickedCheckSrtpTx1)
1216b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_SRTP_RX_1, &CWinTestDlg::OnBnClickedCheckSrtpRx1)
1217b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_SRTP_TX_2, &CWinTestDlg::OnBnClickedCheckSrtpTx2)
1218b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_SRTP_RX_2, &CWinTestDlg::OnBnClickedCheckSrtpRx2)
1219b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_EXT_ENCRYPTION_1, &CWinTestDlg::OnBnClickedCheckExtEncryption1)
1220b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_EXT_ENCRYPTION_2, &CWinTestDlg::OnBnClickedCheckExtEncryption2)
1221b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_DTMF_1, &CWinTestDlg::OnBnClickedButtonDtmf1)
1222b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_REC_MIC, &CWinTestDlg::OnBnClickedCheckRecMic)
1223b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_DTMF_2, &CWinTestDlg::OnBnClickedButtonDtmf2)
1224b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_TEST_1, &CWinTestDlg::OnBnClickedButtonTest1)
1225b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_CONFERENCE_1, &CWinTestDlg::OnBnClickedCheckConference1)
1226b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_CONFERENCE_2, &CWinTestDlg::OnBnClickedCheckConference2)
1227b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_ON_HOLD_1, &CWinTestDlg::OnBnClickedCheckOnHold1)
1228b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_ON_HOLD_2, &CWinTestDlg::OnBnClickedCheckOnHold2)
1229b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_EXT_MEDIA_IN, &CWinTestDlg::OnBnClickedCheckExtMediaIn)
1230b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_EXT_MEDIA_OUT, &CWinTestDlg::OnBnClickedCheckExtMediaOut)
1231b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_LBN_SELCHANGE(IDC_LIST_CODEC_1, &CWinTestDlg::OnLbnSelchangeListCodec1)
1232b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_PAN_LEFT, &CWinTestDlg::OnNMReleasedcaptureSliderPanLeft)
1233b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_NOTIFY(NM_RELEASEDCAPTURE, IDC_SLIDER_PAN_RIGHT, &CWinTestDlg::OnNMReleasedcaptureSliderPanRight)
1234b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_VERSION, &CWinTestDlg::OnBnClickedButtonVersion)
1235b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_DELAY_ESTIMATE_1, &CWinTestDlg::OnBnClickedCheckDelayEstimate1)
1236b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_RXVAD, &CWinTestDlg::OnBnClickedCheckRxvad)
1237b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_AGC_1, &CWinTestDlg::OnBnClickedCheckAgc1)
1238b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_NS_1, &CWinTestDlg::OnBnClickedCheckNs1)
1239b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_REC_CALL, &CWinTestDlg::OnBnClickedCheckRecCall)
1240b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_CHECK_TYPING_DETECTION, &CWinTestDlg::OnBnClickedCheckTypingDetection)
1241dd671dea7a51c5db5e15123acac599e89f9be201minyue@webrtc.org    ON_BN_CLICKED(IDC_CHECK_RED, &CWinTestDlg::OnBnClickedCheckRED)
1242b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ON_BN_CLICKED(IDC_BUTTON_CLEAR_ERROR_CALLBACK, &CWinTestDlg::OnBnClickedButtonClearErrorCallback)
1243b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgEND_MESSAGE_MAP()
1244b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1245b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgBOOL CWinTestDlg::UpdateTest(bool failed, const CString& strMsg)
1246b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1247b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (failed)
1248b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1249b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_MESSAGE, strMsg);
1250b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _strErr.Format(_T("FAILED (error=%d)"), _veBasePtr->LastError());
1251b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_RESULT, _strErr);
1252b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _failCount++;
1253b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemInt(IDC_EDIT_N_FAILS, _failCount);
1254b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemInt(IDC_EDIT_LAST_ERROR, _veBasePtr->LastError());
1255b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1256b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
1257b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1258b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_MESSAGE, strMsg);
1259b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_RESULT, _T("OK"));
1260b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1261b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return TRUE;
1262b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1263b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1264b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1265b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// CWinTestDlg message handlers
1266b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1267b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgBOOL CWinTestDlg::OnInitDialog()
1268b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1269b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CDialog::OnInitDialog();
1270b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1271b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Add "About..." menu item to system menu.
1272b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1273b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // IDM_ABOUTBOX must be in the system command range.
1274b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
1275b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    ASSERT(IDM_ABOUTBOX < 0xF000);
1276b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1277b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CMenu* pSysMenu = GetSystemMenu(FALSE);
1278b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (pSysMenu != NULL)
1279b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1280b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CString strAboutMenu;
1281b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        strAboutMenu.LoadString(IDS_ABOUTBOX);
1282b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (!strAboutMenu.IsEmpty())
1283b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
1284b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            pSysMenu->AppendMenu(MF_SEPARATOR);
1285b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
1286b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
1287b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1288b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1289b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Set the icon for this dialog.  The framework does this automatically
1290b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    //  when the application's main window is not a dialog
1291b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetIcon(m_hIcon, TRUE);            // Set big icon
1292b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetIcon(m_hIcon, FALSE);        // Set small icon
1293b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1294b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // char version[1024];
1295b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // _veBasePtr->GetVersion(version);
1296b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // AfxMessageBox(version, MB_OK);
1297b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1298b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veBasePtr->Init() != 0)
1299b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1300b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org         AfxMessageBox(_T("Init() failed "), MB_OKCANCEL);
1301b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1302b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1303b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ch = _veBasePtr->CreateChannel();
1304b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veBasePtr->SetSendDestination(ch, 1234, "127.0.0.1") == -1)
1305b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1306b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_veBasePtr->LastError() == VE_EXTERNAL_TRANSPORT_ENABLED)
1307b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
1308b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _strMsg.Format(_T("*** External transport build ***"));
1309b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            SetDlgItemText(IDC_EDIT_MESSAGE, _strMsg);
1310b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _externalTransportBuild = true;
1311b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
1312b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1313b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veBasePtr->DeleteChannel(ch);
1314b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1315b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // --- Add (preferred) local IPv4 address in title
1316b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1317b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veNetworkPtr)
1318b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1319b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        char localIP[64];
1320b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veNetworkPtr->GetLocalIP(localIP);
1321b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CString str;
1322b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetWindowText(str);
1323b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        str.AppendFormat(_T("  [Local IPv4 address: %s]"), CharToTchar(localIP, 64));
1324b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetWindowText(str);
1325b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1326b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1327b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // --- Volume sliders
1328b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1329b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veVolumeControlPtr)
1330b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1331b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        unsigned int volume(0);
1332b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CSliderCtrl* slider(NULL);
1333b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1334b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_INPUT_VOLUME);
1335b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        slider->SetRangeMin(0);
1336b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        slider->SetRangeMax(255);
1337b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veVolumeControlPtr->GetMicVolume(volume);
1338b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        slider->SetPos(volume);
1339b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1340b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_OUTPUT_VOLUME);
1341b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        slider->SetRangeMin(0);
1342b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        slider->SetRangeMax(255);
1343b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veVolumeControlPtr->GetSpeakerVolume(volume);
1344b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        slider->SetPos(volume);
1345b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1346b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1347b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // --- Panning sliders
1348b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1349b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veVolumeControlPtr)
1350b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1351b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        float lVol(0.0);
1352b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        float rVol(0.0);
1353b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        int leftVol, rightVol;
1354b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CSliderCtrl* slider(NULL);
1355b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1356b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veVolumeControlPtr->GetOutputVolumePan(-1, lVol, rVol);
1357b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1358b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        leftVol = (int)(lVol*10.0f);    // [0,10]
1359b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        rightVol = (int)(rVol*10.0f);    // [0,10]
1360b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1361b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_PAN_LEFT);
1362b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        slider->SetRange(0,10);
1363b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        slider->SetPos(10-leftVol);        // pos 0 <=> max pan 1.0 (top of slider)
1364b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1365b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_PAN_RIGHT);
1366b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        slider->SetRange(0,10);
1367b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        slider->SetPos(10-rightVol);
1368b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1369b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1370b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // --- APM settings
1371b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1372b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    bool enable(false);
1373b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button(NULL);
1374b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1375b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    AgcModes agcMode(kAgcDefault);
1376b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veApmPtr->GetAgcStatus(enable, agcMode) == 0)
1377b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1378b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_AGC);
1379b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        enable ? button->SetCheck(BST_CHECKED) : button->SetCheck(BST_UNCHECKED);
1380b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1381b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
1382b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1383b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // AGC is not supported
1384b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_AGC)->EnableWindow(FALSE);
1385b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1386b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1387b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    NsModes nsMode(kNsDefault);
1388b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veApmPtr->GetNsStatus(enable, nsMode) == 0)
1389b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1390b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_NS);
1391b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        enable ? button->SetCheck(BST_CHECKED) : button->SetCheck(BST_UNCHECKED);
1392b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1393b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
1394b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1395b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // NS is not supported
1396b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_NS)->EnableWindow(FALSE);
1397b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1398b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1399b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    EcModes ecMode(kEcDefault);
1400b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veApmPtr->GetEcStatus(enable, ecMode) == 0)
1401b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1402b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_EC);
1403b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        enable ? button->SetCheck(BST_CHECKED) : button->SetCheck(BST_UNCHECKED);
1404b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1405b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
1406b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1407b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // EC is not supported
1408b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EC)->EnableWindow(FALSE);
1409b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1410b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1411b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // --- First channel section
1412b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1413b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_COMBO_IP_1)->EnableWindow(FALSE);
1414b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_EDIT_TX_PORT_1)->EnableWindow(FALSE);
1415b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_EDIT_RX_PORT_1)->EnableWindow(FALSE);
1416b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_COMBO_CODEC_1)->EnableWindow(FALSE);
1417b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_LIST_CODEC_1)->EnableWindow(FALSE);
1418b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_EDIT_CODEC_1)->EnableWindow(FALSE);
1419b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_DELETE_1)->EnableWindow(FALSE);
1420b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_START_LISTEN_1)->EnableWindow(FALSE);
1421b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_STOP_LISTEN_1)->EnableWindow(FALSE);
1422b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_START_PLAYOUT_1)->EnableWindow(FALSE);
1423b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_1)->EnableWindow(FALSE);
1424b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_START_SEND_1)->EnableWindow(FALSE);
1425b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_STOP_SEND_1)->EnableWindow(FALSE);
1426b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_EXT_TRANS_1)->EnableWindow(FALSE);
1427b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_PLAY_FILE_IN_1)->EnableWindow(FALSE);
1428b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_1)->EnableWindow(FALSE);
1429b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_1)->EnableWindow(FALSE);
1430b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_1)->EnableWindow(FALSE);
1431b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_VAD_1)->EnableWindow(FALSE);
1432b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_MUTE_IN_1)->EnableWindow(FALSE);
1433b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_SRTP_TX_1)->EnableWindow(FALSE);
1434b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_SRTP_RX_1)->EnableWindow(FALSE);
1435b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_1)->EnableWindow(FALSE);
1436b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_DTMF_1)->EnableWindow(FALSE);
1437b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_CONFERENCE_1)->EnableWindow(FALSE);
1438b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_ON_HOLD_1)->EnableWindow(FALSE);
1439b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_DELAY_ESTIMATE_1)->EnableWindow(FALSE);
1440b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_RXVAD)->EnableWindow(FALSE);
1441b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_AGC_1)->EnableWindow(FALSE);
1442b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_NS_1)->EnableWindow(FALSE);
1443dd671dea7a51c5db5e15123acac599e89f9be201minyue@webrtc.org    GetDlgItem(IDC_CHECK_RED)->EnableWindow(FALSE);
1444b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1445b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CComboBox* comboIP(NULL);
1446b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboIP = (CComboBox*)GetDlgItem(IDC_COMBO_IP_1);
1447b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboIP->AddString(_T("127.0.0.1"));
1448b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboIP->SetCurSel(0);
1449b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1450b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetDlgItemInt(IDC_EDIT_TX_PORT_1, 1111);
1451b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetDlgItemInt(IDC_EDIT_RX_PORT_1, 1111);
1452b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1453b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // --- Add supported codecs to the codec combo box
1454b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1455b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CComboBox* comboCodec(NULL);
1456b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboCodec = (CComboBox*)GetDlgItem(IDC_COMBO_CODEC_1);
1457b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboCodec->ResetContent();
1458b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1459b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int numCodecs = _veCodecPtr->NumOfCodecs();
1460b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    for (int idx = 0; idx < numCodecs; idx++)
1461b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1462b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CodecInst codec;
1463b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veCodecPtr->GetCodec(idx, codec);
1464b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if ((_stricmp(codec.plname, "CNNB") != 0) &&
1465b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            (_stricmp(codec.plname, "CNWB") != 0))
1466b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
1467b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            CString strCodec;
1468b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            if (_stricmp(codec.plname, "G7221") == 0)
1469b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                strCodec.Format(_T("%s (%d/%d/%d)"), CharToTchar(codec.plname, 32), codec.pltype, codec.plfreq/1000, codec.rate/1000);
1470b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            else
1471b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                strCodec.Format(_T("%s (%d/%d)"), CharToTchar(codec.plname, 32), codec.pltype, codec.plfreq/1000);
1472b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            comboCodec->AddString(strCodec);
1473b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
1474b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (idx == 0)
1475b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
1476b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            SetDlgItemInt(IDC_EDIT_CODEC_1, codec.pltype);
1477b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
1478b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1479b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboCodec->SetCurSel(0);
1480b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1481b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CListBox* list = (CListBox*)GetDlgItem(IDC_LIST_CODEC_1);
1482b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    list->AddString(_T("pltype"));
1483b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    list->AddString(_T("plfreq"));
1484b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    list->AddString(_T("pacsize"));
1485b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    list->AddString(_T("channels"));
1486b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    list->AddString(_T("rate"));
1487b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    list->SetCurSel(0);
1488b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1489b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // --- Add available audio devices to the combo boxes
1490b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1491b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CComboBox* comboRecDevice(NULL);
1492b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CComboBox* comboPlayDevice(NULL);
1493b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboRecDevice = (CComboBox*)GetDlgItem(IDC_COMBO_REC_DEVICE);
1494b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboPlayDevice = (CComboBox*)GetDlgItem(IDC_COMBO_PLAY_DEVICE);
1495b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboRecDevice->ResetContent();
1496b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboPlayDevice->ResetContent();
1497b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1498b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veHardwarePtr)
1499b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1500b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        int numPlayout(0);
1501b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        int numRecording(0);
1502b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        char nameStr[128];
1503b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        char guidStr[128];
1504b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CString strDevice;
1505b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        AudioLayers audioLayer;
1506b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1507b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veHardwarePtr->GetAudioDeviceLayer(audioLayer);
1508b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (kAudioWindowsWave == audioLayer)
1509b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
1510b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            strDevice.FormatMessage(_T("Audio Layer: Windows Wave API"));
1511b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
1512b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (kAudioWindowsCore == audioLayer)
1513b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
1514b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            strDevice.FormatMessage(_T("Audio Layer: Windows Core API"));
1515b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
1516b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else
1517b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
1518b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            strDevice.FormatMessage(_T("Audio Layer: ** UNKNOWN **"));
1519b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
1520b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_AUDIO_LAYER, (LPCTSTR)strDevice);
1521b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1522b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veHardwarePtr->GetNumOfRecordingDevices(numRecording);
1523b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1524b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        for (int idx = 0; idx < numRecording; idx++)
1525b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
1526b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _veHardwarePtr->GetRecordingDeviceName(idx, nameStr, guidStr);
1527b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      strDevice.Format(_T("%s"), CharToTchar(nameStr, 128));
1528b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            comboRecDevice->AddString(strDevice);
1529b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
1530b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // Select default (communication) device in the combo box
1531b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veHardwarePtr->GetRecordingDeviceName(-1, nameStr, guidStr);
1532b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString tmp = CString(nameStr);
1533b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        int nIndex = comboRecDevice->SelectString(-1, tmp);
1534b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        ASSERT(nIndex != CB_ERR);
1535b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1536b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veHardwarePtr->GetNumOfPlayoutDevices(numPlayout);
1537b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1538b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        for (int idx = 0; idx < numPlayout; idx++)
1539b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
1540b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _veHardwarePtr->GetPlayoutDeviceName(idx, nameStr, guidStr);
1541b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      strDevice.Format(_T("%s"), CharToTchar(nameStr, 128));
1542b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            comboPlayDevice->AddString(strDevice);
1543b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
1544b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // Select default (communication) device in the combo box
1545b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veHardwarePtr->GetPlayoutDeviceName(-1, nameStr, guidStr);
1546b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        nIndex = comboPlayDevice->SelectString(-1, CString(nameStr));
1547b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        ASSERT(nIndex != CB_ERR);
1548b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1549b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1550b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // --- Second channel section
1551b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1552b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_COMBO_IP_2)->EnableWindow(FALSE);
1553b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_EDIT_TX_PORT_2)->EnableWindow(FALSE);
1554b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_EDIT_RX_PORT_2)->EnableWindow(FALSE);
1555b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_COMBO_CODEC_2)->EnableWindow(FALSE);
1556b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_DELETE_2)->EnableWindow(FALSE);
1557b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_START_LISTEN_2)->EnableWindow(FALSE);
1558b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_STOP_LISTEN_2)->EnableWindow(FALSE);
1559b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_START_PLAYOUT_2)->EnableWindow(FALSE);
1560b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_2)->EnableWindow(FALSE);
1561b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_START_SEND_2)->EnableWindow(FALSE);
1562b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_STOP_SEND_2)->EnableWindow(FALSE);
1563b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_EXT_TRANS_2)->EnableWindow(FALSE);
1564b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_PLAY_FILE_IN_2)->EnableWindow(FALSE);
1565b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_2)->EnableWindow(FALSE);
1566b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_2)->EnableWindow(FALSE);
1567b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_2)->EnableWindow(FALSE);
1568b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_VAD_3)->EnableWindow(FALSE);
1569b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_MUTE_IN_2)->EnableWindow(FALSE);
1570b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_SRTP_TX_2)->EnableWindow(FALSE);
1571b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_SRTP_RX_2)->EnableWindow(FALSE);
1572b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_2)->EnableWindow(FALSE);
1573b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_BUTTON_DTMF_2)->EnableWindow(FALSE);
1574b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_CONFERENCE_2)->EnableWindow(FALSE);
1575b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    GetDlgItem(IDC_CHECK_ON_HOLD_2)->EnableWindow(FALSE);
1576b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1577b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboIP = (CComboBox*)GetDlgItem(IDC_COMBO_IP_2);
1578b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboIP->AddString(_T("127.0.0.1"));
1579b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboIP->SetCurSel(0);
1580b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1581b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetDlgItemInt(IDC_EDIT_TX_PORT_2, 2222);
1582b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetDlgItemInt(IDC_EDIT_RX_PORT_2, 2222);
1583b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1584b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboCodec = (CComboBox*)GetDlgItem(IDC_COMBO_CODEC_2);
1585b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboCodec->ResetContent();
1586b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1587b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veCodecPtr)
1588b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1589b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        numCodecs = _veCodecPtr->NumOfCodecs();
1590b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        for (int idx = 0; idx < numCodecs; idx++)
1591b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
1592b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            CodecInst codec;
1593b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _veCodecPtr->GetCodec(idx, codec);
1594b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            CString strCodec;
1595b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            strCodec.Format(_T("%s (%d/%d)"), CharToTchar(codec.plname, 32), codec.pltype, codec.plfreq/1000);
1596b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            comboCodec->AddString(strCodec);
1597b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
1598b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        comboCodec->SetCurSel(0);
1599b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1600b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1601b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // --- Start windows timer
1602b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1603b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetTimer(0, 1000, NULL);
1604b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1605b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return TRUE;  // return TRUE  unless you set the focus to a control
1606b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1607b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1608b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
1609b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1610b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
1611b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1612b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CAboutDlg dlgAbout;
1613b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        dlgAbout.DoModal();
1614b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1615b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (nID == SC_CLOSE)
1616b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1617b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        BOOL ret;
1618b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        int channel(0);
1619b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        channel = GetDlgItemInt(IDC_EDIT_1, &ret);
1620b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (ret == TRUE)
1621b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
1622b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _veBasePtr->DeleteChannel(channel);
1623b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
1624b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        channel = GetDlgItemInt(IDC_EDIT_2, &ret);
1625b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (ret == TRUE)
1626b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
1627b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _veBasePtr->DeleteChannel(channel);
1628b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
1629b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1630b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CDialog::OnSysCommand(nID, lParam);
1631b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1632b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
1633b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1634b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CDialog::OnSysCommand(nID, lParam);
1635b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1636b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1637b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1638b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1639b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// If you add a minimize button to your dialog, you will need the code below
1640b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//  to draw the icon.  For MFC applications using the document/view model,
1641b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//  this is automatically done for you by the framework.
1642b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1643b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnPaint()
1644b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1645b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (IsIconic())
1646b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1647b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CPaintDC dc(this); // device context for painting
1648b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1649b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
1650b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1651b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // Center icon in client rectangle
1652b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        int cxIcon = GetSystemMetrics(SM_CXICON);
1653b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        int cyIcon = GetSystemMetrics(SM_CYICON);
1654b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CRect rect;
1655b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetClientRect(&rect);
1656b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        int x = (rect.Width() - cxIcon + 1) / 2;
1657b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        int y = (rect.Height() - cyIcon + 1) / 2;
1658b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1659b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // Draw the icon
1660b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        dc.DrawIcon(x, y, m_hIcon);
1661b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1662b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
1663b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1664b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CDialog::OnPaint();
1665b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1666b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1667b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1668b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// The system calls this function to obtain the cursor to display while the user drags
1669b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//  the minimized window.
1670b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgHCURSOR CWinTestDlg::OnQueryDragIcon()
1671b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1672b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    return static_cast<HCURSOR>(m_hIcon);
1673b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1674b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1675b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1676b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonCreate1()
1677b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1678b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel(0);
1679b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((channel = _veBasePtr->CreateChannel()) >= 0, _T("CreateChannel(channel=%d)"), channel);
1680b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (channel >= 0)
1681b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1682b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veRtpRtcpPtr->RegisterRTPObserver(channel, *this);
1683b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1684b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemInt(IDC_EDIT_1, channel);
1685b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_CREATE_1)->EnableWindow(FALSE);
1686b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_DELETE_1)->EnableWindow(TRUE);
1687b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_COMBO_IP_1)->EnableWindow(TRUE);
1688b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_EDIT_TX_PORT_1)->EnableWindow(TRUE);
1689b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_EDIT_RX_PORT_1)->EnableWindow(TRUE);
1690b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_COMBO_CODEC_1)->EnableWindow(TRUE);
1691b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_LIST_CODEC_1)->EnableWindow(TRUE);
1692b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_EDIT_CODEC_1)->EnableWindow(TRUE);
1693b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_LISTEN_1)->EnableWindow(TRUE);
1694b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_PLAYOUT_1)->EnableWindow(TRUE);
1695b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_SEND_1)->EnableWindow(TRUE);
1696b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_TRANS_1)->EnableWindow(TRUE);
1697b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_PLAY_FILE_IN_1)->EnableWindow(TRUE);
1698b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_1)->EnableWindow(TRUE);
1699b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_1)->EnableWindow(TRUE);
1700b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_1)->EnableWindow(TRUE);
1701b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_VAD_1)->EnableWindow(TRUE);
1702b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_MUTE_IN_1)->EnableWindow(TRUE);
1703b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_SRTP_TX_1)->EnableWindow(TRUE);
1704b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_SRTP_RX_1)->EnableWindow(TRUE);
1705b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_1)->EnableWindow(TRUE);
1706b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_DTMF_1)->EnableWindow(TRUE);
1707b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_ON_HOLD_1)->EnableWindow(TRUE);
1708b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_DELAY_ESTIMATE_1)->EnableWindow(TRUE);
1709b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_RXVAD)->EnableWindow(TRUE);
1710b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_AGC_1)->EnableWindow(TRUE);
1711b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_NS_1)->EnableWindow(TRUE);
1712dd671dea7a51c5db5e15123acac599e89f9be201minyue@webrtc.org        GetDlgItem(IDC_CHECK_RED)->EnableWindow(TRUE);
1713b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1714b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // Always set send codec to default codec <=> index 0.
1715b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CodecInst codec;
1716b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veCodecPtr->GetCodec(0, codec);
1717b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veCodecPtr->SetSendCodec(channel, codec);
1718b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1719b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1720b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1721b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonCreate2()
1722b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1723b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel(0);
1724b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((channel = _veBasePtr->CreateChannel()) >=0 , _T("CreateChannel(%d)"), channel);
1725b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (channel >= 0)
1726b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1727b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veRtpRtcpPtr->RegisterRTPObserver(channel, *this);
1728b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1729b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemInt(IDC_EDIT_2, channel);
1730b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_CREATE_2)->EnableWindow(FALSE);
1731b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_DELETE_2)->EnableWindow(TRUE);
1732b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_COMBO_IP_2)->EnableWindow(TRUE);
1733b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_EDIT_TX_PORT_2)->EnableWindow(TRUE);
1734b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_EDIT_RX_PORT_2)->EnableWindow(TRUE);
1735b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_COMBO_CODEC_2)->EnableWindow(TRUE);
1736b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_LISTEN_2)->EnableWindow(TRUE);
1737b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_PLAYOUT_2)->EnableWindow(TRUE);
1738b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_SEND_2)->EnableWindow(TRUE);
1739b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_TRANS_2)->EnableWindow(TRUE);
1740b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_PLAY_FILE_IN_2)->EnableWindow(TRUE);
1741b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_2)->EnableWindow(TRUE);
1742b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_2)->EnableWindow(TRUE);
1743b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_2)->EnableWindow(TRUE);
1744b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_VAD_3)->EnableWindow(TRUE);
1745b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_MUTE_IN_2)->EnableWindow(TRUE);
1746b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_SRTP_TX_2)->EnableWindow(TRUE);
1747b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_SRTP_RX_2)->EnableWindow(TRUE);
1748b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_2)->EnableWindow(TRUE);
1749b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_DTMF_2)->EnableWindow(TRUE);
1750b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_CONFERENCE_2)->EnableWindow(TRUE);
1751b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_ON_HOLD_2)->EnableWindow(TRUE);
1752b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1753b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // Always set send codec to default codec <=> index 0.
1754b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CodecInst codec;
1755b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veCodecPtr->GetCodec(0, codec);
1756b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veCodecPtr->SetSendCodec(channel, codec);
1757b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1758b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1759b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1760b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonDelete1()
1761b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1762b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    BOOL ret;
1763b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1, &ret);
1764b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == TRUE)
1765b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1766b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _delayEstimate1 = false;
1767b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _rxVad = false;
1768b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veRtpRtcpPtr->DeRegisterRTPObserver(channel);
1769b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veBasePtr->DeleteChannel(channel) == 0, _T("DeleteChannel(channel=%d)"), channel);
1770b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_1, _T(""));
1771b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_CREATE_1)->EnableWindow(TRUE);
1772b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_DELETE_1)->EnableWindow(FALSE);
1773b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_COMBO_IP_1)->EnableWindow(FALSE);
1774b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_EDIT_TX_PORT_1)->EnableWindow(FALSE);
1775b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_EDIT_RX_PORT_1)->EnableWindow(FALSE);
1776b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_COMBO_CODEC_1)->EnableWindow(FALSE);
1777b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_LIST_CODEC_1)->EnableWindow(FALSE);
1778b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_EDIT_CODEC_1)->EnableWindow(FALSE);
1779b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_LISTEN_1)->EnableWindow(FALSE);
1780b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_PLAYOUT_1)->EnableWindow(FALSE);
1781b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_SEND_1)->EnableWindow(FALSE);
1782b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_LISTEN_1)->EnableWindow(FALSE);
1783b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_1)->EnableWindow(FALSE);
1784b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_SEND_1)->EnableWindow(FALSE);
1785b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_DTMF_1)->EnableWindow(FALSE);
1786b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_TRANS_1)->EnableWindow(FALSE);
1787b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_PLAY_FILE_IN_1)->EnableWindow(FALSE);
1788b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_1)->EnableWindow(FALSE);
1789b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_1)->EnableWindow(FALSE);
1790b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_1)->EnableWindow(FALSE);
1791b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_VAD_1)->EnableWindow(FALSE);
1792b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_MUTE_IN_1)->EnableWindow(FALSE);
1793b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_SRTP_TX_1)->EnableWindow(FALSE);
1794b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_SRTP_RX_1)->EnableWindow(FALSE);
1795b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_1)->EnableWindow(FALSE);
1796b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_CONFERENCE_1)->EnableWindow(FALSE);
1797b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_ON_HOLD_1)->EnableWindow(FALSE);
1798b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_DELAY_ESTIMATE_1)->EnableWindow(FALSE);
1799b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_AGC_1)->EnableWindow(FALSE);
1800b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_NS_1)->EnableWindow(FALSE);
1801b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_RXVAD)->EnableWindow(FALSE);
1802dd671dea7a51c5db5e15123acac599e89f9be201minyue@webrtc.org        GetDlgItem(IDC_CHECK_RED)->EnableWindow(FALSE);
1803b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_RXVAD, _T(""));
1804b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_EDIT_RXVAD)->EnableWindow(FALSE);
1805b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EXT_TRANS_1);
1806b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1807b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_IN_1);
1808b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1809b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_1);
1810b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1811b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_1);
1812b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1813b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_1);
1814b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1815b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_VAD_1);
1816b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1817b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_MUTE_IN_1);
1818b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1819b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_SRTP_TX_1);
1820b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1821b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_SRTP_RX_1);
1822b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1823b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_1);
1824b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1825b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_CONFERENCE_1);
1826b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1827b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_ON_HOLD_1);
1828b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1829b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_DELAY_ESTIMATE_1);
1830b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1831b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_AGC_1);
1832b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1833b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_NS_1);
1834b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1835b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_RXVAD);
1836b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1837dd671dea7a51c5db5e15123acac599e89f9be201minyue@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_RED);
1838b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1839b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1840b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1841b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1842b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonDelete2()
1843b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1844b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    BOOL ret;
1845b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2, &ret);
1846b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == TRUE)
1847b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1848b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _delayEstimate2 = false;
1849b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veRtpRtcpPtr->DeRegisterRTPObserver(channel);
1850b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veBasePtr->DeleteChannel(channel) == 0, _T("DeleteChannel(%d)"), channel);
1851b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_2, _T(""));
1852b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_CREATE_2)->EnableWindow(TRUE);
1853b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_DELETE_2)->EnableWindow(FALSE);
1854b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_COMBO_IP_2)->EnableWindow(FALSE);
1855b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_EDIT_TX_PORT_2)->EnableWindow(FALSE);
1856b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_EDIT_RX_PORT_2)->EnableWindow(FALSE);
1857b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_COMBO_CODEC_2)->EnableWindow(FALSE);
1858b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_LISTEN_2)->EnableWindow(FALSE);
1859b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_PLAYOUT_2)->EnableWindow(FALSE);
1860b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_SEND_2)->EnableWindow(FALSE);
1861b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_LISTEN_2)->EnableWindow(FALSE);
1862b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_2)->EnableWindow(FALSE);
1863b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_SEND_2)->EnableWindow(FALSE);
1864b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_TRANS_2)->EnableWindow(FALSE);
1865b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_PLAY_FILE_IN_2)->EnableWindow(FALSE);
1866b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_2)->EnableWindow(FALSE);
1867b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_2)->EnableWindow(FALSE);
1868b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_2)->EnableWindow(FALSE);
1869b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_MUTE_IN_2)->EnableWindow(FALSE);
1870b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_VAD_3)->EnableWindow(FALSE);
1871b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_SRTP_TX_2)->EnableWindow(FALSE);
1872b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_SRTP_RX_2)->EnableWindow(FALSE);
1873b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_2)->EnableWindow(FALSE);
1874b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_CONFERENCE_2)->EnableWindow(FALSE);
1875b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_DTMF_2)->EnableWindow(FALSE);
1876b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_CHECK_ON_HOLD_2)->EnableWindow(FALSE);
1877b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EXT_TRANS_2);
1878b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1879b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_IN_2);
1880b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1881b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_2);
1882b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1883b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_2);
1884b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1885b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_2);
1886b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1887b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_VAD_3);
1888b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1889b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_MUTE_IN_2);
1890b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1891b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_SRTP_TX_2);
1892b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1893b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_SRTP_RX_2);
1894b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1895b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_EXT_ENCRYPTION_2);
1896b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1897b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_CONFERENCE_2);
1898b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1899b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button = (CButton*)GetDlgItem(IDC_CHECK_ON_HOLD_2);
1900b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck(BST_UNCHECKED);
1901b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1902b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1903b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1904b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnCbnSelchangeComboIp1()
1905b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1906b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
1907b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString str;
1908b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int port = GetDlgItemInt(IDC_EDIT_TX_PORT_1);
1909b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CComboBox* comboIP = (CComboBox*)GetDlgItem(IDC_COMBO_IP_1);
1910b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int n = comboIP->GetLBTextLen(0);
1911b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboIP->GetLBText(0, str.GetBuffer(n));
1912b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veBasePtr->SetSendDestination(channel, port, TcharToChar(str.GetBuffer(n), -1)) == 0,
1913b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetSendDestination(channel=%d, port=%d, ip=%s)"), channel, port, str.GetBuffer(n));
1914b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    str.ReleaseBuffer();
1915b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1916b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1917b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnCbnSelchangeComboIp2()
1918b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1919b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
1920b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString str;
1921b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int port = GetDlgItemInt(IDC_EDIT_TX_PORT_2);
1922b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CComboBox* comboIP = (CComboBox*)GetDlgItem(IDC_COMBO_IP_2);
1923b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int n = comboIP->GetLBTextLen(0);
1924b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboIP->GetLBText(0, str.GetBuffer(n));
1925b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veBasePtr->SetSendDestination(channel, port, TcharToChar(str.GetBuffer(n), -1)) == 0,
1926b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetSendDestination(channel=%d, port=%d, ip=%s)"), channel, port, str.GetBuffer(n));
1927b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    str.ReleaseBuffer();
1928b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1929b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1930b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnCbnSelchangeComboCodec1()
1931b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1932b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
1933b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1934b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CodecInst codec;
1935b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CComboBox* comboCodec(NULL);
1936b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboCodec = (CComboBox*)GetDlgItem(IDC_COMBO_CODEC_1);
1937b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int index = comboCodec->GetCurSel();
1938b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veCodecPtr->GetCodec(index, codec);
1939b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (strncmp(codec.plname, "ISAC", 4) == 0)
1940b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1941b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // Set iSAC to adaptive mode by default.
1942b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        codec.rate = -1;
1943b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1944b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veCodecPtr->SetSendCodec(channel, codec) == 0,
1945b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetSendCodec(channel=%d, plname=%s, pltype=%d, plfreq=%d, rate=%d, pacsize=%d, channels=%d)"),
1946b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        channel, CharToTchar(codec.plname, 32), codec.pltype, codec.plfreq, codec.rate, codec.pacsize, codec.channels);
1947b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1948b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CListBox* list = (CListBox*)GetDlgItem(IDC_LIST_CODEC_1);
1949b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    list->SetCurSel(0);
1950b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetDlgItemInt(IDC_EDIT_CODEC_1, codec.pltype);
1951b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1952b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1953b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnLbnSelchangeListCodec1()
1954b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1955b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
1956b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1957b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CListBox* list = (CListBox*)GetDlgItem(IDC_LIST_CODEC_1);
1958b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int listIdx = list->GetCurSel();
1959b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (listIdx < 0)
1960b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        return;
1961b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString str;
1962b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    list->GetText(listIdx, str);
1963b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1964b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CodecInst codec;
1965b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veCodecPtr->GetSendCodec(channel, codec);
1966b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1967b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int value = GetDlgItemInt(IDC_EDIT_CODEC_1);
1968b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (str == _T("pltype"))
1969b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1970b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        codec.pltype = value;
1971b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1972b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (str == _T("plfreq"))
1973b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1974b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        codec.plfreq = value;
1975b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1976b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (str == _T("pacsize"))
1977b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1978b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        codec.pacsize = value;
1979b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1980b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (str == _T("channels"))
1981b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1982b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        codec.channels = value;
1983b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1984b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else if (str == _T("rate"))
1985b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
1986b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        codec.rate = value;
1987b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
1988b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veCodecPtr->SetSendCodec(channel, codec) == 0,
1989b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetSendCodec(channel=%d, plname=%s, pltype=%d, plfreq=%d, rate=%d, pacsize=%d, channels=%d)"),
1990b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        channel, CharToTchar(codec.plname, 32), codec.pltype, codec.plfreq, codec.rate, codec.pacsize, codec.channels);
1991b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
1992b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1993b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnCbnSelchangeComboCodec2()
1994b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
1995b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
1996b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
1997b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CodecInst codec;
1998b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CComboBox* comboCodec(NULL);
1999b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboCodec = (CComboBox*)GetDlgItem(IDC_COMBO_CODEC_2);
2000b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int index = comboCodec->GetCurSel();
2001b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veCodecPtr->GetCodec(index, codec);
2002b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veCodecPtr->SetSendCodec(channel, codec) == 0,
2003b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetSendCodec(channel=%d, plname=%s, pltype=%d, plfreq=%d, rate=%d, pacsize=%d, channels=%d)"),
2004b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        channel, CharToTchar(codec.plname, 32), codec.pltype, codec.plfreq, codec.rate, codec.pacsize, codec.channels);
2005b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2006b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2007b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonStartListen1()
2008b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2009b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret1(0);
2010b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret2(0);
2011b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2012b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int port = GetDlgItemInt(IDC_EDIT_RX_PORT_1);
2013b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((ret1 = _veBasePtr->SetLocalReceiver(channel, port)) == 0, _T("SetLocalReceiver(channel=%d, port=%d)"), channel, port);
2014b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((ret2 = _veBasePtr->StartReceive(channel)) == 0, _T("StartReceive(channel=%d)"), channel);
2015b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret1 == 0 && ret2 == 0)
2016b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2017b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_LISTEN_1)->EnableWindow(FALSE);
2018b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_LISTEN_1)->EnableWindow(TRUE);
2019b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2020b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2021b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2022b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonStartListen2()
2023b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2024b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret1(0);
2025b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret2(0);
2026b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2027b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int port = GetDlgItemInt(IDC_EDIT_RX_PORT_2);
2028b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((ret1 = _veBasePtr->SetLocalReceiver(channel, port)) == 0, _T("SetLocalReceiver(channel=%d, port=%d)"), channel, port);
2029b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((ret2 = _veBasePtr->StartReceive(channel)) == 0, _T("StartReceive(channel=%d)"), channel);
2030b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret1 == 0 && ret2 == 0)
2031b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2032b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_LISTEN_2)->EnableWindow(FALSE);
2033b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_LISTEN_2)->EnableWindow(TRUE);
2034b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2035b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2036b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2037b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonStopListen1()
2038b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2039b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2040b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2041b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((ret = _veBasePtr->StopReceive(channel)) == 0, _T("StopListen(channel=%d)"), channel);
2042b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == 0)
2043b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2044b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_LISTEN_1)->EnableWindow(TRUE);
2045b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_LISTEN_1)->EnableWindow(FALSE);
2046b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2047b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2048b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2049b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonStopListen2()
2050b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2051b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2052b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2053b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((ret = _veBasePtr->StopReceive(channel)) == 0, _T("StopListen(channel=%d)"), channel);
2054b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == 0)
2055b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2056b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_LISTEN_2)->EnableWindow(TRUE);
2057b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_LISTEN_2)->EnableWindow(FALSE);
2058b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2059b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2060b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2061b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonStartPlayout1()
2062b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2063b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2064b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2065b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((ret = _veBasePtr->StartPlayout(channel)) == 0, _T("StartPlayout(channel=%d)"), channel);
2066b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == 0)
2067b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2068b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_PLAYOUT_1)->EnableWindow(FALSE);
2069b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_1)->EnableWindow(TRUE);
2070b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2071b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2072b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2073b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonStartPlayout2()
2074b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2075b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2076b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2077b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((ret = _veBasePtr->StartPlayout(channel)) == 0, _T("StartPlayout(channel=%d)"), channel);
2078b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == 0)
2079b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2080b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_PLAYOUT_2)->EnableWindow(FALSE);
2081b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_2)->EnableWindow(TRUE);
2082b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2083b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2084b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2085b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonStopPlayout1()
2086b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2087b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2088b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2089b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((ret = _veBasePtr->StopPlayout(channel)) == 0, _T("StopPlayout(channel=%d)"), channel);
2090b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == 0)
2091b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2092b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_PLAYOUT_1)->EnableWindow(TRUE);
2093b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_1)->EnableWindow(FALSE);
2094b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2095b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2096b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2097b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonStopPlayout2()
2098b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2099b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((ret = _veBasePtr->StopPlayout(channel)) == 0, _T("StopPlayout(channel=%d)"));
2102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == 0)
2103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_PLAYOUT_2)->EnableWindow(TRUE);
2105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_PLAYOUT_2)->EnableWindow(FALSE);
2106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2108b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2109b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonStartSend1()
2110b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2111b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    UpdateData(TRUE);  // update IP address
2112b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2113b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2114b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2115b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (!_externalTransport)
2116b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2117b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CString str;
2118b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        int port = GetDlgItemInt(IDC_EDIT_TX_PORT_1);
2119b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veBasePtr->SetSendDestination(channel, port, TcharToChar(_strComboIp1.GetBuffer(7), -1)) == 0,
2120b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org      _T("SetSendDestination(channel=%d, port=%d, ip=%s)"), channel, port, _strComboIp1.GetBuffer(7));
2121b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        str.ReleaseBuffer();
2122b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2123b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2124b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org	//_veVideoSyncPtr->SetInitTimestamp(0,0);
2125b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // OnCbnSelchangeComboCodec1();
2126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2127b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((ret = _veBasePtr->StartSend(channel)) == 0, _T("StartSend(channel=%d)"), channel);
2128b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == 0)
2129b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2130b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_SEND_1)->EnableWindow(FALSE);
2131b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_SEND_1)->EnableWindow(TRUE);
2132b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2133b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2134b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2135b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonStartSend2()
2136b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2137b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    UpdateData(TRUE);  // update IP address
2138b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2139b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2140b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2141b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (!_externalTransport)
2142b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2143b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CString str;
2144b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        int port = GetDlgItemInt(IDC_EDIT_TX_PORT_2);
2145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veBasePtr->SetSendDestination(channel, port, TcharToChar(_strComboIp2.GetBuffer(7), -1)) == 0,
2146b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("SetSendDestination(channel=%d, port=%d, ip=%s)"), channel, port, _strComboIp2.GetBuffer(7));
2147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        str.ReleaseBuffer();
2148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2149b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2150b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // OnCbnSelchangeComboCodec2();
2151b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2152b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((ret = _veBasePtr->StartSend(channel)) == 0, _T("StartSend(channel=%d)"), channel);
2153b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == 0)
2154b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2155b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_SEND_2)->EnableWindow(FALSE);
2156b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_SEND_2)->EnableWindow(TRUE);
2157b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2158b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2160b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonStopSend1()
2161b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2163b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2164b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((ret = _veBasePtr->StopSend(channel)) == 0, _T("StopSend(channel=%d)"), channel);
2165b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == 0)
2166b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2167b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_SEND_1)->EnableWindow(TRUE);
2168b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_SEND_1)->EnableWindow(FALSE);
2169b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2170b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2171b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2172b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonStopSend2()
2173b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2174b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2175b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2176b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST((ret = _veBasePtr->StopSend(channel)) == 0, _T("StopSend(channel=%d)"), channel);
2177b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == 0)
2178b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2179b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_START_SEND_2)->EnableWindow(TRUE);
2180b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        GetDlgItem(IDC_BUTTON_STOP_SEND_2)->EnableWindow(FALSE);
2181b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2182b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2183b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2184b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckExtTrans1()
2185b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2186b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2187b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2188b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EXT_TRANS_1);
2189b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
2190b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2191b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2192b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2193b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veNetworkPtr->RegisterExternalTransport(channel, *_transportPtr)) == 0,
2194b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("RegisterExternalTransport(channel=%d, transport=0x%x)"), channel, _transportPtr);
2195b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2196b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2197b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2198b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veNetworkPtr->DeRegisterExternalTransport(channel)) == 0,
2199b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("DeRegisterExternalTransport(channel=%d)"), channel);
2200b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2201b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == 0)
2202b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2203b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _externalTransport = enable;
2204b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2205b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2206b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2207b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // restore inital state since API call failed
2208b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED);
2209b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2210b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2211b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2212b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckExtTrans2()
2213b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2214b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2215b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2216b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EXT_TRANS_2);
2217b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
2218b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2219b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2220b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2221b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veNetworkPtr->RegisterExternalTransport(channel, *_transportPtr)) == 0,
2222b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("RegisterExternalTransport(channel=%d, transport=0x%x)"), channel, _transportPtr);
2223b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2224b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2225b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2226b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veNetworkPtr->DeRegisterExternalTransport(channel)) == 0,
2227b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("DeRegisterExternalTransport(channel=%d)"), channel);
2228b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2229b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == 0)
2230b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2231b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _externalTransport = enable;
2232b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2233b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2234b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2235b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // restore inital state since API call failed
2236b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED);
2237b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2238b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2239b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2240b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckPlayFileIn1()
2241b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2242b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    std::string micFile = _long_audio_file_path + "audio_short16.pcm";
2243b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2244b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2245b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2246b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_IN_1);
2247b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
2248b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2249b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2250b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2251b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        bool mix;
2252b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const bool loop(true);
2253b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const FileFormats format = kFileFormatPcm16kHzFile;
2254b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const float scale(1.0);
2255b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2256b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        (_checkPlayFileIn1 %2 == 0) ? mix = true : mix = false;
2257b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veFilePtr->StartPlayingFileAsMicrophone(channel,
2258b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            micFile.c_str(), loop, mix, format, scale) == 0),
2259b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("StartPlayingFileAsMicrophone(channel=%d, file=%s, loop=%d, ")
2260b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("mix=%d, format=%d, scale=%2.1f)"),
2261b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            channel, CharToTchar(micFile.c_str(), -1),
2262b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            loop, mix, format, scale);
2263b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _checkPlayFileIn1++;
2264b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2265b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2266b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2267b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veFilePtr->StopPlayingFileAsMicrophone(channel) == 0),
2268b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("StopPlayingFileAsMicrophone(channel=%d)"), channel);
2269b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2270b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == -1)
2271b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2272b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // restore inital state since API call failed
2273b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED);
2274b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2275b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2276b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2277b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckPlayFileIn2()
2278b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2279b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    std::string micFile = _long_audio_file_path + "audio_long16.pcm";
2280b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2281b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2282b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2283b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_IN_2);
2284b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
2285b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2286b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2287b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2288b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        bool mix;
2289b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const bool loop(true);
2290b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const FileFormats format = kFileFormatPcm16kHzFile;
2291b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const float scale(1.0);
2292b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2293b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        (_checkPlayFileIn2 %2 == 0) ? mix = true : mix = false;
2294b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veFilePtr->StartPlayingFileAsMicrophone(channel,
2295b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            micFile.c_str(), loop, mix, format, scale) == 0),
2296b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("StartPlayingFileAsMicrophone(channel=%d, file=%s, loop=%d, ")
2297b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("mix=%d, format=%d, scale=%2.1f)"),
2298b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            channel, CharToTchar(micFile.c_str(), -1),
2299b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            loop, mix, format, scale);
2300b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _checkPlayFileIn2++;
2301b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2302b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2303b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2304b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veFilePtr->StopPlayingFileAsMicrophone(channel) == 0),
2305b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("StopPlayingFileAsMicrophone(channel=%d)"), channel);
2306b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2307b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == -1)
2308b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2309b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // restore inital state since API call failed
2310b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED);
2311b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2312b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2313b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2314b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckPlayFileOut1()
2315b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2316b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const FileFormats formats[8]  = {{kFileFormatPcm16kHzFile},
2317b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                          {kFileFormatWavFile},
2318b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                          {kFileFormatWavFile},
2319b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                          {kFileFormatWavFile},
2320b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                          {kFileFormatWavFile},
2321b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                          {kFileFormatWavFile},
2322b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                          {kFileFormatWavFile},
2323b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                          {kFileFormatWavFile}};
2324b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // File path is relative to the location of 'voice_engine.gyp'.
2325b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const char spkrFiles[8][64] = {{"audio_short16.pcm"},
2326b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                   {"audio_tiny8.wav"},
2327b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                   {"audio_tiny11.wav"},
2328b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                   {"audio_tiny16.wav"},
2329b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                   {"audio_tiny22.wav"},
2330b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                   {"audio_tiny32.wav"},
2331b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                   {"audio_tiny44.wav"},
2332b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                                   {"audio_tiny48.wav"}};
2333b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2334b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2335b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_1);
2336b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
2337b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2338b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2339b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2340b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const bool loop(true);
2341b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const float volumeScaling(1.0);
2342b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const int startPointMs(0);
2343b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const int stopPointMs(0);
2344b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const FileFormats format = formats[_checkPlayFileOut1 % 8];
2345b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        std::string spkrFile = _long_audio_file_path +
2346b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                               spkrFiles[_checkPlayFileOut1 % 8];
2347b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2348b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CString str;
2349b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_checkPlayFileOut1 % 8 == 0)
2350b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2351b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kFileFormatPcm16kHzFile");
2352b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2353b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else
2354b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2355b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kFileFormatWavFile");
2356b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2357b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // (_checkPlayFileOut1 %2 == 0) ? mix = true : mix = false;
2358b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veFilePtr->StartPlayingFileLocally(channel,
2359b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            spkrFile.c_str(), loop, format, volumeScaling,
2360b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            startPointMs,stopPointMs) == 0),
2361b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("StartPlayingFileLocally(channel=%d, file=%s, loop=%d, ")
2362b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("format=%s, scale=%2.1f, start=%d, stop=%d)"),
2363b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            channel, CharToTchar(spkrFile.c_str(), -1),
2364b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            loop, str, volumeScaling, startPointMs, stopPointMs);
2365b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _checkPlayFileOut1++;
2366b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2367b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2368b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2369b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veFilePtr->StopPlayingFileLocally(channel) == 0),
2370b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("StopPlayingFileLocally(channel=%d)"), channel);
2371b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2372b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == -1)
2373b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2374b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // restore inital state since API call failed
2375b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED);
2376b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2377b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2378b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2379b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckPlayFileOut2()
2380b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2381b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    std::string spkrFile = _long_audio_file_path + "audio_long16.pcm";
2382b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2383b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2384b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2385b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_OUT_2);
2386b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
2387b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2388b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2389b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2390b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const bool loop(true);
2391b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const FileFormats format = kFileFormatPcm16kHzFile;
2392b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const float volumeScaling(1.0);
2393b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const int startPointMs(0);
2394b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const int stopPointMs(0);
2395b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2396b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // (_checkPlayFileOut2 %2 == 0) ? mix = true : mix = false;
2397b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veFilePtr->StartPlayingFileLocally(channel,
2398b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            spkrFile.c_str(), loop, format, volumeScaling,
2399b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            startPointMs,stopPointMs) == 0),
2400b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("StartPlayingFileLocally(channel=%d, file=%s, loop=%d, ")
2401b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("format=%d, scale=%2.1f, start=%d, stop=%d)"),
2402b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            channel, CharToTchar(spkrFile.c_str(), -1),
2403b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            loop, format, volumeScaling, startPointMs, stopPointMs);
2404b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // _checkPlayFileIn2++;
2405b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2406b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2407b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2408b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veFilePtr->StopPlayingFileLocally(channel) == 0),
2409b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("StopPlayingFileLocally(channel=%d)"), channel);
2410b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2411b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == -1)
2412b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2413b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // restore inital state since API call failed
2414b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED);
2415b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2416b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2417b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2418b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckExtMediaIn1()
2419b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2420b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2421b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* buttonExtTrans = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_1);
2422b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = buttonExtTrans->GetCheck();
2423b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2424b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2425b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2426b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veExternalMediaPtr->RegisterExternalMediaProcessing(channel, kRecordingPerChannel, *_externalMediaPtr) == 0,
2427b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("RegisterExternalMediaProcessing(channel=%d, kRecordingPerChannel, processObject=0x%x)"), channel, _externalMediaPtr);
2428b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2429b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2430b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2431b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veExternalMediaPtr->DeRegisterExternalMediaProcessing(channel, kRecordingPerChannel) == 0,
2432b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("DeRegisterExternalMediaProcessing(channel=%d, kRecordingPerChannel)"), channel);
2433b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2434b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2435b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2436b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckExtMediaIn2()
2437b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2438b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2439b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* buttonExtTrans = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_IN_2);
2440b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = buttonExtTrans->GetCheck();
2441b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2442b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2443b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2444b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veExternalMediaPtr->RegisterExternalMediaProcessing(channel, kRecordingPerChannel, *_externalMediaPtr) == 0,
2445b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("RegisterExternalMediaProcessing(channel=%d, kRecordingPerChannel, processObject=0x%x)"), channel, _externalMediaPtr);
2446b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2447b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2448b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2449b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veExternalMediaPtr->DeRegisterExternalMediaProcessing(channel, kRecordingPerChannel) == 0,
2450b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("DeRegisterExternalMediaProcessing(channel=%d, kRecordingPerChannel)"), channel);
2451b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2452b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2453b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2454b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckExtMediaOut1()
2455b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2456b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2457b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* buttonExtTrans = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_1);
2458b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = buttonExtTrans->GetCheck();
2459b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2460b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2461b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2462b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veExternalMediaPtr->RegisterExternalMediaProcessing(channel, kPlaybackPerChannel, *_externalMediaPtr) == 0,
2463b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("RegisterExternalMediaProcessing(channel=%d, kPlaybackPerChannel, processObject=0x%x)"), channel, _externalMediaPtr);
2464b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2465b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2466b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2467b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veExternalMediaPtr->DeRegisterExternalMediaProcessing(channel, kPlaybackPerChannel) == 0,
2468b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("DeRegisterExternalMediaProcessing(channel=%d, kPlaybackPerChannel)"), channel);
2469b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2470b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2471b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2472b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckExtMediaOut2()
2473b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2474b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2475b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* buttonExtTrans = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT_2);
2476b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = buttonExtTrans->GetCheck();
2477b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2478b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2479b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2480b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veExternalMediaPtr->RegisterExternalMediaProcessing(channel, kPlaybackPerChannel, *_externalMediaPtr) == 0,
2481b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("RegisterExternalMediaProcessing(channel=%d, kPlaybackPerChannel, processObject=0x%x)"), channel, _externalMediaPtr);
2482b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2483b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2484b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2485b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veExternalMediaPtr->DeRegisterExternalMediaProcessing(channel, kPlaybackPerChannel) == 0,
2486b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("DeRegisterExternalMediaProcessing(channel=%d, kPlaybackPerChannel)"), channel);
2487b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2488b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2489b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2490b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckVad1()
2491b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2492b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2493b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2494b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_VAD_1);
2495b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
2496b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2497b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2498b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2499b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CString str;
2500b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        VadModes mode(kVadConventional);
2501b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_checkVAD1 % 4 == 0)
2502b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2503b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kVadConventional;
2504b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kVadConventional");
2505b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2506b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkVAD1 % 4 == 1)
2507b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2508b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kVadAggressiveLow;
2509b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kVadAggressiveLow");
2510b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2511b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkVAD1 % 4 == 2)
2512b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2513b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kVadAggressiveMid;
2514b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kVadAggressiveMid");
2515b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2516b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkVAD1 % 4 == 3)
2517b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2518b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kVadAggressiveHigh;
2519b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kVadAggressiveHigh");
2520b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2521b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const bool disableDTX(false);
2522b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veCodecPtr->SetVADStatus(channel, true, mode, disableDTX) == 0),
2523b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("SetVADStatus(channel=%d, enable=%d, mode=%s, disableDTX=%d)"), channel, enable, str, disableDTX);
2524b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _checkVAD1++;
2525b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2526b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2527b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2528b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veCodecPtr->SetVADStatus(channel, false)) == 0, _T("SetVADStatus(channel=%d, enable=%d)"), channel, false);
2529b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2530b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == -1)
2531b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2532b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // restore inital state since API call failed
2533b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED);
2534b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2535b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2536b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2537b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckVad2()
2538b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2539b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2540b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2541b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_VAD_2);
2542b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
2543b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2544b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2545b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2546b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CString str;
2547b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        VadModes mode(kVadConventional);
2548b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_checkVAD2 % 4 == 0)
2549b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2550b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kVadConventional;
2551b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kVadConventional");
2552b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2553b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkVAD2 % 4 == 1)
2554b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2555b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kVadAggressiveLow;
2556b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kVadAggressiveLow");
2557b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2558b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkVAD2 % 4 == 2)
2559b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2560b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kVadAggressiveMid;
2561b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kVadAggressiveMid");
2562b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2563b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkVAD2 % 4 == 3)
2564b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2565b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kVadAggressiveHigh;
2566b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kVadAggressiveHigh");
2567b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2568b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const bool disableDTX(false);
2569b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veCodecPtr->SetVADStatus(channel, true, mode, disableDTX)) == 0,
2570b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("SetVADStatus(channel=%d, enable=%d, mode=%s, disableDTX=%d)"), channel, enable, str, disableDTX);
2571b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _checkVAD2++;
2572b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2573b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2574b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2575b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veCodecPtr->SetVADStatus(channel, false) == 0), _T("SetVADStatus(channel=%d, enable=%d)"), channel, false);
2576b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2577b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (ret == -1)
2578b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2579b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        // restore inital state since API call failed
2580b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED);
2581b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2582b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2583b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2584b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckMuteIn1()
2585b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2586b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2587b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* buttonMute = (CButton*)GetDlgItem(IDC_CHECK_MUTE_IN_1);
2588b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = buttonMute->GetCheck();
2589b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2590b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veVolumeControlPtr->SetInputMute(channel, enable) == 0,
2591b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetInputMute(channel=%d, enable=%d)"), channel, enable);
2592b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2593b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2594b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckMuteIn2()
2595b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2596b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2597b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* buttonMute = (CButton*)GetDlgItem(IDC_CHECK_MUTE_IN_2);
2598b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = buttonMute->GetCheck();
2599b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2600b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veVolumeControlPtr->SetInputMute(channel, enable) == 0,
2601b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetInputMute(channel=%d, enable=%d)"), channel, enable);
2602b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2603b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2604b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckSrtpTx1()
2605b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2606a56c5b4327c6a89238ee5b1ffd3ace78b20afaefsolenberg@webrtc.org    TEST(true, "Built-in SRTP support is deprecated.");
2607b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2608b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2609b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckSrtpTx2()
2610b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2611a56c5b4327c6a89238ee5b1ffd3ace78b20afaefsolenberg@webrtc.org    TEST(true, "Built-in SRTP support is deprecated.");
2612b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2613b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2614b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckSrtpRx1()
2615b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2616a56c5b4327c6a89238ee5b1ffd3ace78b20afaefsolenberg@webrtc.org    TEST(true, "Built-in SRTP support is deprecated.");
2617b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2618b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2619b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckSrtpRx2()
2620b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2621a56c5b4327c6a89238ee5b1ffd3ace78b20afaefsolenberg@webrtc.org    TEST(true, "Built-in SRTP support is deprecated.");
2622b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2623b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2624b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckExtEncryption1()
2625b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2626a56c5b4327c6a89238ee5b1ffd3ace78b20afaefsolenberg@webrtc.org    TEST(true, "External Encryption has been removed from the API!");
2627b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2628b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2629b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckExtEncryption2()
2630b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2631a56c5b4327c6a89238ee5b1ffd3ace78b20afaefsolenberg@webrtc.org    TEST(true, "External Encryption has been removed from the API!");
2632b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2633b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2634b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonDtmf1()
2635b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2636b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2637b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CTelephonyEvent dlgTelephoneEvent(_vePtr, channel, this);
2638b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    dlgTelephoneEvent.DoModal();
2639b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2640b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2641b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonDtmf2()
2642b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2643b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2644b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CTelephonyEvent dlgTelephoneEvent(_vePtr, channel, this);
2645b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    dlgTelephoneEvent.DoModal();
2646b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2647b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2648b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckConference1()
2649b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2650b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Not supported yet
2651b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2652b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2653b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckConference2()
2654b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2655b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org   // Not supported yet
2656b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2657b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2658b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckOnHold1()
2659b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2660b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SHORT shiftKeyIsPressed = ::GetAsyncKeyState(VK_SHIFT);
2661b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2662b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString str;
2663b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2664b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_ON_HOLD_1);
2665b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
2666b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2667b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (shiftKeyIsPressed)
2668b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2669b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        bool enabled(false);
2670b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        OnHoldModes mode(kHoldSendAndPlay);
2671b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veBasePtr->GetOnHoldStatus(channel, enabled, mode) == 0,
2672b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("GetOnHoldStatus(channel=%d, enabled=?, mode=?)"), channel);
2673b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED);
2674b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2675b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        switch (mode)
2676b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2677b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case kHoldSendAndPlay:
2678b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kHoldSendAndPlay");
2679b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            break;
2680b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case kHoldSendOnly:
2681b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kHoldSendOnly");
2682b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            break;
2683b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case kHoldPlayOnly:
2684b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kHoldPlayOnly");
2685b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            break;
2686b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        default:
2687b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            break;
2688b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2689b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        PRINT_GET_RESULT(_T("enabled=%d, mode=%s"), enabled, str);
2690b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        return;
2691b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2692b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2693b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2694b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2695b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2696b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2697b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        OnHoldModes mode(kHoldSendAndPlay);
2698b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_checkOnHold1 % 3 == 0)
2699b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2700b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kHoldSendAndPlay;
2701b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kHoldSendAndPlay");
2702b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2703b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkOnHold1 % 3 == 1)
2704b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2705b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kHoldSendOnly;
2706b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kHoldSendOnly");
2707b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2708b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkOnHold1 % 3 == 2)
2709b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2710b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kHoldPlayOnly;
2711b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kHoldPlayOnly");
2712b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2713b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veBasePtr->SetOnHoldStatus(channel, enable, mode)) == 0,
2714b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("SetOnHoldStatus(channel=%d, enable=%d, mode=%s)"), channel, enable, str);
2715b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _checkOnHold1++;
2716b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2717b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2718b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2719b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veBasePtr->SetOnHoldStatus(channel, enable)) == 0,
2720b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("SetOnHoldStatus(channel=%d, enable=%d)"), channel, enable);
2721b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2722b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2723b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2724b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckOnHold2()
2725b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2726b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int ret(0);
2727b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_2);
2728b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_ON_HOLD_2);
2729b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
2730b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2731b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2732b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2733b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CString str;
2734b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        OnHoldModes mode(kHoldSendAndPlay);
2735b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_checkOnHold1 % 3 == 0)
2736b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2737b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kHoldSendAndPlay;
2738b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kHoldSendAndPlay");
2739b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2740b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkOnHold1 % 3 == 1)
2741b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2742b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kHoldSendOnly;
2743b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kHoldSendOnly");
2744b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2745b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkOnHold1 % 3 == 2)
2746b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2747b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kHoldPlayOnly;
2748b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kHoldPlayOnly");
2749b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2750b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veBasePtr->SetOnHoldStatus(channel, enable, mode)) == 0,
2751b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("SetOnHoldStatus(channel=%d, enable=%d, mode=%s)"), channel, enable, str);
2752b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _checkOnHold1++;
2753b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2754b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2755b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2756b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST((ret = _veBasePtr->SetOnHoldStatus(channel, enable)) == 0,
2757b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("SetOnHoldStatus(channel=%d, enable=%d)"), channel, enable);
2758b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2759b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2760b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2761b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckDelayEstimate1()
2762b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2763b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_DELAY_ESTIMATE_1);
2764b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
2765b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2766b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2767b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2768b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2769b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _delayEstimate1 = true;
2770b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemInt(IDC_EDIT_DELAY_ESTIMATE_1, 0);
2771b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2772b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2773b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2774b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _delayEstimate1 = false;
2775b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_DELAY_ESTIMATE_1, _T(""));
2776b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2777b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2778b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2779b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckRxvad()
2780b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2781b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2782b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_RXVAD);
2783b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
2784b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2785b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2786b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2787b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2788b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _rxVad = true;
2789b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veApmPtr->RegisterRxVadObserver(channel, *_rxVadObserverPtr);
2790b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemInt(IDC_EDIT_RXVAD, 0);
2791b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2792b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2793b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2794b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _rxVad = false;
2795b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veApmPtr->DeRegisterRxVadObserver(channel);
2796b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_RXVAD, _T(""));
2797b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2798b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2799b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2800b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckAgc1()
2801b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2802b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SHORT shiftKeyIsPressed = ::GetAsyncKeyState(VK_SHIFT);
2803b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2804b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString str;
2805b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2806b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_AGC_1);
2807b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
2808b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2809b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2810b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (shiftKeyIsPressed)
2811b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2812b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        bool enabled(false);
2813b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        AgcModes mode(kAgcAdaptiveDigital);
2814b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veApmPtr->GetRxAgcStatus(channel, enabled, mode) == 0,
2815b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("GetRxAgcStatus(channel=%d, enabled=?, mode=?)"), channel);
2816b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        button->SetCheck((check == BST_CHECKED) ? BST_UNCHECKED : BST_CHECKED);
2817b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2818b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        switch (mode)
2819b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2820b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case kAgcAdaptiveAnalog:
2821b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kAgcAdaptiveAnalog");
2822b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            break;
2823b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case kAgcAdaptiveDigital:
2824b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kAgcAdaptiveDigital");
2825b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            break;
2826b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        case kAgcFixedDigital:
2827b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kAgcFixedDigital");
2828b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            break;
2829b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        default:
2830b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            break;
2831b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2832b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        PRINT_GET_RESULT(_T("enabled=%d, mode=%s"), enabled, str);
2833b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        return;
2834b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2835b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2836b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2837b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2838b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CString str;
2839b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        AgcModes mode(kAgcDefault);
2840b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_checkAGC1 % 3 == 0)
2841b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2842b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kAgcDefault;
2843b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kAgcDefault");
2844b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2845b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkAGC1 % 3 == 1)
2846b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2847b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kAgcAdaptiveDigital;
2848b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kAgcAdaptiveDigital");
2849b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2850b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkAGC1 % 3 == 2)
2851b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2852b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kAgcFixedDigital;
2853b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kAgcFixedDigital");
2854b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2855b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veApmPtr->SetRxAgcStatus(channel, true, mode) == 0, _T("SetRxAgcStatus(channel=%d, enable=%d, %s)"), channel, enable, str);
2856b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _checkAGC1++;
2857b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2858b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2859b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2860b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veApmPtr->SetRxAgcStatus(channel, false, kAgcUnchanged) == 0, _T("SetRxAgcStatus(channel=%d, enable=%d)"), channel, enable);
2861b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2862b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2863b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2864b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckNs1()
2865b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2866b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
2867b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* buttonNS = (CButton*)GetDlgItem(IDC_CHECK_NS_1);
2868b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = buttonNS->GetCheck();
2869b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2870b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2871b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2872b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CString str;
2873b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        NsModes mode(kNsDefault);
2874b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_checkNS1 % 6 == 0)
2875b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2876b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kNsDefault;
2877b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kNsDefault");
2878b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2879b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkNS1 % 6 == 1)
2880b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2881b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kNsConference;
2882b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kNsConference");
2883b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2884b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkNS1 % 6 == 2)
2885b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2886b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kNsLowSuppression;
2887b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kNsLowSuppression");
2888b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2889b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkNS1 % 6 == 3)
2890b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2891b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kNsModerateSuppression;
2892b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kNsModerateSuppression");
2893b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2894b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkNS1 % 6 == 4)
2895b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2896b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kNsHighSuppression;
2897b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kNsHighSuppression");
2898b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2899b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkNS1 % 6 == 5)
2900b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2901b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kNsVeryHighSuppression;
2902b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kNsVeryHighSuppression");
2903b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2904b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veApmPtr->SetRxNsStatus(channel, true, mode) == 0, _T("SetRxNsStatus(channel=%d, enable=%d, %s)"), channel, enable, str);
2905b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _checkNS1++;
2906b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2907b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2908b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2909b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veApmPtr->SetRxNsStatus(channel, false, kNsUnchanged) == 0, _T("SetRxNsStatus(channel=%d, enable=%d)"), enable, channel);
2910b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2911b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2912b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2913b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
2914b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//                         Channel-independent Operations
2915b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
2916b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2917b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckPlayFileIn()
2918b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2919b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    std::string micFile = _long_audio_file_path + "audio_short16.pcm";
2920b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // std::string micFile = _long_audio_file_path + "audio_long16noise.pcm";
2921b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2922b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel(-1);
2923b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* buttonExtTrans = (CButton*)GetDlgItem(IDC_CHECK_PLAY_FILE_IN);
2924b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = buttonExtTrans->GetCheck();
2925b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2926b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2927b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2928b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        bool mix;
2929b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const bool loop(true);
2930b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const FileFormats format = kFileFormatPcm16kHzFile;
2931b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const float scale(1.0);
2932b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2933b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        (_checkPlayFileIn %2 == 0) ? mix = true : mix = false;
2934b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veFilePtr->StartPlayingFileAsMicrophone(channel,
2935b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            micFile.c_str(), loop, mix, format, scale) == 0,
2936b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("StartPlayingFileAsMicrophone(channel=%d, file=%s, ")
2937b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("loop=%d, mix=%d, format=%d, scale=%2.1f)"),
2938b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            channel, CharToTchar(micFile.c_str(), -1),
2939b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            loop, mix, format, scale);
2940b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _checkPlayFileIn++;
2941b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2942b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2943b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2944b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veFilePtr->StopPlayingFileAsMicrophone(channel) == 0,
2945b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("StopPlayingFileAsMicrophone(channel=%d)"), channel);
2946b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2947b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2948b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2949b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckRecMic()
2950b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2951b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    std::string micFile = webrtc::test::OutputPath() +
2952b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                          "rec_mic_mono_16kHz.pcm";
2953b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2954b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_REC_MIC);
2955b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
2956b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2957b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2958b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2959b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veFilePtr->StartRecordingMicrophone(micFile.c_str(), NULL) == 0,
2960b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("StartRecordingMicrophone(file=%s)"),
2961b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            CharToTchar(micFile.c_str(), -1));
2962b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2963b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
2964b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2965b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veFilePtr->StopRecordingMicrophone() == 0,
2966b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("StopRecordingMicrophone()"));
2967b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
2968b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
2969b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
2970b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckAgc()
2971b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
2972b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* buttonAGC = (CButton*)GetDlgItem(IDC_CHECK_AGC);
2973b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = buttonAGC->GetCheck();
2974b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
2975b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
2976b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
2977b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CString str;
2978b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        AgcModes mode(kAgcDefault);
2979b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_checkAGC % 4 == 0)
2980b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2981b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kAgcDefault;
2982b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kAgcDefault");
2983b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2984b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkAGC % 4 == 1)
2985b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2986b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kAgcAdaptiveAnalog;
2987b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kAgcAdaptiveAnalog");
2988b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2989b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkAGC % 4 == 2)
2990b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2991b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kAgcAdaptiveDigital;
2992b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kAgcAdaptiveDigital");
2993b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2994b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkAGC % 4 == 3)
2995b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
2996b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kAgcFixedDigital;
2997b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kAgcFixedDigital");
2998b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
2999b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veApmPtr->SetAgcStatus(true, mode) == 0, _T("SetAgcStatus(enable=%d, %s)"), enable, str);
3000b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _checkAGC++;
3001b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3002b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
3003b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3004b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veApmPtr->SetAgcStatus(false, kAgcUnchanged) == 0, _T("SetAgcStatus(enable=%d)"), enable);
3005b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3006b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3007b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3008b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckNs()
3009b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3010b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* buttonNS = (CButton*)GetDlgItem(IDC_CHECK_NS);
3011b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = buttonNS->GetCheck();
3012b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
3013b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
3014b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3015b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CString str;
3016b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        NsModes mode(kNsDefault);
3017b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_checkNS % 6 == 0)
3018b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
3019b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kNsDefault;
3020b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kNsDefault");
3021b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
3022b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkNS % 6 == 1)
3023b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
3024b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kNsConference;
3025b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kNsConference");
3026b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
3027b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkNS % 6 == 2)
3028b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
3029b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kNsLowSuppression;
3030b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kNsLowSuppression");
3031b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
3032b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkNS % 6 == 3)
3033b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
3034b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kNsModerateSuppression;
3035b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kNsModerateSuppression");
3036b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
3037b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkNS % 6 == 4)
3038b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
3039b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kNsHighSuppression;
3040b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kNsHighSuppression");
3041b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
3042b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkNS % 6 == 5)
3043b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
3044b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kNsVeryHighSuppression;
3045b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kNsVeryHighSuppression");
3046b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
3047b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veApmPtr->SetNsStatus(true, mode) == 0, _T("SetNsStatus(enable=%d, %s)"), enable, str);
3048b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _checkNS++;
3049b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3050b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
3051b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3052b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veApmPtr->SetNsStatus(false, kNsUnchanged) == 0, _T("SetNsStatus(enable=%d)"), enable);
3053b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3054b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3055b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3056b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckEc()
3057b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3058b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* buttonEC = (CButton*)GetDlgItem(IDC_CHECK_EC);
3059b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = buttonEC->GetCheck();
3060b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
3061b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
3062b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3063b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        CString str;
3064b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        EcModes mode(kEcDefault);
3065b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_checkEC % 4 == 0)
3066b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
3067b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kEcDefault;
3068b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kEcDefault");
3069b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
3070b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkEC % 4 == 1)
3071b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
3072b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kEcConference;
3073b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kEcConference");
3074b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
3075b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkEC % 4 == 2)
3076b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
3077b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kEcAec;
3078b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kEcAec");
3079b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
3080b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else if (_checkEC % 4 == 3)
3081b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
3082b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            mode = kEcAecm;
3083b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            str = _T("kEcAecm");
3084b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
3085b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veApmPtr->SetEcStatus(true, mode) == 0, _T("SetEcStatus(enable=%d, %s)"), enable, str);
3086b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _checkEC++;
3087b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3088b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
3089b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3090b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veApmPtr->SetEcStatus(false, kEcUnchanged) == 0, _T("SetEcStatus(enable=%d)"), enable);
3091b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3092b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3093b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3094b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckMuteIn()
3095b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3096b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* buttonMute = (CButton*)GetDlgItem(IDC_CHECK_MUTE_IN);
3097b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = buttonMute->GetCheck();
3098b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
3099b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const int channel(-1);
3100b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veVolumeControlPtr->SetInputMute(channel, enable) == 0,
3101b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetInputMute(channel=%d, enable=%d)"), channel, enable);
3102b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3103b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckExtMediaIn()
3105b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3106b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const int channel(-1);
3107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_IN);
3108b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
3109b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
3110b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
3111b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3112b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veExternalMediaPtr->RegisterExternalMediaProcessing(channel, kRecordingAllChannelsMixed, *_externalMediaPtr) == 0,
3113b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("RegisterExternalMediaProcessing(channel=%d, kRecordingAllChannelsMixed, processObject=0x%x)"), channel, _externalMediaPtr);
3114b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3115b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
3116b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3117b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veExternalMediaPtr->DeRegisterExternalMediaProcessing(channel, kRecordingAllChannelsMixed) == 0,
3118b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("DeRegisterExternalMediaProcessing(channel=%d, kRecordingAllChannelsMixed)"), channel);
3119b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3120b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3121b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3122b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckExtMediaOut()
3123b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3124b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const int channel(-1);
3125b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_EXT_MEDIA_OUT);
3126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
3127b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
3128b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (enable)
3129b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3130b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veExternalMediaPtr->RegisterExternalMediaProcessing(channel, kPlaybackAllChannelsMixed, *_externalMediaPtr) == 0,
3131b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("RegisterExternalMediaProcessing(channel=%d, kPlaybackAllChannelsMixed, processObject=0x%x)"), channel, _externalMediaPtr);
3132b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3133b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    else
3134b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3135b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        TEST(_veExternalMediaPtr->DeRegisterExternalMediaProcessing(channel, kPlaybackAllChannelsMixed) == 0,
3136b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            _T("DeRegisterExternalMediaProcessing(channel=%d, kPlaybackAllChannelsMixed)"), channel);
3137b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3138b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3139b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3140b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnCbnSelchangeComboRecDevice()
3141b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3142b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CComboBox* comboCodec(NULL);
3143b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboCodec = (CComboBox*)GetDlgItem(IDC_COMBO_REC_DEVICE);
3144b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int index = comboCodec->GetCurSel();
3145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veHardwarePtr->SetRecordingDevice(index) == 0,
3146b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetRecordingDevice(index=%d)"), index);
3147b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3149b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnCbnSelchangeComboPlayDevice()
3150b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3151b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CComboBox* comboCodec(NULL);
3152b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    comboCodec = (CComboBox*)GetDlgItem(IDC_COMBO_PLAY_DEVICE);
3153b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int index = comboCodec->GetCurSel();
3154b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veHardwarePtr->SetPlayoutDevice(index) == 0,
3155b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetPlayoutDevice(index=%d)"), index);
3156b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3157b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3158b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnNMReleasedcaptureSliderInputVolume(NMHDR *pNMHDR, LRESULT *pResult)
3159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3160b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CSliderCtrl* slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_INPUT_VOLUME);
3161b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    slider->SetRangeMin(0);
3162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    slider->SetRangeMax(255);
3163b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int pos = slider->GetPos();
3164b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3165b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veVolumeControlPtr->SetMicVolume(pos) == 0, _T("SetMicVolume(volume=%d)"), pos);
3166b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3167b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    *pResult = 0;
3168b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3169b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3170b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnNMReleasedcaptureSliderOutputVolume(NMHDR *pNMHDR, LRESULT *pResult)
3171b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3172b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CSliderCtrl* slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_OUTPUT_VOLUME);
3173b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    slider->SetRangeMin(0);
3174b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    slider->SetRangeMax(255);
3175b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int pos = slider->GetPos();
3176b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3177b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veVolumeControlPtr->SetSpeakerVolume(pos) == 0, _T("SetSpeakerVolume(volume=%d)"), pos);
3178b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3179b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    *pResult = 0;
3180b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3181b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3182b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnNMReleasedcaptureSliderPanLeft(NMHDR *pNMHDR, LRESULT *pResult)
3183b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3184b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CSliderCtrl* slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_PAN_LEFT);
3185b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    slider->SetRange(0,10);
3186b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int pos = 10 - slider->GetPos();    // 0 <=> lower end, 10 <=> upper end
3187b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3188b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    float left(0.0);
3189b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    float right(0.0);
3190b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const int channel(-1);
3191b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3192b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Only left channel will be modified
3193b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veVolumeControlPtr->GetOutputVolumePan(channel, left, right);
3194b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3195b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    left = (float)((float)pos/10.0f);
3196b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3197b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veVolumeControlPtr->SetOutputVolumePan(channel, left, right) == 0,
3198b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetOutputVolumePan(channel=%d, left=%2.1f, right=%2.1f)"), channel, left, right);
3199b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3200b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    *pResult = 0;
3201b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3202b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3203b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnNMReleasedcaptureSliderPanRight(NMHDR *pNMHDR, LRESULT *pResult)
3204b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3205b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CSliderCtrl* slider = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_PAN_RIGHT);
3206b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    slider->SetRange(0,10);
3207b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int pos = 10 - slider->GetPos();    // 0 <=> lower end, 10 <=> upper end
3208b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3209b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    float left(0.0);
3210b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    float right(0.0);
3211b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const int channel(-1);
3212b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3213b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Only right channel will be modified
3214b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veVolumeControlPtr->GetOutputVolumePan(channel, left, right);
3215b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3216b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    right = (float)((float)pos/10.0f);
3217b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3218b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veVolumeControlPtr->SetOutputVolumePan(channel, left, right) == 0,
3219b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _T("SetOutputVolumePan(channel=%d, left=%2.1f, right=%2.1f)"), channel, left, right);
3220b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3221b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    *pResult = 0;
3222b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3223b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3224b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonVersion()
3225b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3226b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veBasePtr)
3227b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3228b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        char version[1024];
3229b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (_veBasePtr->GetVersion(version) == 0)
3230b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
3231b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            AfxMessageBox(CString(version), MB_OK);
3232b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
3233b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        else
3234b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
3235b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            AfxMessageBox(_T("FAILED!"), MB_OK);
3236b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
3237b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3238b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3239b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3240b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckRecCall()
3241b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3242b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Not supported
3243b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3244b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3245b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckTypingDetection()
3246b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3247b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_TYPING_DETECTION);
3248b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
3249b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
3250b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    TEST(_veApmPtr->SetTypingDetectionStatus(enable) == 0, _T("SetTypingDetectionStatus(enable=%d)"), enable);
3251b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3252b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3253dd671dea7a51c5db5e15123acac599e89f9be201minyue@webrtc.orgvoid CWinTestDlg::OnBnClickedCheckRED()
3254b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3255dd671dea7a51c5db5e15123acac599e89f9be201minyue@webrtc.org    CButton* button = (CButton*)GetDlgItem(IDC_CHECK_RED);
3256b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1);
3257b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int check = button->GetCheck();
3258b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    const bool enable = (check == BST_CHECKED);
3259dd671dea7a51c5db5e15123acac599e89f9be201minyue@webrtc.org    TEST(_veRtpRtcpPtr->SetREDStatus(channel, enable) == 0,
3260dd671dea7a51c5db5e15123acac599e89f9be201minyue@webrtc.org         _T("SetREDStatus(enable=%d)"), enable);
3261b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3262b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3263b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
3264b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//                                   Message Handlers
3265b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
3266b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3267b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnTimer(UINT_PTR nIDEvent)
3268b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3269b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CString str;
3270b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3271b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    unsigned int svol(0);
3272b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    unsigned int mvol(0);
3273b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3274b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _timerTicks++;
3275b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3276b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Get speaker and microphone volumes
3277b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veVolumeControlPtr->GetSpeakerVolume(svol);
3278b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veVolumeControlPtr->GetMicVolume(mvol);
3279b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3280b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Update speaker volume slider
3281b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CSliderCtrl* sliderSpkr = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_OUTPUT_VOLUME);
3282b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    sliderSpkr->SetRangeMin(0);
3283b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    sliderSpkr->SetRangeMax(255);
3284b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    sliderSpkr->SetPos(svol);
3285b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3286b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Update microphone volume slider
3287b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CSliderCtrl* sliderMic = (CSliderCtrl*)GetDlgItem(IDC_SLIDER_INPUT_VOLUME);
3288b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    sliderMic->SetRangeMin(0);
3289b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    sliderMic->SetRangeMax(255);
3290b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    sliderMic->SetPos(mvol);
3291b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3292b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    unsigned int micLevel;
3293b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    unsigned int combinedOutputLevel;
3294b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3295b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Get audio levels
3296b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veVolumeControlPtr->GetSpeechInputLevel(micLevel);
3297b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _veVolumeControlPtr->GetSpeechOutputLevel(-1, combinedOutputLevel);
3298b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3299b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Update audio level controls
3300b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CProgressCtrl* progressMic = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_AUDIO_LEVEL_IN);
3301b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    progressMic->SetRange(0,9);
3302b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    progressMic->SetStep(1);
3303b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    progressMic->SetPos(micLevel);
3304b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CProgressCtrl* progressOut = (CProgressCtrl*)GetDlgItem(IDC_PROGRESS_AUDIO_LEVEL_OUT);
3305b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    progressOut->SetRange(0,9);
3306b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    progressOut->SetStep(1);
3307b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    progressOut->SetPos(combinedOutputLevel);
3308b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3309b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // Update playout delay (buffer size)
3310b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veVideoSyncPtr)
3311b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3312b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        int bufferMs(0);
3313b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veVideoSyncPtr->GetPlayoutBufferSize(bufferMs);
3314b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemInt(IDC_EDIT_PLAYOUT_BUFFER_SIZE, bufferMs);
3315b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3316b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3317b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_delayEstimate1 && _veVideoSyncPtr)
3318b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3319b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        const int channel = GetDlgItemInt(IDC_EDIT_1);
3320b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        int delayMs(0);
3321b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veVideoSyncPtr->GetDelayEstimate(channel, delayMs);
3322b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemInt(IDC_EDIT_DELAY_ESTIMATE_1, delayMs);
3323b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3324b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3325b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_rxVad && _veApmPtr && _rxVadObserverPtr)
3326b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3327b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemInt(IDC_EDIT_RXVAD, _rxVadObserverPtr->vad_decision);
3328b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3329b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3330b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veHardwarePtr)
3331b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3332b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        int load1, load2;
3333b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veHardwarePtr->GetSystemCPULoad(load1);
3334b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        _veHardwarePtr->GetCPULoad(load2);
3335b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        str.Format(_T("CPU load (system/VoE): %d/%d [%%]"), load1, load2);
3336b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        SetDlgItemText(IDC_EDIT_CPU_LOAD, (LPCTSTR)str);
3337b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3338b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3339b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    BOOL ret;
3340b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    int channel = GetDlgItemInt(IDC_EDIT_1, &ret);
3341b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3342b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veCodecPtr)
3343b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3344b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (ret == TRUE)
3345b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
3346b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            CodecInst codec;
3347b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            if (_veCodecPtr->GetRecCodec(channel, codec) == 0)
3348b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
3349b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        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);
3350b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                SetDlgItemText(IDC_EDIT_RX_CODEC_1, (LPCTSTR)str);
3351b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
3352b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
3353b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3354b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3355b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    if (_veRtpRtcpPtr)
3356b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    {
3357b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        if (ret == TRUE)
3358b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        {
3359b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            CallStatistics stats;
3360b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            if (_veRtpRtcpPtr->GetRTCPStatistics(channel, stats) == 0)
3361b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            {
3362b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                str.Format(_T("RTCP | RTP: cum=%u, ext=%d, frac=%u, jitter=%u | TX=%d, RX=%d, RTT=%d"),
3363b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                    stats.cumulativeLost, stats.extendedMax, stats.fractionLost, stats.jitterSamples, stats.packetsSent, stats.packetsReceived, stats.rttMs);
3364b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org                SetDlgItemText(IDC_EDIT_RTCP_STAT_1, (LPCTSTR)str);
3365b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org            }
3366b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org        }
3367b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    }
3368b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3369b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetTimer(0, 1000, NULL);
3370b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    CDialog::OnTimer(nIDEvent);
3371b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3372b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3373b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonClearErrorCallback()
3374b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3375b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    _nErrorCallbacks = 0;
3376b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    SetDlgItemText(IDC_EDIT_ERROR_CALLBACK, _T(""));
3377b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3378b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3379b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
3380b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org//                                       TEST
3381b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org// ----------------------------------------------------------------------------
3382b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org
3383b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgvoid CWinTestDlg::OnBnClickedButtonTest1()
3384b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org{
3385b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org    // add tests here...
3386b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}
3387