Added mute, hold and typing detect to voe_cmd_test to increase functionality in the voe_cmd_test application.

Typing Detect is applicable only for Mac.  
Review URL: http://webrtc-codereview.appspot.com/156002

git-svn-id: http://webrtc.googlecode.com/svn/trunk@632 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
amyfong@webrtc.org 2011-09-20 23:41:06 +00:00
parent a1930427af
commit 3be70ca17e

View File

@ -91,6 +91,34 @@ my_transportation my_transport;
#endif #endif
class MyObserver : public VoiceEngineObserver {
public:
virtual void CallbackOnError(const int channel, const int err_code);
};
void MyObserver::CallbackOnError(const int channel, const int err_code) {
// Add printf for other error codes here
if (err_code == VE_TYPING_NOISE_WARNING) {
printf(" TYPING NOISE DETECTED \n");
} else if (err_code == VE_RECEIVE_PACKET_TIMEOUT) {
printf(" RECEIVE PACKET TIMEOUT \n");
} else if (err_code == VE_PACKET_RECEIPT_RESTARTED) {
printf(" PACKET RECEIPT RESTARTED \n");
} else if (err_code == VE_RUNTIME_PLAY_WARNING) {
printf(" RUNTIME PLAY WARNING \n");
} else if (err_code == VE_RUNTIME_REC_WARNING) {
printf(" RUNTIME RECORD WARNING \n");
} else if (err_code == VE_SATURATION_WARNING) {
printf(" SATURATION WARNING \n");
} else if (err_code == VE_RUNTIME_PLAY_ERROR) {
printf(" RUNTIME PLAY ERROR \n");
} else if (err_code == VE_RUNTIME_REC_ERROR) {
printf(" RUNTIME RECORD ERROR \n");
} else if (err_code == VE_REC_DEVICE_REMOVED) {
printf(" RECORD DEVICE REMOVED \n");
}
}
int main() { int main() {
int res = 0; int res = 0;
int cnt = 0; int cnt = 0;
@ -112,11 +140,16 @@ int main() {
xmedia = VoEExternalMedia::GetInterface(m_voe); xmedia = VoEExternalMedia::GetInterface(m_voe);
neteqst = VoENetEqStats::GetInterface(m_voe); neteqst = VoENetEqStats::GetInterface(m_voe);
MyObserver my_observer;
printf("Set trace filenames (enable trace)\n"); printf("Set trace filenames (enable trace)\n");
VoiceEngine::SetTraceFilter(kTraceAll); VoiceEngine::SetTraceFilter(kTraceAll);
res = VoiceEngine::SetTraceFile("webrtc_trace.txt"); res = VoiceEngine::SetTraceFile("webrtc_trace.txt");
VALIDATE; VALIDATE;
res = VoiceEngine::SetTraceCallback(NULL);
VALIDATE;
printf("Init\n"); printf("Init\n");
res = base1->Init(); res = base1->Init();
if (res != 0) { if (res != 0) {
@ -125,6 +158,9 @@ int main() {
exit(1); exit(1);
} }
res = base1->RegisterVoiceEngineObserver(my_observer);
VALIDATE;
cnt++; cnt++;
printf("Version\n"); printf("Version\n");
char tmp[1024]; char tmp[1024];
@ -137,6 +173,8 @@ int main() {
printf("Terminate \n"); printf("Terminate \n");
base1->DeRegisterVoiceEngineObserver();
res = base1->Terminate(); res = base1->Terminate();
VALIDATE; VALIDATE;
@ -196,6 +234,9 @@ void run_test() {
bool VAD = false; bool VAD = false;
bool NS = false; bool NS = false;
bool NS1 = false; bool NS1 = false;
bool typing_detection = false;
bool muted = false;
bool on_hold = false;
chan = base1->CreateChannel(); chan = base1->CreateChannel();
if (chan < 0) { if (chan < 0) {
@ -434,6 +475,16 @@ void run_test() {
i++; i++;
printf("\t%i. AGC status \n", i); printf("\t%i. AGC status \n", i);
i++; i++;
printf("\t%i. Toggle microphone mute \n", i);
i++;
printf("\t%i. Toggle on hold status \n", i);
i++;
printf("\t%i. Get last error code \n", i);
i++;
printf("\t%i. Toggle typing detection(for Mac/Windows only) \n", i);
i++;
printf("\t%i. Stop call \n", i); printf("\t%i. Stop call \n", i);
printf("Select action or %i to stop the call: ", i); printf("Select action or %i to stop the call: ", i);
@ -598,7 +649,51 @@ void run_test() {
bool enable; bool enable;
res = apm->GetAgcStatus(enable, agcmode); res = apm->GetAgcStatus(enable, agcmode);
VALIDATE VALIDATE
printf("\n AGC enale is %d , mode is %d \n", enable, agcmode); printf("\n AGC enable is %d , mode is %d \n", enable, agcmode);
}
else if (codecinput == (noCodecs + 17)) {
// Toggle Mute on Microphone
res = volume->GetInputMute(chan, muted);
VALIDATE;
muted = !muted;
res = volume->SetInputMute(chan, muted);
VALIDATE;
if (muted)
printf("\n Microphone is now on mute! \n");
else
printf("\n Microphone is no longer on mute! \n");
}
else if (codecinput == (noCodecs + 18)) {
// Toggle the call on hold
OnHoldModes mode;
res = base1->GetOnHoldStatus(chan, on_hold, mode);
VALIDATE;
on_hold = !on_hold;
mode = kHoldSendAndPlay;
res = base1->SetOnHoldStatus(chan, on_hold, mode);
VALIDATE;
if (on_hold)
printf("\n Call now on hold! \n");
else
printf("\n Call now not on hold! \n");
}
else if (codecinput == (noCodecs + 19)) {
// Get the last error code and print to screen
int err_code = 0;
err_code = base1->LastError();
if (err_code != -1)
printf("\n The last error code was %i. \n", err_code);
}
else if (codecinput == (noCodecs + 20)) {
typing_detection= !typing_detection;
res = apm->SetTypingDetectionStatus(typing_detection);
VALIDATE;
if (typing_detection)
printf("\n Typing detection is now on! \n");
else
printf("\n Typing detection is now off! \n");
} }
else else
break; break;