579 lines
24 KiB
C++
579 lines
24 KiB
C++
/*
|
|
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
//
|
|
// vie_autotest_base.cc
|
|
//
|
|
|
|
#include "vie_autotest_defines.h"
|
|
#include "vie_autotest.h"
|
|
#include "engine_configurations.h"
|
|
#include "video_capture.h"
|
|
|
|
int ViEAutoTest::ViEBaseStandardTest()
|
|
{
|
|
ViETest::Log(" ");
|
|
ViETest::Log("========================================");
|
|
ViETest::Log(" ViEBase Standard Test");
|
|
|
|
//***************************************************************
|
|
// Begin create/initialize WebRTC Video Engine for testing
|
|
//***************************************************************
|
|
|
|
int error = 0;
|
|
bool succeeded = true;
|
|
int numberOfErrors = 0;
|
|
|
|
ViETest::Log("Starting a loopback call...");
|
|
|
|
VideoEngine* ptrViE = NULL;
|
|
ptrViE = VideoEngine::Create();
|
|
numberOfErrors += ViETest::TestError(ptrViE != NULL,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
#ifdef ANDROID
|
|
error = ptrViE->SetTraceFile("/sdcard/ViEBaseStandardTest.txt");
|
|
numberOfErrors += ViETest::TestError(error == 0,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
#else
|
|
error = ptrViE->SetTraceFile("ViEBaseStandardTest.txt");
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
#endif
|
|
ViEBase* ptrViEBase = ViEBase::GetInterface(ptrViE);
|
|
numberOfErrors += ViETest::TestError(ptrViEBase != NULL,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
error = ptrViEBase->Init();
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
//***************************************************************
|
|
// Engine ready. Begin testing class
|
|
//***************************************************************
|
|
|
|
int videoChannel = -1;
|
|
error = ptrViEBase->CreateChannel(videoChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
ViECapture* ptrViECapture = ViECapture::GetInterface(ptrViE);
|
|
numberOfErrors += ViETest::TestError(ptrViECapture != NULL,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
VideoCaptureModule* vcpm(NULL);
|
|
|
|
const unsigned int KMaxDeviceNameLength = 128;
|
|
const unsigned int KMaxUniqueIdLength = 256;
|
|
WebRtc_UWord8 deviceName[KMaxDeviceNameLength];
|
|
memset(deviceName, 0, KMaxDeviceNameLength);
|
|
WebRtc_UWord8 uniqueId[KMaxUniqueIdLength];
|
|
memset(uniqueId, 0, KMaxUniqueIdLength);
|
|
|
|
bool captureDeviceSet = false;
|
|
int captureId = 0;
|
|
VideoCaptureModule::DeviceInfo* devInfo =
|
|
VideoCaptureModule::CreateDeviceInfo(0);
|
|
|
|
for (unsigned int captureIdx = 0;
|
|
captureIdx < devInfo->NumberOfDevices();
|
|
captureIdx++)
|
|
{
|
|
error = devInfo->GetDeviceName(captureIdx, deviceName,
|
|
KMaxDeviceNameLength, uniqueId,
|
|
KMaxUniqueIdLength);
|
|
numberOfErrors += ViETest::TestError(error == 0,
|
|
"ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
vcpm = VideoCaptureModule::Create(4571, uniqueId);
|
|
numberOfErrors += ViETest::TestError(vcpm != NULL,
|
|
"ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViECapture->AllocateCaptureDevice(*vcpm, captureId);
|
|
if (error == 0)
|
|
{
|
|
ViETest::Log("Using capture device: %s, captureId: %d.",
|
|
deviceName, captureId);
|
|
captureDeviceSet = true;
|
|
break;
|
|
}
|
|
else
|
|
{
|
|
VideoCaptureModule::Destroy(vcpm);
|
|
vcpm = NULL;
|
|
}
|
|
}
|
|
VideoCaptureModule::DestroyDeviceInfo(devInfo);
|
|
|
|
numberOfErrors+= ViETest::TestError(
|
|
captureDeviceSet,
|
|
"ERROR: %s at line %d - Could not set capture device",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViECapture->ConnectCaptureDevice(captureId, videoChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViECapture->StartCapture(captureId);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
ViERTP_RTCP* ptrViERtpRtcp = ViERTP_RTCP::GetInterface(ptrViE);
|
|
numberOfErrors += ViETest::TestError(ptrViE != NULL,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
error = ptrViERtpRtcp->SetRTCPStatus(videoChannel, kRtcpCompound_RFC4585);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViERtpRtcp->SetKeyFrameRequestMethod(videoChannel,
|
|
kViEKeyFrameRequestPliRtcp);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViERtpRtcp->SetTMMBRStatus(videoChannel, true);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
ViERender* ptrViERender = ViERender::GetInterface(ptrViE);
|
|
numberOfErrors += ViETest::TestError(ptrViERender != NULL,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
error = ptrViERender->RegisterVideoRenderModule(*_vrm1);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViERender->AddRenderer(captureId, _window1, 0, 0.0, 0.0, 1.0,
|
|
1.0);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViERender->StartRender(captureId);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
|
|
error = ptrViERender->RegisterVideoRenderModule(*_vrm2);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViERender->AddRenderer(videoChannel, _window2, 1, 0.0, 0.0, 1.0,
|
|
1.0);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViERender->StartRender(videoChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
ViECodec* ptrViECodec = ViECodec::GetInterface(ptrViE);
|
|
numberOfErrors += ViETest::TestError(ptrViECodec != NULL,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
webrtc::VideoCodec videoCodec;
|
|
memset(&videoCodec, 0, sizeof(webrtc::VideoCodec));
|
|
for (int idx = 0; idx < ptrViECodec->NumberOfCodecs(); idx++)
|
|
{
|
|
error = ptrViECodec->GetCodec(idx, videoCodec);
|
|
numberOfErrors += ViETest::TestError(error == 0,
|
|
"ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
// try to keep the test frame size small when I420
|
|
if (videoCodec.codecType == webrtc::kVideoCodecI420)
|
|
{
|
|
videoCodec.width = 176;
|
|
videoCodec.height = 144;
|
|
error = ptrViECodec->SetSendCodec(videoChannel, videoCodec);
|
|
numberOfErrors += ViETest::TestError(error == 0,
|
|
"ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
}
|
|
|
|
error = ptrViECodec->SetReceiveCodec(videoChannel, videoCodec);
|
|
numberOfErrors += ViETest::TestError(error == 0,
|
|
"ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
}
|
|
|
|
ViENetwork* ptrViENetwork = ViENetwork::GetInterface(ptrViE);
|
|
numberOfErrors += ViETest::TestError(ptrViENetwork != NULL,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
char version[1024] = "";
|
|
int versionLength = 1024;
|
|
error = ptrViEBase->GetVersion(version);
|
|
|
|
ViETest::Log("\nUsing WebRTC Video Engine version: %s", version);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
const char* ipAddress = "127.0.0.1";
|
|
unsigned short rtpPortListen = 6000;
|
|
unsigned short rtpPortSend = 6000;
|
|
|
|
|
|
rtpPortListen = 6100;
|
|
rtpPortSend = 6100;
|
|
|
|
error = ptrViENetwork->SetLocalReceiver(videoChannel, rtpPortListen);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViEBase->StartReceive(videoChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViENetwork->SetSendDestination(videoChannel, ipAddress,
|
|
rtpPortSend);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViEBase->StartSend(videoChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
|
|
error = ptrViERender->MirrorRenderStream(captureId, true, false, true);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
// Call started
|
|
ViETest::Log("Call started");
|
|
ViETest::Log("You should see a mirrored local preview from camera %s in "
|
|
"window 1 and the remote video in window 2.",
|
|
deviceName);
|
|
|
|
//***************************************************************
|
|
// Finished initializing engine. Begin testing
|
|
//***************************************************************
|
|
|
|
AutoTestSleep(KAutoTestSleepTimeMs);
|
|
|
|
//***************************************************************
|
|
// Testing finished. Tear down Video Engine
|
|
//***************************************************************
|
|
|
|
// Shut down
|
|
error = ptrViEBase->StopReceive(videoChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViERender->StopRender(videoChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViERender->RemoveRenderer(videoChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViERender->DeRegisterVideoRenderModule(*_vrm2);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
int remainingInterfaces = 0;
|
|
|
|
error = ptrViEBase->StopSend(videoChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViERender->RemoveRenderer(captureId);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViERender->DeRegisterVideoRenderModule(*_vrm1);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViECapture->StopCapture(captureId);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViECapture->DisconnectCaptureDevice(videoChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViECapture->ReleaseCaptureDevice(captureId);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
VideoCaptureModule::Destroy(vcpm);
|
|
vcpm = NULL;
|
|
|
|
remainingInterfaces = ptrViECapture->Release();
|
|
numberOfErrors += ViETest::TestError(remainingInterfaces == 0,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
error = ptrViEBase->DeleteChannel(videoChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
remainingInterfaces = ptrViECodec->Release();
|
|
numberOfErrors += ViETest::TestError(remainingInterfaces == 0,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
remainingInterfaces = ptrViERtpRtcp->Release();
|
|
numberOfErrors += ViETest::TestError(remainingInterfaces == 0,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
remainingInterfaces = ptrViERender->Release();
|
|
numberOfErrors += ViETest::TestError(remainingInterfaces == 0,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
remainingInterfaces = ptrViENetwork->Release();
|
|
numberOfErrors += ViETest::TestError(remainingInterfaces == 0,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
remainingInterfaces = ptrViEBase->Release();
|
|
numberOfErrors += ViETest::TestError(remainingInterfaces == 0,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
bool deleted = VideoEngine::Delete(ptrViE);
|
|
numberOfErrors += ViETest::TestError(deleted == true,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
if (numberOfErrors > 0)
|
|
{
|
|
// Test failed
|
|
ViETest::Log(" ");
|
|
ViETest::Log(" ERROR ViEBase Standard Test FAILED!");
|
|
ViETest::Log(" Number of errors: %d", numberOfErrors);
|
|
ViETest::Log("========================================");
|
|
ViETest::Log(" ");
|
|
return numberOfErrors;
|
|
}
|
|
|
|
ViETest::Log(" ");
|
|
ViETest::Log(" ViEBase Standard Test PASSED!");
|
|
ViETest::Log("========================================");
|
|
ViETest::Log(" ");
|
|
return 0;
|
|
}
|
|
|
|
int ViEAutoTest::ViEBaseExtendedTest()
|
|
{
|
|
// Start with standard test
|
|
ViEBaseAPITest();
|
|
ViEBaseStandardTest();
|
|
|
|
ViETest::Log(" ");
|
|
ViETest::Log("========================================");
|
|
ViETest::Log(" ViEBase Extended Test");
|
|
|
|
ViETest::Log(" ");
|
|
ViETest::Log(" ViEBase Extended Test PASSED!");
|
|
ViETest::Log("========================================");
|
|
ViETest::Log(" ");
|
|
|
|
return 0;
|
|
}
|
|
|
|
int ViEAutoTest::ViEBaseAPITest()
|
|
{
|
|
ViETest::Log(" ");
|
|
ViETest::Log("========================================");
|
|
ViETest::Log(" ViEBase API Test");
|
|
|
|
|
|
//***************************************************************
|
|
// Begin create/initialize WebRTC Video Engine for testing
|
|
//***************************************************************
|
|
|
|
int error = 0;
|
|
bool succeeded = true;
|
|
int numberOfErrors = 0;
|
|
|
|
VideoEngine* ptrViE = NULL;
|
|
ViEBase* ptrViEBase = NULL;
|
|
|
|
// Get the ViEBase API
|
|
ptrViEBase = ViEBase::GetInterface(ptrViE);
|
|
numberOfErrors += ViETest::TestError(ptrViEBase == NULL);
|
|
|
|
ptrViE = VideoEngine::Create();
|
|
numberOfErrors += ViETest::TestError(ptrViE != NULL, "VideoEngine::Create");
|
|
|
|
#ifdef ANDROID
|
|
error = ptrViE->SetTraceFile("/sdcard/WebRTC/ViESampleCodeTrace.txt");
|
|
numberOfErrors += ViETest::TestError(error == 0, "SetTraceFile error");
|
|
|
|
error = ptrViE->SetTraceFile(
|
|
"/sdcard/WebRTC/ViESampleCodeTraceEncrypted.txt");
|
|
numberOfErrors += ViETest::TestError(error == 0, "SetTraceFile");
|
|
#else
|
|
error = ptrViE->SetTraceFile("WebRTCViESampleCodeTrace.txt");
|
|
numberOfErrors += ViETest::TestError(error == 0, "SetTraceFile error");
|
|
#endif
|
|
|
|
ptrViEBase = ViEBase::GetInterface(ptrViE);
|
|
numberOfErrors += ViETest::TestError(ptrViEBase != NULL);
|
|
|
|
//***************************************************************
|
|
// Engine ready. Begin testing class
|
|
//***************************************************************
|
|
|
|
char version[1024] = "";
|
|
error = ptrViEBase->GetVersion(version);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViEBase->LastError();
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
// Create without init
|
|
int videoChannel = -1;
|
|
error = ptrViEBase->CreateChannel(videoChannel);
|
|
numberOfErrors += ViETest::TestError(error != 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViEBase->Init();
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViEBase->CreateChannel(videoChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
int videoChannel2 = -1;
|
|
error = ptrViEBase->CreateChannel(videoChannel2);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
numberOfErrors += ViETest::TestError(videoChannel != videoChannel2,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
error = ptrViEBase->DeleteChannel(videoChannel2);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
// Channel doesn't exist
|
|
error = ptrViEBase->CreateChannel(videoChannel2, videoChannel + 1);
|
|
numberOfErrors += ViETest::TestError(error == -1, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
// Channel doesn't exist
|
|
error = ptrViEBase->CreateChannel(videoChannel2, videoChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
// VoiceEngine
|
|
VoiceEngine* ptrVoE = NULL;
|
|
VoEBase* ptrVoEBase = NULL;
|
|
int audioChannel = -1;
|
|
|
|
ptrVoE = VoiceEngine::Create();
|
|
numberOfErrors += ViETest::TestError(ptrVoE != NULL,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
ptrVoEBase = VoEBase::GetInterface(ptrVoE);
|
|
numberOfErrors += ViETest::TestError(ptrVoEBase != NULL,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
error = ptrVoEBase->Init();
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
audioChannel = ptrVoEBase->CreateChannel();
|
|
numberOfErrors += ViETest::TestError(audioChannel != -1,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
// Connect before setting VoE
|
|
error = ptrViEBase->ConnectAudioChannel(videoChannel, audioChannel);
|
|
numberOfErrors += ViETest::TestError(error != 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViEBase->SetVoiceEngine(ptrVoE);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViEBase->ConnectAudioChannel(videoChannel, audioChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
//***************************************************************
|
|
// Testing finished. Tear down Video Engine
|
|
//***************************************************************
|
|
|
|
error = ptrViEBase->DisconnectAudioChannel(videoChannel + 5);
|
|
numberOfErrors += ViETest::TestError(error != 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViEBase->DisconnectAudioChannel(videoChannel);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
error = ptrViEBase->SetVoiceEngine(NULL);
|
|
numberOfErrors += ViETest::TestError(error == 0, "ERROR: %s at line %d",
|
|
__FUNCTION__, __LINE__);
|
|
|
|
ViEBase* ptrViEBase2 = ViEBase::GetInterface(ptrViE);
|
|
numberOfErrors += ViETest::TestError(ptrViEBase != NULL,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
int remainingInterfaces = ptrViEBase->Release();
|
|
numberOfErrors += ViETest::TestError(remainingInterfaces == 1,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
bool vieDeleted = VideoEngine::Delete(ptrViE);
|
|
numberOfErrors += ViETest::TestError(vieDeleted == false,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
remainingInterfaces = ptrViEBase->Release();
|
|
numberOfErrors += ViETest::TestError(remainingInterfaces == 0,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
vieDeleted = VideoEngine::Delete(ptrViE);
|
|
numberOfErrors += ViETest::TestError(vieDeleted == true,
|
|
"ERROR: %s at line %d", __FUNCTION__,
|
|
__LINE__);
|
|
|
|
if (numberOfErrors > 0)
|
|
{
|
|
ViETest::Log(" ");
|
|
ViETest::Log(" ERROR ViEBase API Test FAILED! ");
|
|
ViETest::Log(" Number of errors: %d", numberOfErrors);
|
|
ViETest::Log("========================================");
|
|
ViETest::Log(" ");
|
|
|
|
return numberOfErrors;
|
|
}
|
|
|
|
ViETest::Log(" ");
|
|
ViETest::Log(" ViEBase API Test PASSED!");
|
|
ViETest::Log("========================================");
|
|
ViETest::Log(" ");
|
|
|
|
return 0;
|
|
}
|