From 953368bf73e2f0e365d5d3ea3787f73d1dc264c1 Mon Sep 17 00:00:00 2001 From: "mflodman@webrtc.org" Date: Fri, 28 Sep 2012 12:34:25 +0000 Subject: [PATCH] Remove unused video tests. Review URL: https://webrtc-codereview.appspot.com/841010 git-svn-id: http://webrtc.googlecode.com/svn/trunk@2843 4adac7df-926f-26a2-2b94-8c16560cd09d --- .../main/test/SimpleCocoaGUI/GUI_Defines.h | 36 - .../SimpleCocoaGUI/SimpleCocoaGUI-Info.plist | 32 - .../SimpleCocoaGUIAppDelegate.h | 77 - .../SimpleCocoaGUIAppDelegate.mm | 1075 -------------- .../SimpleCocoaGUI/SimpleCocoaGUI_Prefix.pch | 7 - .../main/test/SimpleCocoaGUI/main.m | 12 - .../main/test/WindowsTest/Capture.rc | 255 ---- .../test/WindowsTest/CaptureDevicePool.cc | 93 -- .../main/test/WindowsTest/CaptureDevicePool.h | 49 - .../main/test/WindowsTest/ChannelDlg.cc | 1271 ----------------- .../main/test/WindowsTest/ChannelDlg.h | 273 ---- .../main/test/WindowsTest/ChannelPool.cc | 40 - .../main/test/WindowsTest/ChannelPool.h | 36 - .../main/test/WindowsTest/StdAfx.h | 37 - .../main/test/WindowsTest/VideoSize.h | 53 - .../main/test/WindowsTest/WindowsTest.cc | 114 -- .../main/test/WindowsTest/WindowsTest.h | 61 - .../test/WindowsTest/WindowsTestMainDlg.cc | 142 -- .../test/WindowsTest/WindowsTestMainDlg.h | 72 - .../test/WindowsTest/WindowsTestResouce.rc | 101 -- .../test/WindowsTest/WindowsTestResource.h | 28 - .../test/WindowsTest/captureDeviceImage.jpg | Bin 10742 -> 0 bytes .../test/WindowsTest/renderStartImage.jpg | Bin 10274 -> 0 bytes .../test/WindowsTest/renderTimeoutImage.jpg | Bin 10554 -> 0 bytes .../main/test/WindowsTest/res/Capture.rc2 | 13 - .../main/test/WindowsTest/resource.h | 58 - .../test/WindowsTest/tbExternalTransport.cc | 313 ---- .../test/WindowsTest/tbExternalTransport.h | 106 -- .../main/test/WindowsTest/videosize.cc | 140 -- .../main/test/WindowsTest/windowstest.gypi | 86 -- src/video_engine/video_engine.gyp | 1 - 31 files changed, 4581 deletions(-) delete mode 100644 src/video_engine/main/test/SimpleCocoaGUI/GUI_Defines.h delete mode 100644 src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUI-Info.plist delete mode 100644 src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUIAppDelegate.h delete mode 100644 src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUIAppDelegate.mm delete mode 100644 src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUI_Prefix.pch delete mode 100644 src/video_engine/main/test/SimpleCocoaGUI/main.m delete mode 100644 src/video_engine/main/test/WindowsTest/Capture.rc delete mode 100644 src/video_engine/main/test/WindowsTest/CaptureDevicePool.cc delete mode 100644 src/video_engine/main/test/WindowsTest/CaptureDevicePool.h delete mode 100644 src/video_engine/main/test/WindowsTest/ChannelDlg.cc delete mode 100644 src/video_engine/main/test/WindowsTest/ChannelDlg.h delete mode 100644 src/video_engine/main/test/WindowsTest/ChannelPool.cc delete mode 100644 src/video_engine/main/test/WindowsTest/ChannelPool.h delete mode 100644 src/video_engine/main/test/WindowsTest/StdAfx.h delete mode 100644 src/video_engine/main/test/WindowsTest/VideoSize.h delete mode 100644 src/video_engine/main/test/WindowsTest/WindowsTest.cc delete mode 100644 src/video_engine/main/test/WindowsTest/WindowsTest.h delete mode 100644 src/video_engine/main/test/WindowsTest/WindowsTestMainDlg.cc delete mode 100644 src/video_engine/main/test/WindowsTest/WindowsTestMainDlg.h delete mode 100644 src/video_engine/main/test/WindowsTest/WindowsTestResouce.rc delete mode 100644 src/video_engine/main/test/WindowsTest/WindowsTestResource.h delete mode 100644 src/video_engine/main/test/WindowsTest/captureDeviceImage.jpg delete mode 100644 src/video_engine/main/test/WindowsTest/renderStartImage.jpg delete mode 100644 src/video_engine/main/test/WindowsTest/renderTimeoutImage.jpg delete mode 100644 src/video_engine/main/test/WindowsTest/res/Capture.rc2 delete mode 100644 src/video_engine/main/test/WindowsTest/resource.h delete mode 100644 src/video_engine/main/test/WindowsTest/tbExternalTransport.cc delete mode 100644 src/video_engine/main/test/WindowsTest/tbExternalTransport.h delete mode 100644 src/video_engine/main/test/WindowsTest/videosize.cc delete mode 100644 src/video_engine/main/test/WindowsTest/windowstest.gypi diff --git a/src/video_engine/main/test/SimpleCocoaGUI/GUI_Defines.h b/src/video_engine/main/test/SimpleCocoaGUI/GUI_Defines.h deleted file mode 100644 index 83828441b9..0000000000 --- a/src/video_engine/main/test/SimpleCocoaGUI/GUI_Defines.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -/* - * GUI_Defines.h - * - */ - - -#ifndef WEBRTC_VIDEO_ENGINE_MAIN_TEST_SIMPLECOCOAGUI_GUI_DEFINES_H_ -#define WEBRTC_VIDEO_ENGINE_MAIN_TEST_SIMPLECOCOAGUI_GUI_DEFINES_H_ - -#define ViE_TEST(x) if(-1 == x){ \ -int errNum = _ptrViEBase->LastError(); \ -NSLog(@"ERROR: %d at %s:%d", errNum, __FUNCTION__, __LINE__); \ -} - - -// Video Engine Related -#define V_CAPTURE_DEVICE_INDEX 0 -#define V_VIE_CAPTURE_ID 747 -#define V_DEVICE_NAME_LENGTH 256 -#define V_CODEC_INDEX 2 -#define V_IP_ADDRESS "127.0.0.1" -#define V_RTP_PORT 8000 - - - -#endif // WEBRTC_VIDEO_ENGINE_MAIN_TEST_SIMPLECOCOAGUI_GUI_DEFINES_H_ diff --git a/src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUI-Info.plist b/src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUI-Info.plist deleted file mode 100644 index d0d3a18fe4..0000000000 --- a/src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUI-Info.plist +++ /dev/null @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIconFile - - CFBundleIdentifier - com.yourcompany.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - LSMinimumSystemVersion - ${MACOSX_DEPLOYMENT_TARGET} - NSMainNibFile - SimpleCocoaGUI - NSPrincipalClass - NSApplication - - diff --git a/src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUIAppDelegate.h b/src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUIAppDelegate.h deleted file mode 100644 index 10d52fc5ec..0000000000 --- a/src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUIAppDelegate.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -// -// SimpleCocoaGUIAppDelegate.h -// - -#import -#include -using namespace std; - -@class ViECocoaRenderView; - -#include "GUI_Defines.h" - -#include "common_types.h" -#include "voe_base.h" - -#include "vie_base.h" -#include "vie_capture.h" -#include "vie_codec.h" -#include "vie_file.h" -#include "vie_network.h" -#include "vie_render.h" -#include "vie_rtp_rtcp.h" -#include "vie_errors.h" - - - -@interface SimpleCocoaGUIAppDelegate : NSObject { - NSWindow* _window; - IBOutlet NSOpenGLView* _vieCocoaRenderView1; - IBOutlet NSOpenGLView* _vieCocoaRenderView2; - IBOutlet NSButton* _butRestartLoopback; - VideoEngine* _ptrViE; - ViEBase* _ptrViEBase; - ViECapture* _ptrViECapture; - ViERender* _ptrViERender; - ViECodec* _ptrViECodec; - ViENetwork* _ptrViENetwork; - - bool _fullScreen; - int _videoChannel; - - int _captureId; - - VideoEngine* ptrViE; - ViEBase* ptrViEBase; - ViECapture* ptrViECapture; - ViERTP_RTCP* ptrViERtpRtcp; - ViERender* ptrViERender; - ViECodec* ptrViECodec; - ViENetwork* ptrViENetwork; -} - -@property (assign) IBOutlet NSWindow* window; --(void)createUI:(bool)fullScreen; --(void)initViECocoaTest; --(void)initializeVariables; --(void)NSLogVideoCodecs; --(void)startViECocoaTest; --(int)initLoopback; --(int)ioLooback; --(int)startLoopback; --(int)stopLooback; - --(IBAction)handleRestart:(id)sender; - - -@end diff --git a/src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUIAppDelegate.mm b/src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUIAppDelegate.mm deleted file mode 100644 index d594cfe1f3..0000000000 --- a/src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUIAppDelegate.mm +++ /dev/null @@ -1,1075 +0,0 @@ -// -// SimpleCocoaGUIAppDelegate.m -// - -#import "SimpleCocoaGUIAppDelegate.h" - -@implementation SimpleCocoaGUIAppDelegate - -@synthesize window = _window; - -- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { - -// [self initializeVariables]; - [self createUI]; -// [self initViECocoaTest]; -// [self NSLogVideoCodecs]; -// [self startViECocoaTest]; - -// [self startLoopback]; - - [self ioLooback]; -} - --(void)createUI{ - - NSRect outWindow1Frame = NSMakeRect(200, 200, 200, 200); - NSWindow* outWindow1 = [[NSWindow alloc] initWithContentRect:outWindow1Frame styleMask:NSTitledWindowMask backing:NSBackingStoreBuffered defer:NO]; - [outWindow1 orderOut:nil]; - NSRect vieAutotestCocoaRenderView1Frame = NSMakeRect(0, 0, 200, 200); - _vieCocoaRenderView1 = [[ViECocoaRenderView alloc] initWithFrame:vieAutotestCocoaRenderView1Frame]; - [[outWindow1 contentView] addSubview:_vieCocoaRenderView1]; - [outWindow1 setTitle:[NSString stringWithFormat:@"window1"]]; - [outWindow1 makeKeyAndOrderFront:NSApp]; - - - NSRect outWindow2Frame = NSMakeRect(400, 200, 200, 200); - NSWindow* outWindow2 = [[NSWindow alloc] initWithContentRect:outWindow2Frame styleMask:NSTitledWindowMask backing:NSBackingStoreBuffered defer:NO]; - [outWindow2 orderOut:nil]; - NSRect vieAutotestCocoaRenderView2Frame = NSMakeRect(0, 0, 200, 200); - _vieCocoaRenderView2 = [[ViECocoaRenderView alloc] initWithFrame:vieAutotestCocoaRenderView2Frame]; - [[outWindow2 contentView] addSubview:_vieCocoaRenderView2]; - [outWindow2 setTitle:[NSString stringWithFormat:@"window2"]]; - [outWindow2 makeKeyAndOrderFront:NSApp]; - - - - - - - -} - --(void)initViECocoaTest{ - - int _error = 0; - _ptrViE = VideoEngine::Create(); - _ptrViEBase = ViEBase::GetInterface(_ptrViE); - _error = _ptrViEBase->Init(); - - _ptrViECapture = ViECapture::GetInterface(_ptrViE); - _ptrViERender = ViERender::GetInterface(_ptrViE); - _ptrViECodec = ViECodec::GetInterface(_ptrViE); - _ptrViENetwork = ViENetwork::GetInterface(_ptrViE); - - - _error = _ptrViE->SetTraceFile("ViEBaseStandardTest.txt"); - _error = _ptrViE->SetEncryptedTraceFile("ViEBaseStandardTestEncrypted.txt"); - - -} - - --(void)initializeVariables{ - _fullScreen = YES; -} - --(void)NSLogVideoCodecs{ - NSLog(@"Searching for video codecs....."); - - VideoCodec videoCodec; - memset(&videoCodec, 0, sizeof(VideoCodec)); - for(int index = 0; index < _ptrViECodec->NumberOfCodecs(); index++) - { - ViE_TEST(_ptrViECodec->GetCodec(index, videoCodec)); - NSLog(@"Video codec found: %s", videoCodec.plName); - } - -} --(void)startViECocoaTest{ - - - - - int error=0; - - char deviceName[128]; - char deviceUniqueName[512]; - int captureId = 0; - int dummy = 0; - - //ViE_TEST(_ptrViEBase->CreateChannel(_videoChannel)); - //ViE_TEST(_ptrViECapture->GetCaptureDevice(0,deviceName,sizeof(deviceName),deviceUniqueName,sizeof(deviceUniqueName))); - //ViE_TEST(_ptrViECapture->AllocateCaptureDevice(deviceUniqueName,sizeof(deviceUniqueName),captureId)); - //ViE_TEST(_ptrViECapture->AllocateCaptureDevice("dummydevicethatdoesnotexist",sizeof(deviceUniqueName),dummy)); - - char captureDeviceName[V_DEVICE_NAME_LENGTH] = ""; - char captureDeviceUniqueId[V_DEVICE_NAME_LENGTH] = ""; - int captureDeviceId = 0; - - - - ViE_TEST(_ptrViE->SetTraceFilter(webrtc::TR_ALL)); - ViE_TEST(_ptrViE->SetTraceFile("ViECocoaTrace.txt")); - ViE_TEST(_ptrViE->SetEncryptedTraceFile("ViECocoaEncryptedTrace.txt")); - - - - - // base - ViE_TEST(_ptrViEBase->CreateChannel(_videoChannel)); - - // capture device - ViE_TEST(_ptrViECapture->GetCaptureDevice(V_CAPTURE_DEVICE_INDEX, captureDeviceName, V_DEVICE_NAME_LENGTH, captureDeviceUniqueId, V_DEVICE_NAME_LENGTH)); - ViE_TEST(_ptrViECapture->AllocateCaptureDevice(captureDeviceUniqueId, V_DEVICE_NAME_LENGTH, captureDeviceId)); - ViE_TEST(_ptrViECapture->ConnectCaptureDevice(captureDeviceId, _videoChannel)); - ViE_TEST(_ptrViECapture->StartCapture(captureDeviceId)); - - // renderer - ViE_TEST(_ptrViERender->AddRenderer(captureDeviceId, (void*)_vieCocoaRenderView1, 0, 0.0, 0.0, 1.0, 1.0)); - ViE_TEST(_ptrViERender->StartRender(captureDeviceId)); -// usleep(3 * 1000); -// ViE_TEST(_ptrViERender->RemoveRenderer(captureDeviceId)); - //exit(0); - - -// // codec -// [self NSLogVideoCodecs]; -// VideoCodec videoCodec; -// memset(&videoCodec, 0, sizeof(VideoCodec)); -// ViE_TEST(_ptrViECodec->GetCodec(V_CODEC_INDEX, videoCodec)); -// ViE_TEST(_ptrViECodec->SetReceiveCodec(_videoChannel, videoCodec)); -// ViE_TEST(_ptrViECodec->SetSendCodec(_videoChannel, videoCodec)); -// -// // network + base -// ViE_TEST(_ptrViENetwork->SetLocalReceiver(_videoChannel, V_RTP_PORT)); -// ViE_TEST(_ptrViEBase->StartReceive(_videoChannel)); -// ViE_TEST(_ptrViENetwork->SetSendDestination(_videoChannel, V_IP_ADDRESS, V_RTP_PORT)); -// ViE_TEST(_ptrViEBase->StartSend(_videoChannel)); -// ViE_TEST(_ptrViERender->MirrorRenderStream(captureDeviceId, true, false, true)); - - -} - --(int)initLoopback -{ - -} --(int)startLoopback -{ - //******************************************************** - // Begin create/initialize Video Engine for testing - //******************************************************** - - int error = 0; - bool succeeded = true; - int numberOfErrors = 0; - std::string str; - - // - // Create a VideoEngine instance - // -// VideoEngine* ptrViE = NULL; - ptrViE = VideoEngine::Create(); - if (ptrViE == NULL) - { - printf("ERROR in VideoEngine::Create\n"); - return -1; - } - - error = ptrViE->SetTraceFilter(webrtc::TR_ALL); - if (error == -1) - { - printf("ERROR in VideoEngine::SetTraceLevel\n"); - return -1; - } - - - error = ptrViE->SetTraceFile("ViETrace.txt"); - if (error == -1) - { - printf("ERROR in VideoEngine::SetTraceFile\n"); - return -1; - } - - error = ptrViE->SetEncryptedTraceFile("ViEEncryptedTrace.txt"); - if (error == -1) - { - printf("ERROR in VideoEngine::SetEncryptedTraceFile\n"); - return -1; - } - - // - // Init VideoEngine and create a channel - // - ptrViEBase = ViEBase::GetInterface(ptrViE); - if (ptrViEBase == NULL) - { - printf("ERROR in ViEBase::GetInterface\n"); - return -1; - } - - error = ptrViEBase->Init(); - if (error == -1) - { - printf("ERROR in ViEBase::Init\n"); - return -1; - } - - int videoChannel = -1; - error = ptrViEBase->CreateChannel(_videoChannel); - if (error == -1) - { - printf("ERROR in ViEBase::CreateChannel\n"); - return -1; - } - - // - // List available capture devices, allocate and connect. - // - ptrViECapture = ViECapture::GetInterface(ptrViE); - if (ptrViEBase == NULL) - { - printf("ERROR in ViECapture::GetInterface\n"); - return -1; - } - - const unsigned int KMaxDeviceNameLength = 128; - const unsigned int KMaxUniqueIdLength = 256; - char deviceName[KMaxDeviceNameLength]; - memset(deviceName, 0, KMaxDeviceNameLength); - char uniqueId[KMaxUniqueIdLength]; - memset(uniqueId, 0, KMaxUniqueIdLength); - - std::cout << std::endl; - std::cout << "Available capture devices:" << std::endl; - unsigned int captureIdx = 0; - for (captureIdx = 0; - captureIdx < ptrViECapture->NumberOfCaptureDevices(); - captureIdx++) - { - memset(deviceName, 0, KMaxDeviceNameLength); - memset(uniqueId, 0, KMaxUniqueIdLength); - - error = ptrViECapture->GetCaptureDevice(captureIdx, - deviceName, KMaxDeviceNameLength, uniqueId, KMaxUniqueIdLength); - if (error == -1) - { - printf("ERROR in ViECapture::GetCaptureDevice\n"); - return -1; - } - std::cout << " " << captureIdx+1 << ". " << deviceName - << std::endl; - } - std::cout << std::endl; - std::cout << "Choose capture devices: "; -// std::getline(std::cin, str); -// captureIdx = atoi(str.c_str()) - 1; - captureIdx = 0; - error = ptrViECapture->GetCaptureDevice(captureIdx, deviceName, - KMaxDeviceNameLength, uniqueId, KMaxUniqueIdLength); - if (error == -1) - { - printf("ERROR in ViECapture::GetCaptureDevice\n"); - return -1; - } - - _captureId = 0; - error = ptrViECapture->AllocateCaptureDevice(uniqueId, - KMaxUniqueIdLength, _captureId); - if (error == -1) - { - printf("ERROR in ViECapture::AllocateCaptureDevice\n"); - return -1; - } - - error = ptrViECapture->ConnectCaptureDevice(_captureId, - _videoChannel); - if (error == -1) - { - printf("ERROR in ViECapture::ConnectCaptureDevice\n"); - return -1; - } - - error = ptrViECapture->StartCapture(_captureId); - if (error == -1) - { - printf("ERROR in ViECapture::StartCapture\n"); - return -1; - } - - // - // RTP/RTCP settings - // - ptrViERtpRtcp = ViERTP_RTCP::GetInterface(ptrViE); - if (ptrViERtpRtcp == NULL) - { - printf("ERROR in ViERTP_RTCP::GetInterface\n"); - return -1; - } - - error = ptrViERtpRtcp->SetRTCPStatus(_videoChannel, - kRtcpCompound_RFC4585); - if (error == -1) - { - printf("ERROR in ViERTP_RTCP::SetRTCPStatus\n"); - return -1; - } - - error = ptrViERtpRtcp->SetKeyFrameRequestMethod(_videoChannel, - kViEKeyFrameRequestPliRtcp); - if (error == -1) - { - printf("ERROR in ViERTP_RTCP::SetKeyFrameRequestMethod\n"); - return -1; - } - - error = ptrViERtpRtcp->SetTMMBRStatus(_videoChannel, true); - if (error == -1) - { - printf("ERROR in ViERTP_RTCP::SetTMMBRStatus\n"); - return -1; - } - - // - // Set up rendering - // - ptrViERender = ViERender::GetInterface(ptrViE); - if (ptrViERender == NULL) - { - printf("ERROR in ViERender::GetInterface\n"); - return -1; - } - - error = ptrViERender->AddRenderer(_captureId, _vieCocoaRenderView1, - 0, 0.0, 0.0, 1.0, 1.0); - if (error == -1) - { - printf("ERROR in ViERender::AddRenderer\n"); - return -1; - } - - error = ptrViERender->StartRender(_captureId); - if (error == -1) - { - printf("ERROR in ViERender::StartRender\n"); - return -1; - } - - error = ptrViERender->AddRenderer(_videoChannel, _vieCocoaRenderView2, - 1, 0.0, 0.0, 1.0, 1.0); - if (error == -1) - { - printf("ERROR in ViERender::AddRenderer\n"); - return -1; - } - - error = ptrViERender->StartRender(_videoChannel); - if (error == -1) - { - printf("ERROR in ViERender::StartRender\n"); - return -1; - } - - // - // Setup codecs - // - ptrViECodec = ViECodec::GetInterface(ptrViE); - if (ptrViECodec == NULL) - { - printf("ERROR in ViECodec::GetInterface\n"); - return -1; - } - - std::cout << std::endl; - std::cout << "Available codecs:" << std::endl; - - // Check available codecs and prepare receive codecs - VideoCodec videoCodec; - memset(&videoCodec, 0, sizeof(VideoCodec)); - unsigned int codecIdx = 0; - for (codecIdx = 0; - codecIdx < ptrViECodec->NumberOfCodecs(); - codecIdx++) - { - error = ptrViECodec->GetCodec(codecIdx, videoCodec); - if (error == -1) - { - printf("ERROR in ViECodec::GetCodec\n"); - return -1; - } - - error = ptrViECodec->SetReceiveCodec(_videoChannel, - videoCodec); - if (error == -1) - { - printf("ERROR in ViECodec::SetReceiveCodec\n"); - return -1; - } - if (videoCodec.codecType != kVideoCodecRED && - videoCodec.codecType != kVideoCodecULPFEC) - { - std::cout << " " << codecIdx+1 << ". " << videoCodec.plName - << std::endl; - } - } -// std::cout << std::endl; -// std::cout << "Choose codec: "; -// std::getline(std::cin, str); -// codecIdx = atoi(str.c_str()) - 1; - codecIdx = 0; - - error = ptrViECodec->GetCodec(codecIdx, videoCodec); - if (error == -1) - { - printf("ERROR in ViECodec::GetCodec\n"); - return -1; - } - - error = ptrViECodec->SetSendCodec(_videoChannel, videoCodec); - if (error == -1) - { - printf("ERROR in ViECodec::SetSendCodec\n"); - return -1; - } - - // - // Address settings - // - ptrViENetwork = ViENetwork::GetInterface(ptrViE); - if (ptrViENetwork == NULL) - { - printf("ERROR in ViENetwork::GetInterface\n"); - return -1; - } - - const char* ipAddress = "127.0.0.1"; - const unsigned short rtpPort = 6000; - error = ptrViENetwork->SetLocalReceiver(_videoChannel, rtpPort); - if (error == -1) - { - printf("ERROR in ViENetwork::SetLocalReceiver\n"); - return -1; - } - - error = ptrViEBase->StartReceive(_videoChannel); - if (error == -1) - { - printf("ERROR in ViENetwork::StartReceive\n"); - return -1; - } - - error = ptrViENetwork->SetSendDestination(_videoChannel, - ipAddress, rtpPort); - if (error == -1) - { - printf("ERROR in ViENetwork::SetSendDestination\n"); - return -1; - } - - error = ptrViEBase->StartSend(_videoChannel); - if (error == -1) - { - printf("ERROR in ViENetwork::StartSend\n"); - return -1; - } - - - //******************************************************** - // Engine started - //******************************************************** - - - // Call started - std::cout << std::endl; - std::cout << "Loopback call started" << std::endl; -// std::cout << std::endl << std::endl; -// std::cout << "Press enter to stop..."; -// std::getline(std::cin, str); -} - --(int)stopLooback -{ - int error = 0; - - - - //******************************************************** - // Testing finished. Tear down Video Engine - //******************************************************** - - error = ptrViEBase->StopReceive(_videoChannel); - if (error == -1) - { - printf("ERROR in ViEBase::StopReceive\n"); - return -1; - } - - error = ptrViEBase->StopSend(_videoChannel); - if (error == -1) - { - printf("ERROR in ViEBase::StopSend\n"); - return -1; - } - - error = ptrViERender->StopRender(_captureId); - if (error == -1) - { - printf("ERROR in ViERender::StopRender\n"); - return -1; - } - - error = ptrViERender->RemoveRenderer(_captureId); - if (error == -1) - { - printf("ERROR in ViERender::RemoveRenderer\n"); - return -1; - } - - error = ptrViERender->StopRender(_videoChannel); - if (error == -1) - { - printf("ERROR in ViERender::StopRender\n"); - return -1; - } - - error = ptrViERender->RemoveRenderer(_videoChannel); - if (error == -1) - { - printf("ERROR in ViERender::RemoveRenderer\n"); - return -1; - } - - error = ptrViECapture->StopCapture(_captureId); - if (error == -1) - { - printf("ERROR in ViECapture::StopCapture\n"); - return -1; - } - - error = ptrViECapture->DisconnectCaptureDevice(_videoChannel); - if (error == -1) - { - printf("ERROR in ViECapture::DisconnectCaptureDevice\n"); - return -1; - } - - error = ptrViECapture->ReleaseCaptureDevice(_captureId); - if (error == -1) - { - printf("ERROR in ViECapture::ReleaseCaptureDevice\n"); - return -1; - } - - error = ptrViEBase->DeleteChannel(_videoChannel); - if (error == -1) - { - printf("ERROR in ViEBase::DeleteChannel\n"); - return -1; - } - - int remainingInterfaces = 0; - remainingInterfaces = ptrViECodec->Release(); - remainingInterfaces += ptrViECapture->Release(); - remainingInterfaces += ptrViERtpRtcp->Release(); - remainingInterfaces += ptrViERender->Release(); - remainingInterfaces += ptrViENetwork->Release(); - remainingInterfaces += ptrViEBase->Release(); - if (remainingInterfaces > 0) - { - printf("ERROR: Could not release all interfaces\n"); - return -1; - } - - bool deleted = VideoEngine::Delete(ptrViE); - if (deleted == false) - { - printf("ERROR in VideoEngine::Delete\n"); - return -1; - } - - return 0; - - // =================================================================== - // - // END: VideoEngine 3.0 Sample Code - // - // =================================================================== - - -} - --(int)ioLooback -{ - //******************************************************** - // Begin create/initialize Video Engine for testing - //******************************************************** - - int error = 0; - bool succeeded = true; - int numberOfErrors = 0; - std::string str; - - // - // Create a VideoEngine instance - // - VideoEngine* ptrViE = NULL; - ptrViE = VideoEngine::Create(); - if (ptrViE == NULL) - { - printf("ERROR in VideoEngine::Create\n"); - return -1; - } - - error = ptrViE->SetTraceFilter(webrtc::TR_ALL); - if (error == -1) - { - printf("ERROR in VideoEngine::SetTraceLevel\n"); - return -1; - } - - - error = ptrViE->SetTraceFile("ViETrace.txt"); - if (error == -1) - { - printf("ERROR in VideoEngine::SetTraceFile\n"); - return -1; - } - - error = ptrViE->SetEncryptedTraceFile("ViEEncryptedTrace.txt"); - if (error == -1) - { - printf("ERROR in VideoEngine::SetEncryptedTraceFile\n"); - return -1; - } - - // - // Init VideoEngine and create a channel - // - ViEBase* ptrViEBase = ViEBase::GetInterface(ptrViE); - if (ptrViEBase == NULL) - { - printf("ERROR in ViEBase::GetInterface\n"); - return -1; - } - - error = ptrViEBase->Init(); - if (error == -1) - { - printf("ERROR in ViEBase::Init\n"); - return -1; - } - - int videoChannel = -1; - error = ptrViEBase->CreateChannel(videoChannel); - if (error == -1) - { - printf("ERROR in ViEBase::CreateChannel\n"); - return -1; - } - - // - // List available capture devices, allocate and connect. - // - ViECapture* ptrViECapture = - ViECapture::GetInterface(ptrViE); - if (ptrViEBase == NULL) - { - printf("ERROR in ViECapture::GetInterface\n"); - return -1; - } - - const unsigned int KMaxDeviceNameLength = 128; - const unsigned int KMaxUniqueIdLength = 256; - char deviceName[KMaxDeviceNameLength]; - memset(deviceName, 0, KMaxDeviceNameLength); - char uniqueId[KMaxUniqueIdLength]; - memset(uniqueId, 0, KMaxUniqueIdLength); - - std::cout << std::endl; - std::cout << "Available capture devices:" << std::endl; - unsigned int captureIdx = 0; - for (captureIdx = 0; - captureIdx < ptrViECapture->NumberOfCaptureDevices(); - captureIdx++) - { - memset(deviceName, 0, KMaxDeviceNameLength); - memset(uniqueId, 0, KMaxUniqueIdLength); - - error = ptrViECapture->GetCaptureDevice(captureIdx, - deviceName, KMaxDeviceNameLength, uniqueId, KMaxUniqueIdLength); - if (error == -1) - { - printf("ERROR in ViECapture::GetCaptureDevice\n"); - return -1; - } - std::cout << " " << captureIdx+1 << ". " << deviceName - << std::endl; - } - std::cout << std::endl; - std::cout << "Choose capture devices: "; -// std::getline(std::cin, str); -// captureIdx = atoi(str.c_str()) - 1; - captureIdx = 0; - error = ptrViECapture->GetCaptureDevice(captureIdx, deviceName, - KMaxDeviceNameLength, uniqueId, KMaxUniqueIdLength); - if (error == -1) - { - printf("ERROR in ViECapture::GetCaptureDevice\n"); - return -1; - } - - int captureId = 0; - error = ptrViECapture->AllocateCaptureDevice(uniqueId, - KMaxUniqueIdLength, captureId); - if (error == -1) - { - printf("ERROR in ViECapture::AllocateCaptureDevice\n"); - return -1; - } - - error = ptrViECapture->ConnectCaptureDevice(captureId, - videoChannel); - if (error == -1) - { - printf("ERROR in ViECapture::ConnectCaptureDevice\n"); - return -1; - } - - error = ptrViECapture->StartCapture(captureId); - if (error == -1) - { - printf("ERROR in ViECapture::StartCapture\n"); - return -1; - } - - // - // RTP/RTCP settings - // - ViERTP_RTCP* ptrViERtpRtcp = - ViERTP_RTCP::GetInterface(ptrViE); - if (ptrViERtpRtcp == NULL) - { - printf("ERROR in ViERTP_RTCP::GetInterface\n"); - return -1; - } - - error = ptrViERtpRtcp->SetRTCPStatus(videoChannel, - kRtcpCompound_RFC4585); - if (error == -1) - { - printf("ERROR in ViERTP_RTCP::SetRTCPStatus\n"); - return -1; - } - - error = ptrViERtpRtcp->SetKeyFrameRequestMethod(videoChannel, - kViEKeyFrameRequestPliRtcp); - if (error == -1) - { - printf("ERROR in ViERTP_RTCP::SetKeyFrameRequestMethod\n"); - return -1; - } - - error = ptrViERtpRtcp->SetTMMBRStatus(videoChannel, true); - if (error == -1) - { - printf("ERROR in ViERTP_RTCP::SetTMMBRStatus\n"); - return -1; - } - - // - // Set up rendering - // - ViERender* ptrViERender = - ViERender::GetInterface(ptrViE); - if (ptrViERender == NULL) - { - printf("ERROR in ViERender::GetInterface\n"); - return -1; - } - -// error = ptrViERender->EnableFullScreenRender(_vieCocoaRenderView1); -// if (error == -1) -// { -// printf("ERROR in ViERender::AddRenderer\n"); -// return -1; -// } - - - error = ptrViERender->AddRenderer(captureId, _vieCocoaRenderView1, - 0, 0.5, 0.5, 1.0, 1.0); - if (error == -1) - { - printf("ERROR in ViERender::AddRenderer\n"); - return -1; - } - - error = ptrViERender->StartRender(captureId); - if (error == -1) - { - printf("ERROR in ViERender::StartRender\n"); - return -1; - } - - error = ptrViERender->AddRenderer(videoChannel, _vieCocoaRenderView2, - 1, 0.0, 0.0, 1.0, 1.0); - if (error == -1) - { - printf("ERROR in ViERender::AddRenderer\n"); - return -1; - } - - error = ptrViERender->StartRender(videoChannel); - if (error == -1) - { - printf("ERROR in ViERender::StartRender\n"); - return -1; - } - - // - // Setup codecs - // - ViECodec* ptrViECodec = ViECodec::GetInterface(ptrViE); - if (ptrViECodec == NULL) - { - printf("ERROR in ViECodec::GetInterface\n"); - return -1; - } - - std::cout << std::endl; - std::cout << "Available codecs:" << std::endl; - - // Check available codecs and prepare receive codecs - VideoCodec videoCodec; - memset(&videoCodec, 0, sizeof(VideoCodec)); - unsigned int codecIdx = 0; - for (codecIdx = 0; - codecIdx < ptrViECodec->NumberOfCodecs(); - codecIdx++) - { - error = ptrViECodec->GetCodec(codecIdx, videoCodec); - if (error == -1) - { - printf("ERROR in ViECodec::GetCodec\n"); - return -1; - } - - error = ptrViECodec->SetReceiveCodec(videoChannel, - videoCodec); - if (error == -1) - { - printf("ERROR in ViECodec::SetReceiveCodec\n"); - return -1; - } - if (videoCodec.codecType != kVideoCodecRED && - videoCodec.codecType != kVideoCodecULPFEC) - { - std::cout << " " << codecIdx+1 << ". " << videoCodec.plName - << std::endl; - } - } - std::cout << std::endl; - std::cout << "Choose codec: "; -// std::getline(std::cin, str); -// codecIdx = atoi(str.c_str()) - 1; - - - error = ptrViECapture->ShowCaptureSettingsDialogBox("unique",10, "mytitle"); - codecIdx = 0; - error = ptrViECodec->GetCodec(codecIdx, videoCodec); - if (error == -1) - { - printf("ERROR in ViECodec::GetCodec\n"); - return -1; - } - - error = ptrViECodec->SetSendCodec(videoChannel, videoCodec); - if (error == -1) - { - printf("ERROR in ViECodec::SetSendCodec\n"); - return -1; - } - - // - // Address settings - // - ViENetwork* ptrViENetwork = - ViENetwork::GetInterface(ptrViE); - if (ptrViENetwork == NULL) - { - printf("ERROR in ViENetwork::GetInterface\n"); - return -1; - } - - const char* ipAddress = "127.0.0.1"; - const unsigned short rtpPort = 6000; - error = ptrViENetwork->SetLocalReceiver(videoChannel, rtpPort); - if (error == -1) - { - printf("ERROR in ViENetwork::SetLocalReceiver\n"); - return -1; - } - - error = ptrViEBase->StartReceive(videoChannel); - if (error == -1) - { - printf("ERROR in ViENetwork::StartReceive\n"); - return -1; - } - - error = ptrViENetwork->SetSendDestination(videoChannel, - ipAddress, rtpPort); - if (error == -1) - { - printf("ERROR in ViENetwork::SetSendDestination\n"); - return -1; - } - - error = ptrViEBase->StartSend(videoChannel); - if (error == -1) - { - printf("ERROR in ViENetwork::StartSend\n"); - return -1; - } - - - //******************************************************** - // Engine started - //******************************************************** - - - // Call started - std::cout << std::endl; - std::cout << "Loopback call started" << std::endl; - std::cout << std::endl << std::endl; - std::cout << "Press enter to stop..."; -// [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; -// std::getline(std::cin, str); - usleep(5 * 1000 * 1000); - - //int i = 0; -// while(1) -// { -// NSLog(@"app iteration %d", i); -// i++; -// [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; -// std::getline(std::cin, str); -// if(i > 3) -// { -// break; -// } -// } - - //******************************************************** - // Testing finished. Tear down Video Engine - //******************************************************** - - error = ptrViEBase->StopReceive(videoChannel); - if (error == -1) - { - printf("ERROR in ViEBase::StopReceive\n"); - return -1; - } - - error = ptrViEBase->StopSend(videoChannel); - if (error == -1) - { - printf("ERROR in ViEBase::StopSend\n"); - return -1; - } - - error = ptrViERender->StopRender(captureId); - if (error == -1) - { - printf("ERROR in ViERender::StopRender\n"); - return -1; - } - - error = ptrViERender->RemoveRenderer(captureId); - if (error == -1) - { - printf("ERROR in ViERender::RemoveRenderer\n"); - return -1; - } - - error = ptrViERender->StopRender(videoChannel); - if (error == -1) - { - printf("ERROR in ViERender::StopRender\n"); - return -1; - } - - error = ptrViERender->RemoveRenderer(videoChannel); - if (error == -1) - { - printf("ERROR in ViERender::RemoveRenderer\n"); - return -1; - } - - error = ptrViECapture->StopCapture(captureId); - if (error == -1) - { - printf("ERROR in ViECapture::StopCapture\n"); - return -1; - } - - error = ptrViECapture->DisconnectCaptureDevice(videoChannel); - if (error == -1) - { - printf("ERROR in ViECapture::DisconnectCaptureDevice\n"); - return -1; - } - - error = ptrViECapture->ReleaseCaptureDevice(captureId); - if (error == -1) - { - printf("ERROR in ViECapture::ReleaseCaptureDevice\n"); - return -1; - } - - error = ptrViEBase->DeleteChannel(videoChannel); - if (error == -1) - { - printf("ERROR in ViEBase::DeleteChannel\n"); - return -1; - } - - int remainingInterfaces = 0; - remainingInterfaces = ptrViECodec->Release(); - remainingInterfaces += ptrViECapture->Release(); - remainingInterfaces += ptrViERtpRtcp->Release(); - remainingInterfaces += ptrViERender->Release(); - remainingInterfaces += ptrViENetwork->Release(); - remainingInterfaces += ptrViEBase->Release(); - if (remainingInterfaces > 0) - { - printf("ERROR: Could not release all interfaces\n"); - return -1; - } - - bool deleted = VideoEngine::Delete(ptrViE); - if (deleted == false) - { - printf("ERROR in VideoEngine::Delete\n"); - return -1; - } - - NSLog(@"Finished function"); - return 0; - - // - // END: VideoEngine 3.0 Sample Code - // - // =================================================================== -} - - - - --(IBAction)handleRestart:(id)sender -{ -// [self stopLooback]; -// [self startLoopback]; - [self ioLooback]; -} -@end diff --git a/src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUI_Prefix.pch b/src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUI_Prefix.pch deleted file mode 100644 index 72b5870875..0000000000 --- a/src/video_engine/main/test/SimpleCocoaGUI/SimpleCocoaGUI_Prefix.pch +++ /dev/null @@ -1,7 +0,0 @@ -// -// Prefix header for all source files of the 'SimpleCocoaGUI' target in the 'SimpleCocoaGUI' project -// - -#ifdef __OBJC__ - #import -#endif diff --git a/src/video_engine/main/test/SimpleCocoaGUI/main.m b/src/video_engine/main/test/SimpleCocoaGUI/main.m deleted file mode 100644 index 9d52a1c3ce..0000000000 --- a/src/video_engine/main/test/SimpleCocoaGUI/main.m +++ /dev/null @@ -1,12 +0,0 @@ -// -// main.m -// SimpleCocoaGUI -// -// - -#import - -int main(int argc, char *argv[]) -{ - return NSApplicationMain(argc, (const char **) argv); -} diff --git a/src/video_engine/main/test/WindowsTest/Capture.rc b/src/video_engine/main/test/WindowsTest/Capture.rc deleted file mode 100644 index 962256c6d5..0000000000 --- a/src/video_engine/main/test/WindowsTest/Capture.rc +++ /dev/null @@ -1,255 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Korean resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR) -#ifdef _WIN32 -LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT -#pragma code_page(949) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "#define _AFX_NO_SPLITTER_RESOURCES\r\n" - "#define _AFX_NO_OLE_RESOURCES\r\n" - "#define _AFX_NO_TRACKER_RESOURCES\r\n" - "#define _AFX_NO_PROPERTY_RESOURCES\r\n" - "\r\n" - "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR)\r\n" - "#ifdef _WIN32\r\n" - "LANGUAGE 18, 1\r\n" - "#pragma code_page(949)\r\n" - "#endif //_WIN32\r\n" - "#include ""res\\Capture.rc2"" // non-Microsoft Visual C++ edited resources\r\n" - "#include ""l.kor\\afxres.rc"" // Standard components\r\n" - "#endif\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Version -// - -VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,1 - PRODUCTVERSION 1,0,0,1 - FILEFLAGSMASK 0x3fL -#ifdef _DEBUG - FILEFLAGS 0x1L -#else - FILEFLAGS 0x0L -#endif - FILEOS 0x4L - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN -END - -#endif // Korean resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// Swedish resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_SVE) -#ifdef _WIN32 -LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_SLAVE_CHANNEL DIALOGEX 0, 0, 677, 358 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Slave channel" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - CONTROL "",IDC_IPADDRESS1,"SysIPAddress32",WS_TABSTOP,485,18,105,15 - EDITTEXT IDC_LOCAL_PORT1,631,18,36,16,ES_AUTOHSCROLL - LTEXT "IP-address",IDC_STATIC,495,7,42,9 - LTEXT "Local Port",IDC_STATIC,633,7,37,9 - EDITTEXT IDC_REMOTE_PORT1,593,18,36,16,ES_AUTOHSCROLL - LTEXT "Port",IDC_STATIC,595,7,17,9 - CONTROL "Ext",IDC_EXTTRANSPORT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,489,41,29,12 - LTEXT "delay",IDC_STATIC,589,41,21,9 - COMBOBOX IDC_PACKETLOSS,535,40,45,82,CBS_DROPDOWN | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_DELAY,611,40,45,82,CBS_DROPDOWN | WS_DISABLED | WS_VSCROLL | WS_TABSTOP -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_SLAVE_CHANNEL, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 670 - TOPMARGIN, 7 - BOTTOMMARGIN, 351 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Swedish resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// Neutral (Sys. Default) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEUSD) -#ifdef _WIN32 -LANGUAGE LANG_NEUTRAL, SUBLANG_SYS_DEFAULT -#pragma code_page(1252) -#endif //_WIN32 - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_DXQUALITY_DIALOG DIALOGEX 0, 0, 699, 385 -STYLE DS_ABSALIGN | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_WINDOWEDGE | WS_EX_STATICEDGE | WS_EX_APPWINDOW | WS_EX_NOINHERITLAYOUT -CAPTION "webrtc ViE test program" -FONT 9, "Arial", 400, 0, 0x0 -BEGIN - PUSHBUTTON "Start Send",IDC_STARTSEND,589,270,50,19 - PUSHBUTTON "Stop Send",IDC_STOPSend,639,270,50,19 - PUSHBUTTON "Start Listen",IDC_STARTLISTEN,589,291,50,19 - PUSHBUTTON "StopListen",IDC_STOPLISTEN,639,291,50,19 - CONTROL "",IDC_LIVEVIDEO,"Static",SS_BITMAP | SS_CENTERIMAGE | SS_SUNKEN,450,179,139,101 - COMBOBOX IDC_DEVICE,487,14,185,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - CTEXT "Select Capture Device",IDC_STATIC,485,7,78,8 - COMBOBOX IDC_CODEC_LIST,490,90,58,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT "Codec",IDC_STATIC,490,82,21,8 - COMBOBOX IDC_CODEC_SIZE,627,90,62,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT "Codec Size",IDC_STATIC,611,82,36,8 - CONTROL "",IDC_IPADDRESS1,"SysIPAddress32",WS_TABSTOP,490,46,90,13 - EDITTEXT IDC_LOCAL_PORT1,615,46,31,14,ES_AUTOHSCROLL - LTEXT "IP-address",IDC_STATIC,498,37,36,8 - LTEXT "Local Port",IDC_STATIC,616,36,32,8 - LTEXT "Start Bitrate",IDC_STATIC,553,80,37,8 - COMBOBOX IDC_BITRATE,558,90,49,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_REMOTE_PORT1,582,46,31,14,ES_AUTOHSCROLL - LTEXT "Port",IDC_STATIC,584,37,14,8 - GROUPBOX "Remote client 1",IDC_STATIC,487,27,203,50 - LTEXT "Max FrameRate",IDC_STATIC,488,106,50,8 - COMBOBOX IDC_MIN_FRAME_RATE,488,115,48,82,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - CONTROL "",IDC_CAPTURE,"Static",SS_BITMAP | SS_CENTERIMAGE | SS_REALSIZEIMAGE,7,7,418,276 - CONTROL "TMMBR",IDC_TMMBR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,486,138,40,10 - GROUPBOX "Standard Protection",IDC_STATIC,607,138,72,55 - CONTROL "None",IDC_PROT_NONE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,615,146,33,10 - CONTROL "NACK",IDC_PROT_NACK,"Button",BS_AUTORADIOBUTTON,615,165,35,10 - CONTROL "FEC",IDC_PROT_FEC,"Button",BS_AUTORADIOBUTTON,615,155,30,10 - CONTROL "NACK & FEC",IDC_PROT_NACKFEC,"Button",BS_AUTORADIOBUTTON,615,174,52,10 - COMBOBOX IDC_RTCPMODE,571,119,80,57,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT "RTCP Mode",IDC_STATIC,571,110,39,8 - LISTBOX IDC_INFORMATION,476,309,214,63,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_PACKETBURST,653,118,36,57,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT "Packet Burst",IDC_STATIC,649,109,40,8 - CONTROL "Stop Log",IDC_FREEZELOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,465,292,44,10 - PUSHBUTTON "Version",IDC_VERSION,530,291,55,16 - CONTROL "Ext",IDC_EXTTRANSPORT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,493,66,25,10 - LTEXT "loss",IDC_STATIC,519,66,15,8 - LTEXT "delay",IDC_STATIC,578,66,18,8 - COMBOBOX IDC_PACKETLOSS,533,65,38,82,CBS_DROPDOWN | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - COMBOBOX IDC_DELAY,598,65,38,82,CBS_DROPDOWN | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Record Incoming",IDC_BTN_RECORD_INCOMING,587,198,69,14 - PUSHBUTTON "Record outgoing",IDC_BTN_RECORD_OUTGOING,587,212,69,14 - PUSHBUTTON "Create Slave",IDC_BTN_CREATE_SLAVE,586,231,50,14 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_DXQUALITY_DIALOG, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 690 - VERTGUIDE, 321 - VERTGUIDE, 372 - VERTGUIDE, 425 - VERTGUIDE, 465 - TOPMARGIN, 7 - BOTTOMMARGIN, 372 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Neutral (Sys. Default) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// -#define _AFX_NO_SPLITTER_RESOURCES -#define _AFX_NO_OLE_RESOURCES -#define _AFX_NO_TRACKER_RESOURCES -#define _AFX_NO_PROPERTY_RESOURCES - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_KOR) -#ifdef _WIN32 -LANGUAGE 18, 1 -#pragma code_page(949) -#endif //_WIN32 -#include "res\Capture.rc2" // non-Microsoft Visual C++ edited resources -#include "l.kor\afxres.rc" // Standard components -#endif - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/src/video_engine/main/test/WindowsTest/CaptureDevicePool.cc b/src/video_engine/main/test/WindowsTest/CaptureDevicePool.cc deleted file mode 100644 index d666aa7172..0000000000 --- a/src/video_engine/main/test/WindowsTest/CaptureDevicePool.cc +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include "CaptureDevicePool.h" -#include "map_wrapper.h" -#include -#include -#include "critical_section_wrapper.h" -#include "vie_file.h" - -CaptureDevicePool::CaptureDevicePool(VideoEngine* videoEngine): -_critSect(*CriticalSectionWrapper::CreateCriticalSection()), -_vieCapture(ViECapture::GetInterface(videoEngine)), -_vieFile(ViEFile::GetInterface(videoEngine)) -{ -} - -CaptureDevicePool::~CaptureDevicePool(void) -{ - assert(_deviceMap.Size()==0); - _vieCapture->Release(); - _vieFile->Release(); - delete &_critSect; -} - -WebRtc_Word32 CaptureDevicePool::GetCaptureDevice(int& captureId, const char* uniqeDeviceName) -{ - CriticalSectionScoped cs(_critSect); - DeviceItem* device=NULL; - - for(MapItem* item=_deviceMap.First(); - item!=NULL; - item=_deviceMap.Next(item)) - { - //Found the device? - if(strcmp(uniqeDeviceName,(static_cast( item->GetItem()))->uniqeDeviceName)==0) - { - device=static_cast( item->GetItem()); - device->refCount++; - captureId=device->captureId; - return 0; - } - } - device = new DeviceItem; - strncpy(device->uniqeDeviceName,uniqeDeviceName,255); - - - // Device does not exist. Create it. - WebRtc_Word32 result=_vieCapture->AllocateCaptureDevice(device->uniqeDeviceName,strlen(device->uniqeDeviceName),device->captureId); - if(result==0) - { - result=_vieFile->SetCaptureDeviceImage(device->captureId, - "./main/test/WindowsTest/captureDeviceImage.jpg"); - } - captureId=device->captureId; - _deviceMap.Insert(captureId,device); - device->refCount++; - - return result; - - -} -WebRtc_Word32 CaptureDevicePool::ReturnCaptureDevice(int captureId) -{ - CriticalSectionScoped cs(_critSect); - - MapItem* mapItem=_deviceMap.Find(captureId); - if(!mapItem) - return -1; - - DeviceItem* item=static_cast (mapItem->GetItem()); - if(!item) - return 0; - item->refCount--; - WebRtc_Word32 result=0; - - if(item->refCount==0) - { - result=_vieCapture->ReleaseCaptureDevice(captureId); - - _deviceMap.Erase(mapItem); - delete item; - - } - return result; -} diff --git a/src/video_engine/main/test/WindowsTest/CaptureDevicePool.h b/src/video_engine/main/test/WindowsTest/CaptureDevicePool.h deleted file mode 100644 index 104b84f72b..0000000000 --- a/src/video_engine/main/test/WindowsTest/CaptureDevicePool.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#pragma once - -#include "common_types.h" - -#include "vie_base.h" -#include "vie_capture.h" -#include "vie_file.h" -#include "map_wrapper.h" - -namespace webrtc { -class CriticalSectionWrapper; -} -using namespace webrtc; -class CaptureDevicePool -{ -public: - CaptureDevicePool(VideoEngine* videoEngine); - ~CaptureDevicePool(void); - WebRtc_Word32 GetCaptureDevice(int& captureId, const char uniqeDeviceName[256]); - WebRtc_Word32 ReturnCaptureDevice(int captureId); - - private: - struct DeviceItem - { - int captureId; - WebRtc_Word32 refCount; - char uniqeDeviceName[256]; - DeviceItem() - { - captureId=-1; - refCount=0; - } - }; - CriticalSectionWrapper& _critSect; - ViECapture* _vieCapture; - ViEFile* _vieFile; - MapWrapper _deviceMap; - -}; diff --git a/src/video_engine/main/test/WindowsTest/ChannelDlg.cc b/src/video_engine/main/test/WindowsTest/ChannelDlg.cc deleted file mode 100644 index 50ae26f119..0000000000 --- a/src/video_engine/main/test/WindowsTest/ChannelDlg.cc +++ /dev/null @@ -1,1271 +0,0 @@ -/* - * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include "ChannelDlg.h" -#include "VideoSize.h" -#include "CaptureDevicePool.h" -#include "ChannelPool.h" - -#include -#include - - -#include "assert.h" - - -#include // threads. - -#if defined _WIN32 - #define SLEEP_10_SEC ::Sleep(10000) - #define GET_TIME_IN_MS timeGetTime -#endif - -// Hack to convert char to TCHAR, using two buffers to be able to -// call twice in the same statement -TCHAR convertTemp1[256] = {0}; -TCHAR convertTemp2[256] = {0}; -bool convertBufferSwitch(false); -TCHAR* CharToTchar(const char* str, int len) -{ -#ifdef _UNICODE - TCHAR* temp = convertBufferSwitch ? convertTemp1 : convertTemp2; - convertBufferSwitch = !convertBufferSwitch; - memset(temp, 0, sizeof(convertTemp1)); - MultiByteToWideChar(CP_UTF8, 0, str, len, temp, 256); - return temp; -#else - return str; -#endif -} - -// Hack to convert TCHAR to char -char convertTemp3[256] = {0}; -char* TcharToChar(TCHAR* str, int len) -{ -#ifdef _UNICODE - memset(convertTemp3, 0, sizeof(convertTemp3)); - WideCharToMultiByte(CP_UTF8, 0, str, len, convertTemp3, 256, 0, 0); - return convertTemp3; -#else - return str; -#endif -} - -///////////////////////////////////////////////////////////////////////////// -// CDXChannelDlg dialog - -CDXChannelDlg::CDXChannelDlg(VideoEngine* videoEngine, - CaptureDevicePool& captureDevicePool, - ChannelPool& channelPool, - void* voiceEngine - ,CWnd* pParent,CDXChannelDlgObserver* observer, - int parentChannel/*=-1*/) - : CDialog(CDXChannelDlg::IDD, pParent), - _canAddLog(true), - _dialogObserver(observer), - _videoEngine(videoEngine), - _captureDevicePool(captureDevicePool), - _channelPool(channelPool), - _parentChannel(parentChannel), -#ifndef NO_VOICE_ENGINE - _voiceEngine((VoiceEngine*) voiceEngine), -#endif - _callbackEvent(::CreateEvent( NULL, FALSE, FALSE, NULL)), - _externalTransport(NULL) -{ - strcpy(_logMsg,""); - _channelId = -1; - _audioChannel=-1; - _captureId=-1; - - //{{AFX_DATA_INIT(CDXChannelDlg) - //}}AFX_DATA_INIT - // Note that LoadIcon does not require a subsequent DestroyIcon in Win32 - - InitializeCriticalSection(&_critCallback); - unsigned int threadID; - _callbackThread=(HANDLE)_beginthreadex(NULL,1024*1024,CallbackThread,(void*)this,0, &threadID); -} - -void CDXChannelDlg::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CDXChannelDlg) - DDX_Control(pDX, IDC_DEVICE, m_ctrlDevice); - DDX_Control(pDX, IDC_CODEC_LIST, m_ctrlCodec); - DDX_Control(pDX, IDC_CAPTURE, m_ctrlLiveRemoteVideo); - DDX_Control(pDX, IDC_LIVEVIDEO, m_ctrlLiveVideo); - DDX_Control(pDX, IDC_LOCAL_PORT1, m_localPort1); - DDX_Control(pDX, IDC_REMOTE_PORT1, m_remotePort1); - DDX_Control(pDX, IDC_IPADDRESS1, m_remoteIp1); - DDX_Control(pDX, IDC_CODEC_SIZE, m_ctrlCodecSize); - DDX_Control(pDX, IDC_RTCPMODE, m_ctrlRtcpMode); - DDX_Control(pDX, IDC_PACKETBURST, m_ctrlPacketBurst); - DDX_Control(pDX, IDC_BITRATE, m_ctrlBitrate); - DDX_Control(pDX, IDC_MIN_FRAME_RATE, m_ctrlMinFrameRate); - DDX_Control(pDX, IDC_TMMBR,m_cbTmmbr); - DDX_Control(pDX, IDC_EXTTRANSPORT,m_cbExternalTransport); - DDX_Control(pDX, IDC_PACKETLOSS,m_ctrlPacketLoss); - DDX_Control(pDX, IDC_DELAY,m_ctrlDelay); - DDX_Control(pDX, IDC_FREEZELOG,m_cbFreezeLog); - DDX_Control(pDX,IDC_INFORMATION,m_ctrlInfo); - //}}AFX_DATA_MAP -} - -// ON_WM_SYSKEYDOWN ALT+key - -BEGIN_MESSAGE_MAP(CDXChannelDlg, CDialog) - //{{AFX_MSG_MAP(CDXChannelDlg) - ON_WM_SYSCOMMAND() - ON_WM_RBUTTONUP() - //ON_WM_DEVICECHANGE() - ON_WM_PAINT() - ON_WM_QUERYDRAGICON() - ON_BN_CLICKED(IDC_STARTSEND, OnStartSend) - ON_BN_CLICKED(IDC_STOPSend, OnStopSend) - //ON_WM_TIMER() - ON_WM_DESTROY() - //}}AFX_MSG_MAP - ON_CBN_SELCHANGE(IDC_CODEC_LIST, OnCbnSelchangeCodecList) - ON_CBN_SELCHANGE(IDC_DEVICE, OnCbnSelchangeDevice) - ON_CBN_SELCHANGE(IDC_CODEC_SIZE, OnCbnSelchangeSize) - ON_CBN_SELCHANGE(IDC_BITRATE, OnCbnSelchangeBitrate) - //ON_MESSAGE(WM_DISPLAYCHANGE, OnDisplayChange) - ON_CBN_SELCHANGE(IDC_MIN_FRAME_RATE, OnCbnSelchangeMinFrameRate) - ON_BN_CLICKED(IDC_STARTLISTEN, OnBnClickedStartlisten) - ON_BN_CLICKED(IDC_STOPLISTEN, OnBnClickedStoplisten) - ON_BN_CLICKED(IDC_TMMBR, &CDXChannelDlg::OnBnClickedTmmbr) - ON_CBN_SELCHANGE(IDC_RTCPMODE, &CDXChannelDlg::OnCbnSelchangeRtcpmode) - ON_BN_CLICKED(IDC_PROT_NACK, &CDXChannelDlg::OnBnClickedProtNack) - ON_BN_CLICKED(IDC_PROT_NONE, &CDXChannelDlg::OnBnClickedProtNone) - ON_BN_CLICKED(IDC_PROT_FEC, &CDXChannelDlg::OnBnClickedProtFec) - ON_BN_CLICKED(IDC_FREEZELOG, &CDXChannelDlg::OnBnClickedFreezelog) - ON_BN_CLICKED(IDC_VERSION, &CDXChannelDlg::OnBnClickedVersion) - ON_BN_CLICKED(IDC_EXTTRANSPORT, &CDXChannelDlg::OnBnClickedExttransport) - ON_CBN_SELCHANGE(IDC_PACKETLOSS, &CDXChannelDlg::OnCbnSelchangePacketloss) - ON_CBN_SELCHANGE(IDC_DELAY, &CDXChannelDlg::OnCbnSelchangeDelay) - ON_BN_CLICKED(IDC_BTN_RECORD_INCOMING, &CDXChannelDlg::OnBnClickedBtnRecordIncoming) - ON_BN_CLICKED(IDC_BTN_RECORD_OUTGOING, &CDXChannelDlg::OnBnClickedBtnRecordOutgoing) - ON_BN_CLICKED(IDC_BTN_CREATE_SLAVE, &CDXChannelDlg::OnBnClickedBtnCreateSlave) - ON_BN_CLICKED(IDC_PROT_NACKFEC, &CDXChannelDlg::OnBnClickedProtNackFec) -END_MESSAGE_MAP() - -///////////////////////////////////////////////////////////////////////////// -// CDXChannelDlg message handlers - - -BOOL CDXChannelDlg::OnInitDialog() -{ - CDialog::OnInitDialog(); - - // Set the icon for this dialog. The framework does this automatically - // when the application's main window is not a dialog - SetIcon(m_hIcon, TRUE); // Set big icon - SetIcon(m_hIcon, FALSE); // Set small icon - - - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("5")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("6")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("7")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("8")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("9")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("10")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("11")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("12")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("13")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("14")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("15")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("16")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("17")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("18")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("19")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("20")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("21")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("22")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("23")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("24")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("25")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("26")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("27")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("28")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("29")); - ::SendMessage(m_ctrlMinFrameRate.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("30")); - m_ctrlMinFrameRate.SetCurSel(25); - - // Codec sizes - for(VideoSize i=UNDEFINED;iSetVoiceEngine(_voiceEngine),-5); -#endif - - char str[64]; - bool found = false; - - int captureIdx = 0; - while (-1 !=_vieCapture->GetCaptureDevice(captureIdx,str,sizeof(str),NULL,0)) - { - char* tmp = strstr(str,"(VFW)"); - if (!tmp) - { - ::SendMessage(m_ctrlDevice.m_hWnd, CB_ADDSTRING, 0,(LPARAM)CharToTchar(str,-1)); - found = true; - } - captureIdx++; - memset(str, 0, 64); - } - WIN32_FIND_DATA FindFileData; - HANDLE hFind; - //char fileSearch[256]; - //strcpy(fileSearch,_T("*.avi")); - hFind = FindFirstFile(_T("*.avi"), &FindFileData); - if (hFind != INVALID_HANDLE_VALUE) - { - ::SendMessage(m_ctrlDevice.m_hWnd, CB_ADDSTRING, 0,(LPARAM)(FindFileData.cFileName)); - while(FindNextFile(hFind,&FindFileData)) - { - ::SendMessage(m_ctrlDevice.m_hWnd, CB_ADDSTRING, 0,(LPARAM)(FindFileData.cFileName)); - } - FindClose(hFind); - } - - ::SendMessage(m_ctrlDevice.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("Conference")); - ::SendMessage(m_ctrlDevice.m_hWnd, CB_ADDSTRING, 0,(LPARAM)_T("None")); - - if (!found) - { - strncpy(str,"N/A",64); - ::SendMessage(m_ctrlDevice.m_hWnd, CB_ADDSTRING, 0,(LPARAM)CharToTchar(str,-1)); - } - m_ctrlDevice.SetCurSel(0); - - //Codecs - int numOfCodecs = _vieCodec->NumberOfCodecs(); - for(int i=0; iGetCodec(i,codec)) - { - ::SendMessage(m_ctrlCodec.m_hWnd, CB_ADDSTRING, 0,(LPARAM)CharToTchar(codec.plName,-1)); - } - } - m_ctrlCodec.SetCurSel(0); - -#ifndef NO_VOICE_ENGINE - CodecInst voiceCodec; - int numOfVeCodecs = _veCodec->NumOfCodecs(); - for(int i=0; iGetCodec(i,voiceCodec)!=-1) - { - if(strncmp(voiceCodec.plname,"ISAC",4)==0) - break; - } - } - - _audioChannel = _veBase->CreateChannel(); - - TEST_MUSTPASS(_veRTCP->SetRTCPStatus(_audioChannel, true),-5); - TEST_MUSTPASS(_veCodec->SetSendCodec(_audioChannel, voiceCodec),-5); - TEST_MUSTPASS(_veBase->StartPlayout(_audioChannel),-5); -#endif //NO_VOICE_ENGINE - - if(_parentChannel==-1) - { - TEST_MUSTPASS(_vieBase->CreateChannel(_channelId),-5); - } - else // This is a slave channel - { - TEST_MUSTPASS(_vieBase->CreateChannel(_channelId,_parentChannel),-5); - } -#ifndef NO_VOICE_ENGINE - TEST_MUSTPASS(_vieBase->ConnectAudioChannel(_channelId,_audioChannel),-5); -#endif - - _channelPool.AddChannel(_channelId); - - //Set Receive codec - { - VideoCodec codec; - int numOfCodecs = _vieCodec->NumberOfCodecs();; - for(int i=0; iGetCodec(i,codec)) - { - if(codec.codecType == webrtc::kVideoCodecVP8) - { - codec.codecSpecific.VP8.feedbackModeOn = true; - codec.codecSpecific.VP8.pictureLossIndicationOn = true; - } - TEST_MUSTPASS(_vieCodec->SetReceiveCodec(_channelId,codec),-5); - } - } - } - - //TMMBR - m_cbTmmbr.SetCheck(BST_CHECKED); - OnBnClickedTmmbr(); - - //Packet Burst - m_ctrlPacketBurst.SetCurSel(0); - - - //Protection method none - CButton *opProtection = (CButton *) GetDlgItem(IDC_PROT_NONE); - opProtection->SetCheck(BST_CHECKED); - OnBnClickedProtNone(); - - - // Configure the renderer - ConfigureRender(); - - TEST_MUSTPASS(_vieCodec->RegisterEncoderObserver(_channelId,*this),kViECodecObserverAlreadyRegistered); - TEST_MUSTPASS(_vieCodec->RegisterDecoderObserver(_channelId,*this),-5); - - TEST_MUSTPASS(_vieBase->RegisterObserver(*this),kViEBaseObserverAlreadyRegistered); - - - - - //Set captions based on channel id - m_remoteIp1.SetAddress(127,0,0,1); - CString port; - port.AppendFormat(_T("%d"),11111+_channelId*4); - m_remotePort1.SetWindowText(port); - m_localPort1.SetWindowText(port); - - CString title; - this->GetWindowText(title); - if(_parentChannel==-1) - { - title.AppendFormat(_T("%s - channel %d"),title,_channelId); - } - else - { - title.AppendFormat(_T("%s - slave channel %d - parent %d"),title,_channelId,_parentChannel); - } - this->SetWindowText(title); - - if(_parentChannel!=-1) - m_ctrlDevice.EnableWindow(FALSE); //Prevent from changing capture device - - return TRUE; // return TRUE unless you set the focus to a control -} - - - -void CDXChannelDlg::OnTimer(UINT nIDEvent) -{ - CDialog::OnTimer(nIDEvent); -} - -void CDXChannelDlg::SetSendCodec() -{ - // Get the codec stucture - int codecSel= m_ctrlCodec.GetCurSel(); - VideoCodec codec; - TEST_MUSTPASS(_vieCodec->GetCodec(codecSel,codec),-5); - - - // Set Codec Size - VideoSize sizeSel=VideoSize(m_ctrlCodecSize.GetCurSel()); - int width, height; - GetWidthHeight(sizeSel, width, height); - codec.width=width; - codec.height=height; - - //Set the codec bitrate - CString bitrateStr; - m_ctrlBitrate.GetLBText(m_ctrlBitrate.GetCurSel(), bitrateStr); - int bitrate = _ttoi(bitrateStr.GetBuffer(0)); - if(codec.codecType!=kVideoCodecI420) - { - codec.startBitrate=bitrate; - codec.maxBitrate=bitrate*4; - } - - - //Set the codec frame rate - codec.maxFramerate = m_ctrlMinFrameRate.GetCurSel() +5; - - if(strncmp(codec.plName, "VP8", 5) == 0) - { - codec.codecSpecific.VP8.feedbackModeOn = true; - codec.codecSpecific.VP8.pictureLossIndicationOn = true; - TEST_MUSTPASS(_vieRTPRTCP->SetKeyFrameRequestMethod(_channelId, kViEKeyFrameRequestPliRtcp),-5); - }else - { - TEST_MUSTPASS(_vieRTPRTCP->SetKeyFrameRequestMethod(_channelId, kViEKeyFrameRequestPliRtcp),-5); - } - TEST_MUSTPASS(_vieCodec->SetSendCodec(_channelId, codec),-5); - - if (codec.codecType == webrtc::kVideoCodecI420) - { // Need to set the receive codec size - _vieCodec->SetReceiveCodec(_channelId, codec); - } -} - -void CDXChannelDlg::SetSendDestination() -{ - if(_externalTransport) - return; - - BYTE part1, part2, part3, part4; - char sendIP1[16]; - m_remoteIp1.GetAddress(part1, part2, part3, part4); - sprintf(sendIP1,"%d.%d.%d.%d",part1,part2,part3,part4); - - CString strPort; - m_remotePort1.GetWindowText(strPort); - int remotePort1 = _ttoi(strPort.GetString()); - - TEST_MUSTPASS(_vieNetwork->SetSendDestination(_channelId,sendIP1,remotePort1),kViENetworkAlreadySending); - -#ifndef NO_VOICE_ENGINE - m_localPort1.GetWindowText(strPort); - int localPort1 = _ttoi(strPort.GetString()); - _veBase->SetLocalReceiver(_audioChannel,localPort1+2); - TEST_MUSTPASS(_veBase->SetSendDestination(_audioChannel, remotePort1+2, sendIP1),-5) -#endif -} - -void CDXChannelDlg::SetLocalReceiver() -{ - if(_externalTransport) - return; - - CString strPort; - m_localPort1.GetWindowText(strPort); - int localPort1 = _ttoi(strPort.GetString()); - - - - // May fail because we are sending - TEST_MUSTPASS(_vieNetwork->SetLocalReceiver(_channelId, localPort1),-5); - -#ifndef NO_VOICE_ENGINE - _veBase->SetLocalReceiver(_audioChannel,localPort1+2); -#endif -} - -void CDXChannelDlg::SetCaptureDevice() -{ - if(_parentChannel!=-1) // don't accept changing input on slave channels. - return; - - int camSel=-1; - camSel=m_ctrlDevice.GetCurSel(); - - CString captureStr; - //captureStr.Compare - m_ctrlDevice.GetLBText(camSel, captureStr); - if(captureStr!=_T("N/A") != 0) - { - - TEST_MUSTPASS(_vieFile->StopPlayFile(_captureId),kViEFileNotPlaying); - TEST_MUSTPASS(_vieCapture->DisconnectCaptureDevice(_channelId),kViECaptureDeviceNotConnected); - TEST_MUSTPASS(_vieRender->RemoveRenderer(_captureId),kViERenderInvalidRenderId); - - if(_captureId>=0x1001 && _captureId<0x10FF)// ID is a capture device - { - TEST_MUSTPASS(_captureDevicePool.ReturnCaptureDevice(_captureId),-5); - } - - if(captureStr!=_T("None")==0) - { - _captureId=-1; - } - else if(_tcsstr(captureStr,_T(".avi"))!=NULL ) // Selected an AVI file - { - TEST_MUSTPASS(_vieFile->StartPlayFile(TcharToChar(captureStr.GetBuffer(),-1),_captureId,false,webrtc::kFileFormatAviFile),-5); - TEST_MUSTPASS(_vieRender->AddRenderer(_captureId,m_ctrlLiveVideo.m_hWnd, 0, 0.0f, 0.0f,1.0f,1.0f),-5); - TEST_MUSTPASS(_vieRender->StartRender(_captureId),-5); - TEST_MUSTPASS(_vieFile->SendFileOnChannel(_captureId,_channelId),-5); - TEST_MUSTPASS(_vieFile->StartPlayFileAsMicrophone(_captureId,_channelId,true),-5); - //TEST_MUSTPASS(_vieFile->StartPlayAudioLocally(_captureId,_channelId),-5); - } - else - { - - char captureName[256]; - char uniqueCaptureName[256]; - - TEST_MUSTPASS(_vieCapture->GetCaptureDevice(camSel,captureName,256,uniqueCaptureName,256),-5); - - TEST_MUSTPASS(_captureDevicePool.GetCaptureDevice(_captureId,uniqueCaptureName),-5); - TEST_MUSTPASS(_vieCapture->StartCapture(_captureId),kViECaptureDeviceAlreadyStarted); - TEST_MUSTPASS(_vieCapture->RegisterObserver(_captureId,*this),kViECaptureObserverAlreadyRegistered); - - TEST_MUSTPASS(_vieRender->AddRenderer(_captureId,m_ctrlLiveVideo.m_hWnd, 0, 0.0f, 0.0f,1.0f,1.0f),-5); - TEST_MUSTPASS(_vieCapture->ConnectCaptureDevice(_captureId,_channelId),-5); - TEST_MUSTPASS(_vieRender->StartRender(_captureId),-5); - } - } - -} - - - -void CDXChannelDlg::OnBnClickedStartlisten() -{ - - - // Configure the local ports - SetLocalReceiver(); - - //Configure the remote destination- needed in order to be able to respond to RTCP messages - SetSendDestination(); - - - #ifndef NO_VOICE_ENGINE - TEST_MUSTPASS(_veBase->StartReceive(_audioChannel),-5); - #endif - TEST_MUSTPASS(_vieBase->StartReceive(_channelId),-5); - - -} - -void CDXChannelDlg::OnStartSend() -{ - - // Set the send destination - SetSendDestination(); - - // Configure the local ports (Needed to be able to receive RTCP - //SetLocalReceiver(); - - - // Set the send codec - SetSendCodec(); - - if(_captureId==-1) // If no capture device has been set. - SetCaptureDevice(); //Set the capture device - - - - //TEST_MUSTPASS(_vieRTPRTCP->SetStartSequenceNumber(_channelId,1),-5); - - // Start sending - TEST_MUSTPASS(_vieBase->StartSend(_channelId),-5); - - - #ifndef NO_VOICE_ENGINE - TEST_MUSTPASS(_veBase->StartSend(_audioChannel),-5); - #endif - - -} - -void CDXChannelDlg::ConfigureRender() -{ - TEST_MUSTPASS(_vieRender->AddRenderer(_channelId,m_ctrlLiveRemoteVideo.m_hWnd, 0, 0.0f, 0.0f,1.0f,1.0f),-5); - - TEST_MUSTPASS(_vieFile->SetRenderStartImage(_channelId, - "./main/test/WindowsTest/renderStartImage.jpg"),-5); - TEST_MUSTPASS(_vieRender->StartRender(_channelId),-5); - TEST_MUSTPASS(_vieFile->SetRenderTimeoutImage(_channelId, - "./main/test/WindowsTest/renderTimeoutImage.jpg"),-5); - - -} - - -void CDXChannelDlg::OnStopSend() -{ - - #ifndef NO_VOICE_ENGINE - TEST_MUSTPASS(_veBase->StopSend(_audioChannel),-5); - #endif - - - TEST_MUSTPASS(_vieBase->StopSend(_channelId),kViEBaseNotSending); // Accept error Not sending - - -} -void CDXChannelDlg::OnBnClickedStoplisten() -{ - - - #ifndef NO_VOICE_ENGINE - TEST_MUSTPASS(_veBase->StopReceive(_audioChannel),-5); - #endif - TEST_MUSTPASS(_vieBase->StopReceive(_channelId),-5); -} - - -void CDXChannelDlg::OnDestroy() -{ - - OnStopSend(); - OnBnClickedStoplisten(); - - if(_vieCapture && _parentChannel==-1) - { - _vieCapture->DisconnectCaptureDevice(_channelId); - _captureDevicePool.ReturnCaptureDevice(_captureId); - } - if(_vieFile && _parentChannel!=-1) - { - TEST_MUSTPASS(_vieFile->StopPlayFile(_captureId),kViEFileNotPlaying); - } - - - - - if(_videoEngine) - { - if(_parentChannel==-1) - { - _vieCodec->DeregisterEncoderObserver(_channelId); - } - _vieBase->DeleteChannel(_channelId); - _channelPool.RemoveChannel(_channelId); - } - - _videoEngine = NULL; -#ifndef NO_VOICE_ENGINE - - if (_voiceEngine) - { - _veBase->DeleteChannel(_audioChannel); - _veBase->Release(); - _veNetwork->Release(); - _veCodec->Release(); - _veRTCP->Release(); - } -#endif - - - strcpy(_logMsg,""); - SetEvent(_callbackEvent); - MSG msg; // Wait until the callback thread exits. Need to handle messages since the callback thread can call SendMessage when updating UI - while(WaitForSingleObject(_callbackThread,10)==WAIT_TIMEOUT) - { - DWORD ret = PeekMessage( &msg, NULL, 0, 0,PM_REMOVE ); - if (ret >0) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - } - - CloseHandle(_callbackThread); - CloseHandle(_callbackEvent); - DeleteCriticalSection(&_critCallback); - - TEST_MUSTPASS(_vieCapture->Release()<0,-5); - TEST_MUSTPASS(_vieRTPRTCP->Release()<0,-5); - TEST_MUSTPASS(_vieRender->Release()<0,-5); - TEST_MUSTPASS(_vieCodec->Release()<0,-5); - TEST_MUSTPASS(_vieNetwork->Release()<0,-5); - TEST_MUSTPASS(_vieFile->Release()<0,-5); - TEST_MUSTPASS(_vieBase->Release()<0,-5); - - - -#ifdef TEST_EXTERNAL_TRANSPORT - if(_transport) - delete _transport; - _transport = NULL; -#endif - - delete _externalTransport; - - CDialog::OnDestroy(); - if(_dialogObserver) - { - _dialogObserver->ChannelDialogEnded(this); - } -} - -void CDXChannelDlg::OnCancel() -{ - DestroyWindow(); -} -// If you add a minimize button to your dialog, you will need the code below -// to draw the icon. For MFC applications using the document/view model, -// this is automatically done for you by the framework. - -void CDXChannelDlg::OnPaint() -{ - if (IsIconic()) - { - CPaintDC dc(this); // device context for painting - - SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); - - // Center icon in client rectangle - int cxIcon = GetSystemMetrics(SM_CXICON); - int cyIcon = GetSystemMetrics(SM_CYICON); - CRect rect; - GetClientRect(&rect); - int x = (rect.Width() - cxIcon + 1) / 2; - int y = (rect.Height() - cyIcon + 1) / 2; - - // Draw the icon - dc.DrawIcon(x, y, m_hIcon); - } - else - { - CDialog::OnPaint(); - } -} - -BOOL CDXChannelDlg::OnDeviceChange( UINT nID, DWORD lParam) -{ - if(nID == DBT_DEVNODES_CHANGED) - { - // SetCaptureDevice(); - } - return CDialog::OnDeviceChange(nID, lParam); -} - - -void CDXChannelDlg::OnSysCommand(UINT nID, LPARAM lParam) -{ - if(SC_MAXIMIZE == nID) - {} - CDialog::OnSysCommand(nID, lParam); -} - - -static bool fullScreen = false; -void CDXChannelDlg::OnRButtonUp( UINT nFlags, CPoint point) -{ - CDialog::OnRButtonUp( nFlags, point); -} - -// The system calls this to obtain the cursor to display while the user drags -// the minimized window. -HCURSOR CDXChannelDlg::OnQueryDragIcon() -{ - return (HCURSOR) m_hIcon; -} - -void CDXChannelDlg::OnCbnSelchangeCodecList() -{ - SetSendCodec(); -} - - -void CDXChannelDlg::OnCbnSelchangeSize() -{ - SetSendCodec(); -} - -void CDXChannelDlg::OnCbnSelchangeDevice() -{ - - - SetCaptureDevice(); - -} - - -void CDXChannelDlg::OnCbnSelchangeBitrate() -{ - - SetSendCodec(); - -} - -void CDXChannelDlg::OnCbnSelchangeMinFrameRate() -{ - - SetSendCodec(); - -} - - -void CDXChannelDlg::OnBnClickedTmmbr() -{ - - TEST_MUSTPASS(_vieRTPRTCP->SetTMMBRStatus(_channelId,m_cbTmmbr.GetCheck()==BST_CHECKED),-5); - -} - -void CDXChannelDlg::OnCbnSelchangeRtcpmode() -{ - - /* - kRtcpNone = 0, - kRtcpCompound_RFC4585 = 1, - kRtcpNonCompound_RFC5506 = 2 */ - ViERTCPMode mode=ViERTCPMode(m_ctrlRtcpMode.GetCurSel()); - TEST_MUSTPASS(_vieRTPRTCP->SetRTCPStatus(_channelId,mode),-5); - -} - -void CDXChannelDlg::OnBnClickedFreezelog() -{ - _canAddLog=m_cbFreezeLog.GetCheck()!=BST_CHECKED; -} - -void CDXChannelDlg::OnBnClickedProtNack() -{ - - TEST_MUSTPASS(_vieRTPRTCP->SetNACKStatus(_channelId,true),-5); - -} - -void CDXChannelDlg::OnBnClickedProtNone() -{ - - TEST_MUSTPASS(_vieRTPRTCP->SetNACKStatus(_channelId,false),-5); - TEST_MUSTPASS(_vieRTPRTCP->SetFECStatus(_channelId,false,0,0),-5); - TEST_MUSTPASS(_vieRTPRTCP->SetHybridNACKFECStatus(_channelId,false,0,0),-5); -} - -void CDXChannelDlg::OnBnClickedProtFec() -{ - int noCodec=_vieCodec->NumberOfCodecs(); - int redPayloadType=0; - int fecPayloadType=0; - for(unsigned char i=0;iGetCodec(i,codec); - if(codec.codecType==webrtc::kVideoCodecRED) - { - redPayloadType=codec.plType; - } - if(codec.codecType==webrtc::kVideoCodecULPFEC) - { - fecPayloadType=codec.plType; - } - } - TEST_MUSTPASS(_vieRTPRTCP->SetFECStatus(_channelId,true,redPayloadType,fecPayloadType),-5); -} - -void CDXChannelDlg::OnBnClickedProtNackFec() -{ - int noCodec=_vieCodec->NumberOfCodecs(); - int redPayloadType=0; - int fecPayloadType=0; - for(unsigned char i=0;iGetCodec(i,codec); - if(codec.codecType==webrtc::kVideoCodecRED) - { - redPayloadType=codec.plType; - } - if(codec.codecType==webrtc::kVideoCodecULPFEC) - { - fecPayloadType=codec.plType; - } - } - TEST_MUSTPASS(_vieRTPRTCP->SetHybridNACKFECStatus(_channelId,true, - redPayloadType, - fecPayloadType),-5); - -} - -void CDXChannelDlg::OnBnClickedVersion() -{ - char version[1024]; - _vieBase->GetVersion(version); - MessageBox(CharToTchar(version,-1)); -#ifndef NO_VOICE_ENGINE - _veBase->GetVersion(version); - MessageBox(CharToTchar(version,-1)); -#endif -} - -unsigned int WINAPI CDXChannelDlg::CallbackThread(LPVOID lpParameter) -{ - static_cast(lpParameter)->CallbackThreadProcess(); - return 0; -} - -void CDXChannelDlg::CallbackThreadProcess() -{ - while(1) - { - if(WAIT_OBJECT_0==WaitForSingleObject(_callbackEvent,INFINITE)) - { - char smsg[512]; - EnterCriticalSection(&_critCallback); - strncpy(smsg,_logMsg,strlen(_logMsg)+1); - strcpy(_logMsg,""); - - - LeaveCriticalSection(&_critCallback); - if(strstr(smsg,"Send")!=NULL) - { - unsigned short fractionLost=0; - unsigned int cumulativeLost=0; - unsigned int extendedMax=0; - unsigned int jitter=0; - int rttMs=0; - - - - _vieRTPRTCP->GetReceivedRTCPStatistics(_channelId, - fractionLost, - cumulativeLost, - extendedMax, - jitter, - rttMs); - - //int bw=0; - //if(_vieCodec->GetAvailableBandwidth(_channelId,bw)==0) - //{ - // sprintf(smsg,"%s, rtt %d, loss %d,bw %d", smsg,rttMs,fractionLost,bw); - //} - //else - //{ - // _vieBase->LastError(); // Reset last error. - //} - - - - } - if(strlen(smsg)) - { - m_ctrlInfo.InsertString(0,(LPCTSTR) CharToTchar(smsg,-1)); - while(m_ctrlInfo.GetCount()==151) - m_ctrlInfo.DeleteString(150); - } - else - { - break; // End the callback thread - } - } - } - -} -void CDXChannelDlg::AddToInfo(const char* msg) -{ - if(!_canAddLog) - return; - EnterCriticalSection(&_critCallback); - - SYSTEMTIME systemTime; - GetSystemTime(&systemTime); - - if(strlen(_logMsg)==0) - { - SetEvent(_callbackEvent); // Notify of new - } - - sprintf (_logMsg, "(%2u:%2u:%2u:%3u) %s", systemTime.wHour, - systemTime.wMinute, - systemTime.wSecond, - systemTime.wMilliseconds, - msg - ); - - - - LeaveCriticalSection(&_critCallback); - - -} - -void CDXChannelDlg::IncomingRate(const int videoChannel, - unsigned int framerate, - unsigned int bitrate) -{ - char str[64]; - sprintf(str,"Incoming Fr:%d br %d\n", framerate, bitrate); - AddToInfo(str); -} - -void CDXChannelDlg::RequestNewKeyFrame(int channel) -{ - assert(false && "(RequestNewKeyFrame why is it called"); -} -void CDXChannelDlg::PerformanceAlarm(unsigned int cpuLoad) -{ - char str[64]; - sprintf(str,"Performance alarm %d",cpuLoad); - AddToInfo(str); -} -void CDXChannelDlg::OutgoingRate(const int videoChannel, - unsigned int framerate, - unsigned int bitrate) - { - char str[64]; - sprintf(str,"Send Fr:%d br %d", framerate, bitrate); - AddToInfo(str); - } -void CDXChannelDlg::IncomingCodecChanged(const int videoChannel, - const VideoCodec& videoCodec) - { - char str[128]; - sprintf(str,"Incoming codec channel:%d pltype:%d width:%d height:%d\n", videoChannel, videoCodec.plType, videoCodec.width,videoCodec.height); - AddToInfo(str); - } -void CDXChannelDlg::BrightnessAlarm(const int captureId, - const Brightness brightness) -{ - - switch(brightness) - { - case Normal: - AddToInfo("BrightnessAlarm - image ok.\n"); - break; - case Bright: - AddToInfo("BrightnessAlarm - light image.\n"); - break; - case Dark: - AddToInfo("BrightnessAlarm - dark image.\n"); - break; - } -} - -void CDXChannelDlg::CapturedFrameRate(const int captureId, - const unsigned char frameRate) -{ - char str[64]; - sprintf(str,"Local Camera Frame rate:%d \n", frameRate); - AddToInfo(str); -} - -void CDXChannelDlg::NoPictureAlarm(const int captureId, - const CaptureAlarm alarm) -{ - char str[64]; - sprintf(str,"No Picture alarm\n"); - AddToInfo(str); - -} - - -void CDXChannelDlg::OnBnClickedExttransport() -{ - if(m_cbExternalTransport.GetCheck()==BST_CHECKED) - { - m_localPort1.EnableWindow(FALSE); - m_remotePort1.EnableWindow(FALSE); - m_remoteIp1.EnableWindow(FALSE); - m_ctrlPacketLoss.EnableWindow(TRUE); - m_ctrlDelay.EnableWindow(TRUE); - _externalTransport= new TbExternalTransport(*_vieNetwork); - _vieNetwork->RegisterSendTransport(_channelId,*_externalTransport); - } - else - { - _vieNetwork->DeregisterSendTransport(_channelId); - - delete _externalTransport; - _externalTransport=NULL; - m_localPort1.EnableWindow(TRUE); - m_remotePort1.EnableWindow(TRUE); - m_remoteIp1.EnableWindow(TRUE); - m_ctrlPacketLoss.EnableWindow(FALSE); - m_ctrlDelay.EnableWindow(FALSE); - } -} - - -void CDXChannelDlg::OnCbnSelchangePacketloss() -{ - if(_externalTransport) - { - _externalTransport->SetPacketLoss(m_ctrlPacketLoss.GetCurSel()*2); - } -} - - -void CDXChannelDlg::OnCbnSelchangeDelay() -{ - if(_externalTransport) - { - _externalTransport->SetNetworkDelay(m_ctrlDelay.GetCurSel()*30); - } - -} - -void CDXChannelDlg::OnBnClickedBtnRecordIncoming() -{ - - CButton *recordBtn = (CButton *) GetDlgItem(IDC_BTN_RECORD_INCOMING); - - CString text; - recordBtn->GetWindowText(text); - if(text!=_T("Stop Rec Inc")!=0) - { - recordBtn->SetWindowText(_T("Stop Rec Inc")); - SYSTEMTIME time; - GetSystemTime(&time); - sprintf(_fileName,"IncomingChannel%d_%4d%2d%2d%2d%2d.avi",_channelId,time.wYear,time.wMonth,time.wDay,time.wHour,time.wMinute); - - AudioSource audioSource=PLAYOUT; - webrtc::CodecInst audioCodec; - strcpy(audioCodec.plname,"L16"); - audioCodec.rate = 256000; - audioCodec.plfreq = 16000; - audioCodec.pacsize = 160; - - webrtc::VideoCodec videoCodec; - memset(&videoCodec,0,sizeof(videoCodec)); - - strcpy(videoCodec.plName,"VP8"); - videoCodec.maxBitrate=1000; - videoCodec.startBitrate=1000; - videoCodec.width=352; - videoCodec.height=288; - videoCodec.codecType=webrtc::kVideoCodecVP8; - videoCodec.maxFramerate=30; - TEST_MUSTPASS(_vieFile->StartRecordIncomingVideo(_channelId,_fileName,audioSource,audioCodec, videoCodec),-5); - } - else - { - recordBtn->SetWindowText(_T("Record Incoming")); - TEST_MUSTPASS(_vieFile->StopRecordIncomingVideo(_channelId),-5); - CString msg; - msg.AppendFormat(_T("Recorded file %s"),_fileName); - MessageBox(msg); - } -} - -void CDXChannelDlg::OnBnClickedBtnRecordOutgoing() -{ - - CButton *recordBtn = (CButton *) GetDlgItem(IDC_BTN_RECORD_OUTGOING); - CString text; - recordBtn->GetWindowText(text); - if(text!=_T("Stop Rec Out")) - { - recordBtn->SetWindowText(_T("Stop Rec Out")); - SYSTEMTIME time; - GetSystemTime(&time); - sprintf(_fileName,"OutgoingChannel%d_%4d%2d%2d%2d%2d.avi",_channelId,time.wYear,time.wMonth,time.wDay,time.wHour,time.wMinute); - - AudioSource audioSource=MICROPHONE; - webrtc::CodecInst audioCodec; - strcpy(audioCodec.plname,"L16"); - audioCodec.rate = 256000; - audioCodec.plfreq = 16000; - audioCodec.pacsize = 160; - - webrtc::VideoCodec videoCodec; - memset(&videoCodec,0,sizeof(videoCodec)); - - strcpy(videoCodec.plName,"VP8"); - videoCodec.maxBitrate=1000; - videoCodec.startBitrate=1000; - videoCodec.width=352; - videoCodec.height=288; - videoCodec.codecType=webrtc::kVideoCodecVP8; - videoCodec.maxFramerate=30; - TEST_MUSTPASS(_vieFile->StartRecordOutgoingVideo(_channelId,_fileName,audioSource,audioCodec,videoCodec),-5); - } - else - { - recordBtn->SetWindowText(_T("Record Outgoing")); - TEST_MUSTPASS(_vieFile->StopRecordOutgoingVideo(_channelId),-5); - CString msg; - msg.AppendFormat(_T("Recorded file %s"),_fileName); - MessageBox(msg); - } -} - -void CDXChannelDlg::OnBnClickedBtnCreateSlave() -{ - CDXChannelDlg* newSlave =new CDXChannelDlg(_videoEngine,_captureDevicePool,_channelPool,_voiceEngine,NULL,_dialogObserver,_channelId); - newSlave->Create(CDXChannelDlg::IDD,NULL); -} diff --git a/src/video_engine/main/test/WindowsTest/ChannelDlg.h b/src/video_engine/main/test/WindowsTest/ChannelDlg.h deleted file mode 100644 index 43aeb092f5..0000000000 --- a/src/video_engine/main/test/WindowsTest/ChannelDlg.h +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#ifndef WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_CHANNELDLG_H_ -#define WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_CHANNELDLG_H_ - -#include "StdAfx.h" -//#define NO_VOICE_ENGINE - -///////////////////////////////////////////////////////////////////////////// -// CDXChannelDlg dialog -// Include ViE headers - -#include "common_types.h" - -#include "vie_base.h" -#include "vie_capture.h" -#include "vie_codec.h" -#include "vie_network.h" -#include "vie_render.h" -#include "vie_rtp_rtcp.h" -#include "vie_errors.h" -#include "vie_file.h" -#include "tbExternalTransport.h" - -#include "resource.h" // main symbols - - -#ifndef NO_VOICE_ENGINE - -#include "voe_base.h" -#include "voe_errors.h" -#include "voe_base.h" -#include "voe_network.h" -#include "voe_codec.h" -#include "voe_rtp_rtcp.h" -#endif - -using namespace webrtc; -class CDXChannelDlg; -class CaptureDevicePool; -class ChannelPool; - -#define TEST_MUSTPASS(expr,oklasterror) \ - { \ - if ((expr)) \ - { \ - CString r_msg; \ - int r_lastError=_vieBase->LastError(); \ - CString exp; \ - exp=#expr;\ - r_msg.Format(_T("\nError at line:%i, %s \nError code: %i\n"),__LINE__, exp,r_lastError); \ - if(r_lastError!=oklasterror) \ - ::MessageBox (NULL, (LPCTSTR)r_msg, TEXT("Error Message"), MB_OK | MB_ICONINFORMATION); \ - } \ - } - -class CDXChannelDlgObserver -{ -public: - virtual void ChannelDialogEnded(CDXChannelDlg* context)=0; - -protected: - virtual ~CDXChannelDlgObserver(){}; - -}; - -class CDXChannelDlg : public CDialog , public ViEEncoderObserver, public ViEDecoderObserver, public ViEBaseObserver, public ViECaptureObserver -{ -// Construction -public: - CDXChannelDlg(VideoEngine* videoEngine, - CaptureDevicePool& captureDevicePool, - ChannelPool& channelPool, - void* voiceEngine=NULL - ,CWnd* pParent = NULL,CDXChannelDlgObserver* observer=NULL,int parentChannel=-1); // standard constructor - -// Dialog Data - //{{AFX_DATA(CDXChannelDlg) - enum { IDD = IDD_DXQUALITY_DIALOG }; - CComboBox m_ctrlDevice; - CComboBox m_ctrlCodec; - CComboBox m_ctrlBitrate; - CComboBox m_ctrlCodecSize; - CComboBox m_ctrlRtcpMode; - CComboBox m_ctrlPacketBurst; - CComboBox m_ctrlMinFrameRate; - - CListBox m_ctrlInfo; - - CStatic m_ctrlLiveRemoteVideo; - CStatic m_ctrlLiveVideo; - CEdit m_localPort1; - CEdit m_remotePort1; - CIPAddressCtrl m_remoteIp1; - CButton m_cbTmmbr; - CButton m_cbExternalTransport; - CButton m_cbFreezeLog; - CButton m_cbDefaultSendChannel; - CComboBox m_ctrlPacketLoss; - CComboBox m_ctrlDelay; - - - //}}AFX_DATA - - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CDXChannelDlg) - protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - //}}AFX_VIRTUAL - - - -public : - // Callback - - //Capture observer - virtual void BrightnessAlarm(const int captureId, - const Brightness brightness); - - virtual void CapturedFrameRate(const int captureId, - const unsigned char frameRate); - - virtual void NoPictureAlarm(const int captureId, - const CaptureAlarm alarm); - - - // same callback method is being used to raise also to clear. - // true - raise, false - clear - // virtual void NoPictureAlarm(bool active = true); - - // Encoder observer - virtual void OutgoingRate(const int videoChannel, - const unsigned int framerate, - const unsigned int bitrate) ; - - //Decoder observer - virtual void IncomingCodecChanged(const int videoChannel, - const VideoCodec& videoCodec); - - virtual void IncomingRate(const int videoChannel, - const unsigned int framerate, - const unsigned int bitrate); - - virtual void RequestNewKeyFrame(const int videoChannel); - - // Base observer - virtual void PerformanceAlarm(const unsigned int cpuLoad); - - - //virtual void IncomingCSRCChanged(int channel, unsigned int csrc, bool added); - - - -// Implementation -protected: - HICON m_hIcon; - int _channelId; - int _parentChannel; - int _audioChannel; - bool _canAddLog; - - // Thread and function for callbacks - CRITICAL_SECTION _critCallback; - HANDLE _callbackThread; - HANDLE _callbackEvent; - char _logMsg[512]; - static unsigned int WINAPI CallbackThread(LPVOID lpParameter); - void CallbackThreadProcess(); - - - - //void GetSize(int sizeSel, int &width, int &height); - virtual void ConfigureRender(); - - virtual void SetCaptureDevice(); - virtual void SetLocalReceiver(); - virtual void SetSendDestination(); - virtual void SetSendCodec(); - - - void AddToInfo(const char* msg); - - // afx_msg void Command(UINT nID, LPARAM lParam); - - // Generated message map functions - //{{AFX_MSG(CDXChannelDlg) - virtual BOOL OnInitDialog(); - afx_msg void OnSysCommand(UINT nID, LPARAM lParam); - afx_msg void OnRButtonUp( UINT nFlags, CPoint point); - afx_msg BOOL OnDeviceChange( UINT, DWORD ); - afx_msg void OnPaint(); - //afx_msg LRESULT OnDisplayChange(WPARAM, LPARAM); - afx_msg HCURSOR OnQueryDragIcon(); - virtual afx_msg void OnStartSend(); - virtual afx_msg void OnDestroy(); - virtual afx_msg void OnStopSend(); - virtual afx_msg void OnCancel(); - afx_msg void OnTimer(UINT nIDEvent); - - //}}AFX_MSG - DECLARE_MESSAGE_MAP() - -private: - CDXChannelDlgObserver* _dialogObserver; - - VideoEngine* _videoEngine; - ViEBase* _vieBase; - ViECapture* _vieCapture; - ViERTP_RTCP* _vieRTPRTCP; - ViERender* _vieRender; - ViECodec* _vieCodec; - ViENetwork* _vieNetwork; - ViEFile* _vieFile; - TbExternalTransport* _externalTransport; - char _fileName[256]; - - -#ifndef NO_VOICE_ENGINE - VoiceEngine* _voiceEngine; - VoEBase* _veBase; - VoENetwork* _veNetwork; - VoECodec* _veCodec; - VoERTP_RTCP* _veRTCP; -#else - void* _voiceEngine; - -#endif - - VideoCodec _sendCodec; - int _captureId; - CaptureDevicePool& _captureDevicePool; - ChannelPool& _channelPool; - - - afx_msg void OnCbnSelchangeCodecList(); - afx_msg void OnCbnSelchangeDevice(); - afx_msg void OnCbnSelchangeSize(); - afx_msg void OnCbnSelchangeBitrate(); - afx_msg void OnCbnSelchangeWindowSize(); - afx_msg void OnBnClickedversion(); - afx_msg void OnCbnSelchangeMinFrameRate(); - afx_msg void OnBnClickedStartlisten(); - afx_msg void OnBnClickedStoplisten(); - afx_msg void OnBnClickedStopsend(); - afx_msg void OnBnClickedTmmbr(); - afx_msg void OnCbnSelchangeRtcpmode(); - afx_msg void OnBnClickedProtNack(); - afx_msg void OnBnClickedProtNone(); - afx_msg void OnBnClickedProtFec(); - afx_msg void OnBnClickedProtNackFec(); - afx_msg void OnBnClickedFreezelog(); -public: - afx_msg void OnBnClickedExttransport(); - afx_msg void OnCbnSelchangePacketloss(); - afx_msg void OnCbnSelchangeDelay(); - afx_msg void OnBnClickedBtnRecordIncoming(); - afx_msg void OnBnClickedBtnRecordOutgoing(); - afx_msg void OnBnClickedBtnCreateSlave(); - afx_msg void OnBnClickedVersion(); -}; - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_CHANNELDLG_H_ diff --git a/src/video_engine/main/test/WindowsTest/ChannelPool.cc b/src/video_engine/main/test/WindowsTest/ChannelPool.cc deleted file mode 100644 index dbd1644fae..0000000000 --- a/src/video_engine/main/test/WindowsTest/ChannelPool.cc +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include "ChannelPool.h" -#include "map_wrapper.h" -#include -#include -#include "critical_section_wrapper.h" - -ChannelPool::ChannelPool(): -_critSect(*webrtc::CriticalSectionWrapper::CreateCriticalSection()) -{ -} - -ChannelPool::~ChannelPool(void) -{ - assert(_channelMap.Size()==0); - delete &_critSect; -} - -WebRtc_Word32 ChannelPool::AddChannel(int channel) -{ - return _channelMap.Insert(channel,(void*) channel); -} -WebRtc_Word32 ChannelPool::RemoveChannel(int channel) -{ - return _channelMap.Erase(channel); -} - -webrtc::MapWrapper& ChannelPool::ChannelMap() -{ - return _channelMap; -} diff --git a/src/video_engine/main/test/WindowsTest/ChannelPool.h b/src/video_engine/main/test/WindowsTest/ChannelPool.h deleted file mode 100644 index 374c676a31..0000000000 --- a/src/video_engine/main/test/WindowsTest/ChannelPool.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#pragma once -#include "StdAfx.h" -#include "common_types.h" - -#include "vie_base.h" -#include "map_wrapper.h" - -namespace webrtc { -class CriticalSectionWrapper; -} - -class ChannelPool -{ -public: - ChannelPool(); - ~ChannelPool(void); - WebRtc_Word32 AddChannel(int channel); - WebRtc_Word32 RemoveChannel(int channel); - - webrtc::MapWrapper& ChannelMap(); - - private: - webrtc::CriticalSectionWrapper& _critSect; - webrtc::MapWrapper _channelMap; - -}; diff --git a/src/video_engine/main/test/WindowsTest/StdAfx.h b/src/video_engine/main/test/WindowsTest/StdAfx.h deleted file mode 100644 index 78b1fbddfd..0000000000 --- a/src/video_engine/main/test/WindowsTest/StdAfx.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -// stdafx.h : include file for standard system include files, -// or project specific include files that are used frequently, but -// are changed infrequently -// - -#ifndef WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_STDAFX_H_ -#define WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_STDAFX_H_ - -#if _MSC_VER > 1000 -#pragma once -#endif // _MSC_VER > 1000 - -#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers - -#include // MFC core and standard components -#include // MFC extensions -#include // MFC Automation classes -#include // MFC support for Internet Explorer 4 Common Controls -#ifndef _AFX_NO_AFXCMN_SUPPORT -#include // MFC support for Windows Common Controls -#endif // _AFX_NO_AFXCMN_SUPPORT - - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_STDAFX_H_ diff --git a/src/video_engine/main/test/WindowsTest/VideoSize.h b/src/video_engine/main/test/WindowsTest/VideoSize.h deleted file mode 100644 index 60e2bdd070..0000000000 --- a/src/video_engine/main/test/WindowsTest/VideoSize.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#ifndef WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_VIDEOSIZE_H_ -#define WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_VIDEOSIZE_H_ -#include "StdAfx.h" -enum VideoSize - { - UNDEFINED, - SQCIF, // 128*96 = 12 288 - QQVGA, // 160*120 = 19 200 - QCIF, // 176*144 = 25 344 - CGA, // 320*200 = 64 000 - QVGA, // 320*240 = 76 800 - SIF, // 352*240 = 84 480 - WQVGA, // 400*240 = 96 000 - CIF, // 352*288 = 101 376 - W288P, // 512*288 = 147 456 (WCIF) - W368P, // 640*368 = 235 520 - S_448P, // 576*448 = 281 088 - VGA, // 640*480 = 307 200 - S_432P, // 720*432 = 311 040 - W432P, // 768*432 = 331 776 (a.k.a WVGA 16:9) - S_4SIF, // 704*480 = 337 920 - W448P, // 768*448 = 344 064 - NTSC, // 720*480 = 345 600 - FW448P, // 800*448 = 358 400 - S_768x480P, // 768*480 = 368 640 (a.k.a WVGA 16:10) - WVGA, // 800*480 = 384 000 - S_4CIF, // 704576 = 405 504 - SVGA, // 800*600 = 480 000 - W544P, // 960*544 = 522 240 - W576P, // 1024*576 = 589 824 (W4CIF) - HD, // 960*720 = 691 200 - XGA, // 1024*768 = 786 432 - WHD, // 1280*720 = 921 600 - FULL_HD, // 1440*1080 = 1 555 200 - UXGA, // 1600*1200 = 1 920 000 - WFULL_HD, // 1920*1080 = 2 073 600 - NUMBER_OF_VIDEO_SIZE - }; - -int GetWidthHeight(VideoSize size, int& width, int& height); - - -#endif // WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_VIDEOSIZE_H_ diff --git a/src/video_engine/main/test/WindowsTest/WindowsTest.cc b/src/video_engine/main/test/WindowsTest/WindowsTest.cc deleted file mode 100644 index ff8159cf58..0000000000 --- a/src/video_engine/main/test/WindowsTest/WindowsTest.cc +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include "WindowsTest.h" -#include "ChannelDlg.h" -#include "WindowsTestMainDlg.h" -#include "engine_configurations.h" - -#ifdef _DEBUG -#define new DEBUG_NEW -#undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -// Check memory leaks id running debug -#if (defined(_DEBUG) && defined(_WIN32)) -// #include "vld.h" -#endif -///////////////////////////////////////////////////////////////////////////// -// CDXWindowsTestApp - -BEGIN_MESSAGE_MAP(CDXWindowsTestApp, CWinApp) - //{{AFX_MSG_MAP(CDXWindowsTestApp) - // NOTE - the ClassWizard will add and remove mapping macros here. - // DO NOT EDIT what you see in these blocks of generated code! - //}}AFX_MSG - ON_COMMAND(ID_HELP, CWinApp::OnHelp) -END_MESSAGE_MAP() - -///////////////////////////////////////////////////////////////////////////// -// CDXWindowsTestApp construction - -CDXWindowsTestApp::CDXWindowsTestApp() -{ - -} - -///////////////////////////////////////////////////////////////////////////// -// The one and only object - -CDXWindowsTestApp theApp; - -///////////////////////////////////////////////////////////////////////////// -// CDXWindowsTestApp initialization - -BOOL CDXWindowsTestApp::InitInstance() -{ - int result=0; - #ifndef NO_VOICE_ENGINE - _voiceEngine = VoiceEngine::Create(); - _veBase = VoEBase::GetInterface(_voiceEngine); - result+=_veBase->Init(); - #else - _voiceEngine=NULL; - #endif - - _videoEngine = VideoEngine::Create(); - - _videoEngine->SetTraceFilter(webrtc::kTraceDefault);//webrtc::kTraceDebug | webrtc::kTraceError | webrtc::kTraceApiCall | webrtc::kTraceWarning | webrtc::kTraceCritical | webrtc::kTraceStateInfo | webrtc::kTraceInfo | webrtc::kTraceStream); - _videoEngine->SetTraceFile("trace.txt"); - - ViEBase* vieBase=ViEBase::GetInterface(_videoEngine); - result+=vieBase->Init(); - if(result!=0) - { - ::MessageBox (NULL, (LPCTSTR)("failed to init VideoEngine"), TEXT("Error Message"), MB_OK | MB_ICONINFORMATION); - } - - { - WindowsTestMainDlg dlg(_videoEngine,_voiceEngine); - - m_pMainWnd = &dlg; - dlg.DoModal(); - } - - vieBase->Release(); - - if(!VideoEngine::Delete(_videoEngine)) - { - char errorMsg[255]; - sprintf(errorMsg,"All VideoEngine interfaces are not released properly!"); - ::MessageBox (NULL, (LPCTSTR)errorMsg, TEXT("Error Message"), MB_OK | MB_ICONINFORMATION); - } - - #ifndef NO_VOICE_ENGINE - - _veBase->Terminate(); - if(_veBase->Release()!=0) - { - // ensure that no interface is still referenced - char errorMsg[256]; - sprintf(errorMsg,"All VoiceEngine interfaces are not released properly!"); - ::MessageBox (NULL, (LPCTSTR)errorMsg, TEXT("Error Message"), MB_OK | MB_ICONINFORMATION); - } - - if (false == VoiceEngine::Delete(_voiceEngine)) - { - char errorMsg[256]; - sprintf(errorMsg,"VoiceEngine::Delete() failed!"); - ::MessageBox (NULL, (LPCTSTR)errorMsg, TEXT("Error Message"), MB_OK | MB_ICONINFORMATION); - } - #endif - - // Since the dialog has been closed, return FALSE so that we exit the - // application, rather than start the application's message pump. - return FALSE; -} diff --git a/src/video_engine/main/test/WindowsTest/WindowsTest.h b/src/video_engine/main/test/WindowsTest/WindowsTest.h deleted file mode 100644 index dc3ee9d26b..0000000000 --- a/src/video_engine/main/test/WindowsTest/WindowsTest.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#ifndef WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_WINDOWSTEST_H_ -#define WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_WINDOWSTEST_H_ - - -#include "StdAfx.h" -#include "resource.h" // main symbols - - - -///////////////////////////////////////////////////////////////////////////// - -//Forward declarations -namespace webrtc { - class VoiceEngine; - class VoEBase; - class VideoEngine; -} -using namespace webrtc; - -class CDXWindowsTestApp : public CWinApp -{ -public: - CDXWindowsTestApp(); - -// Overrides - // ClassWizard generated virtual function overrides - //{{AFX_VIRTUAL(CDXWindowsTestApp) - public: - virtual BOOL InitInstance(); - //}}AFX_VIRTUAL - -// Implementation - - //{{AFX_MSG(CDXWindowsTestApp) - // NOTE - the ClassWizard will add and remove member functions here. - // DO NOT EDIT what you see in these blocks of generated code ! - //}}AFX_MSG - DECLARE_MESSAGE_MAP() - - VideoEngine* _videoEngine; - VoiceEngine* _voiceEngine; - VoEBase* _veBase; -}; - - -///////////////////////////////////////////////////////////////////////////// - -//{{AFX_INSERT_LOCATION}} -// Microsoft Visual C++ will insert additional declarations immediately before the previous line. - -#endif // WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_WINDOWSTEST_H_ diff --git a/src/video_engine/main/test/WindowsTest/WindowsTestMainDlg.cc b/src/video_engine/main/test/WindowsTest/WindowsTestMainDlg.cc deleted file mode 100644 index fcc490d93b..0000000000 --- a/src/video_engine/main/test/WindowsTest/WindowsTestMainDlg.cc +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -// WindowsTestMainDlg.cpp : implementation file -// -#include "WindowsTestMainDlg.h" -#include "WindowsTest.h" -#include "ChannelDlg.h" - -#include "voe_base.h" - -// WindowsTestMainDlg dialog - -IMPLEMENT_DYNAMIC(WindowsTestMainDlg, CDialog) - -WindowsTestMainDlg::WindowsTestMainDlg(VideoEngine* videoEngine,void* voiceEngine,CWnd* pParent /*=NULL*/) - : CDialog(WindowsTestMainDlg::IDD, pParent), - _videoEngine(videoEngine), - _voiceEngine((VoiceEngine*) voiceEngine), - _testDlg1(NULL), - _testDlg2(NULL), - _testDlg3(NULL), - _testDlg4(NULL), - _externalInWidth(0), - _externalInHeight(0), - _externalInVideoType(0), - _captureDevicePool(videoEngine) -{ - -} - -WindowsTestMainDlg::~WindowsTestMainDlg() -{ -} - -void WindowsTestMainDlg::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); -} - - -BEGIN_MESSAGE_MAP(WindowsTestMainDlg, CDialog) - ON_BN_CLICKED(IDC_CHANNEL1, &WindowsTestMainDlg::OnBnClickedChannel1) - ON_BN_CLICKED(IDC_CHANNEL2, &WindowsTestMainDlg::OnBnClickedChannel2) - ON_BN_CLICKED(IDC_CHANNEL3, &WindowsTestMainDlg::OnBnClickedChannel3) - ON_BN_CLICKED(IDC_CHANNEL4, &WindowsTestMainDlg::OnBnClickedChannel4) -END_MESSAGE_MAP() - - - -void WindowsTestMainDlg::OnBnClickedChannel1() -{ - if(!_testDlg1) - { - _testDlg1=new CDXChannelDlg(_videoEngine,_captureDevicePool,_channelPool,_voiceEngine,NULL,this); - _testDlg1->Create(CDXChannelDlg::IDD,this); - } - else - { - _testDlg1->SetActiveWindow(); - } -} - -void WindowsTestMainDlg::OnBnClickedChannel2() -{ - if(!_testDlg2) - { - _testDlg2=new CDXChannelDlg(_videoEngine,_captureDevicePool,_channelPool,_voiceEngine,NULL,this); - _testDlg2->Create(CDXChannelDlg::IDD,this); - - } - else - { - _testDlg2->SetActiveWindow(); - } -} - -void WindowsTestMainDlg::ChannelDialogEnded(CDXChannelDlg* context) -{ - if(context==_testDlg4) - { - delete _testDlg4; - _testDlg4=NULL; - } - else if(context==_testDlg3) - { - delete _testDlg3; - _testDlg3=NULL; - } - else if(context==_testDlg2) - { - delete _testDlg2; - _testDlg2=NULL; - } - else if(context==_testDlg1) - { - delete _testDlg1; - _testDlg1=NULL; - } - else // Slave channel - { - delete context; - } - -} - - - -void WindowsTestMainDlg::OnBnClickedChannel3() -{ - if(!_testDlg3) - { - _testDlg3=new CDXChannelDlg(_videoEngine,_captureDevicePool,_channelPool,_voiceEngine,NULL,this); - _testDlg3->Create(CDXChannelDlg::IDD,this); - - } - else - { - _testDlg3->SetActiveWindow(); - } -} - -void WindowsTestMainDlg::OnBnClickedChannel4() -{ - if(!_testDlg4) - { - _testDlg4=new CDXChannelDlg(_videoEngine,_captureDevicePool,_channelPool,_voiceEngine,NULL,this); - _testDlg4->Create(CDXChannelDlg::IDD,this); - - } - else - { - _testDlg4->SetActiveWindow(); - } -} diff --git a/src/video_engine/main/test/WindowsTest/WindowsTestMainDlg.h b/src/video_engine/main/test/WindowsTest/WindowsTestMainDlg.h deleted file mode 100644 index 8aae99a9e1..0000000000 --- a/src/video_engine/main/test/WindowsTest/WindowsTestMainDlg.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#pragma once -#include "StdAfx.h" -#include "WindowsTestResource.h" - -#include "ChannelDlg.h" -#include "CaptureDevicePool.h" -#include "ChannelPool.h" - -//Forward declarations -namespace webrtc { - class VideoEngine; - class VoiceEngine; -} -using namespace webrtc; -class CDXCaptureDlg; - - -class WindowsTestMainDlg : public CDialog, private CDXChannelDlgObserver -{ - DECLARE_DYNAMIC(WindowsTestMainDlg) - -public: - WindowsTestMainDlg(VideoEngine* videoEngine,void* voiceEngine=NULL,CWnd* pParent = NULL); // standard constructor - virtual ~WindowsTestMainDlg(); - -// Dialog Data - enum { IDD = IDD_WINDOWSTEST_MAIN }; - -protected: - virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support - - DECLARE_MESSAGE_MAP() -public: - afx_msg void OnBnClickedChannel1(); - afx_msg void OnBnClickedChannel2(); - afx_msg void OnBnClickedChannel3(); - afx_msg void OnBnClickedChannel4(); - - - VideoEngine* _videoEngine; - VoiceEngine* _voiceEngine; - VoEBase* _veBase; - - CDXChannelDlg* _testDlg1; - CDXChannelDlg* _testDlg2; - CDXChannelDlg* _testDlg3; - CDXChannelDlg* _testDlg4; - - int _externalInWidth; - int _externalInHeight; - int _externalInVideoType; - - CaptureDevicePool _captureDevicePool; - ChannelPool _channelPool; - - -private: - virtual void ChannelDialogEnded(CDXChannelDlg* context); - -public: - -}; diff --git a/src/video_engine/main/test/WindowsTest/WindowsTestResouce.rc b/src/video_engine/main/test/WindowsTest/WindowsTestResouce.rc deleted file mode 100644 index 5e866ad614..0000000000 --- a/src/video_engine/main/test/WindowsTest/WindowsTestResouce.rc +++ /dev/null @@ -1,101 +0,0 @@ -// Microsoft Visual C++ generated resource script. -// -#include "WindowsTestResource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// Swedish resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_SVE) -#ifdef _WIN32 -LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT -#pragma code_page(1252) -#endif //_WIN32 - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "WindowsTestResource.h\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\n" - "\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\n" - "\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -IDD_WINDOWSTEST_MAIN DIALOGEX 0, 0, 186, 156 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Windows ViE Test" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,129,7,50,14 - PUSHBUTTON "Cancel",IDCANCEL,129,24,50,14 - PUSHBUTTON "Channel 1",IDC_CHANNEL1,129,45,50,14 - PUSHBUTTON "Channel 2",IDC_CHANNEL2,129,62,50,14 - PUSHBUTTON "Channel 3",IDC_CHANNEL3,129,79,50,14 - PUSHBUTTON "Channel 4",IDC_CHANNEL4,129,96,50,14 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - IDD_WINDOWSTEST_MAIN, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 179 - TOPMARGIN, 7 - BOTTOMMARGIN, 149 - END -END -#endif // APSTUDIO_INVOKED - -#endif // Swedish resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - diff --git a/src/video_engine/main/test/WindowsTest/WindowsTestResource.h b/src/video_engine/main/test/WindowsTest/WindowsTestResource.h deleted file mode 100644 index 2d49c28a6f..0000000000 --- a/src/video_engine/main/test/WindowsTest/WindowsTestResource.h +++ /dev/null @@ -1,28 +0,0 @@ -//{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by WindowsTestResouce.rc -// -#define IDD_WINDOWSTEST_MAIN 101 -#define IDC_CHANNEL1 1001 -#define IDC_CHANNEL2 1002 -#define IDC_CHANNEL3 1004 -#define IDC_CHANNEL4 1005 -#define IDC_POSITION 1009 -#define IDC_INFORMATION 1050 -#define IDC_CHECK_CHANNEL1 1070 -#define IDC_CHECK_CHANNEL2 1071 -#define IDC_CHECK_CHANNEL3 1072 -#define IDC_CHECK_CHANNEL4 1073 -#define IDC_COMBO1 1074 -#define IDC_BTN_CREATE2 1076 - -// Next default values for new objects -// -#ifdef APSTUDIO_INVOKED -#ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 106 -#define _APS_NEXT_COMMAND_VALUE 40001 -#define _APS_NEXT_CONTROL_VALUE 1076 -#define _APS_NEXT_SYMED_VALUE 107 -#endif -#endif diff --git a/src/video_engine/main/test/WindowsTest/captureDeviceImage.jpg b/src/video_engine/main/test/WindowsTest/captureDeviceImage.jpg deleted file mode 100644 index 3bb3ba48bbdaab19f788179d627b6d83304e2c45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10742 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

#2im%gf=K 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 diff --git a/src/video_engine/main/test/WindowsTest/renderStartImage.jpg b/src/video_engine/main/test/WindowsTest/renderStartImage.jpg deleted file mode 100644 index b10a84259c3d37ed35e2d449f1f5ab64265b5c6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10274 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 diff --git a/src/video_engine/main/test/WindowsTest/renderTimeoutImage.jpg b/src/video_engine/main/test/WindowsTest/renderTimeoutImage.jpg deleted file mode 100644 index cb34d67664328692c26b1811bf1ef9979f14b941..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10554 zcmbVycT|(X*JkKNia;nLMWu!&B_JIHX`v>e_aaE>K|rdA2xz2;R6#lkz4s=~0D`m- zdQ*@ty@SB=`@TK9XaC#X=bU%uk9%j%b7#&w&wcMZH&ZvW0961H;eYU-mgpA5O0g7|IfJT0ML;WJRqc=`B20$@q0C(<&qs?XHaH8iy#a6=A2)^{pO~DQp837B{AXo#ZGB^N|KRZG_~i8L{NgsQI=Wlhgv7)|#AN@W zO+fhS_93DpCV41EO8*o}W`|^WBpyZ%REf{2>ZIV3fbB8bdyi5waf5&J?Ei=Pe-Zz` z%b#|^B z6M2#eBHmmU7|-N8#oS{qRvd%$1+l8zD!A}|@+m!Oe!ist6ZWB7#3+LGk#?pR(Y?Y2 zBQ8e6flLWq@yoGlI*I0GMxsihiBz1Sx=nHn1=~;?$+N$Wg#%#=Us?ml1IS%X65gj)~#3X~W~KBKt(X1+Nbt@5JU7OVl=*de6esmnZU^ zJ2zm}qVhC};jw~V0*UOP2$i(@{TCPk!t_8C18+B}7*@e6k1*GfV)h15roMAkG({1% zjA|*^q;>hN9bA{nuHm8&b^w~v{J@qM5NH^vdB2*daX!6g4X@L+E0!#Ya5{JOgS!{b z2DrbaH6P>wm?weDpuEv9QB_5z*g}g7(MwFz<(3J~xag2VlPExMZ9Z)xk?xBSHBdRNs>vC!)uKatwpC6ofevqi-paxAL8JhIfkEOCf( z&~?rvTG2jDi7eCHE%iB7a?%%FE`wc44j$HZc16nkC`&HBB0ms(Q6EsyjR4O}b6`r7 z#{QlUXFT{O@4v(Zb*yh$@Y4!*+Qwc=K9uLqi`U& z<>`ib7n8U*rzd6RlWkii%1ZW}b6!0KHQ1bTQEv0|`z&OtQ{z>9&n@}On_%RaIB}&E zf`pMVIs&AN!wY|10~aoJ_emP2Jrh0u zhVXw(G(mzBMt)16Tt$9c1P({;)K*)C29dpBjA>xsGOe9>mt-YoG&{oD+AWVX`V)1T zTTf@fo1Op@ci5mwiBqSPNSOy={OW=$SOTg7Rcj{W@h#ok8m2+cBU zpkLKIOq%1O8iuP{#w`rNQyl!hY4?Hax_8T=0Y7C658fiIjv`{Z97@QQ=IJ&Xm>dTD5zKs2HToGWi7oP7p|LXT2;+*abY_BWRs)smu2gf zH=OuNfy6lTWOXgl?QwR=Ok_q=@H!dZ*wzw>8aKCyuN-Wb1Q9>C&wsv}h#~uJZmJd> z2*00}PE4o6KMw*&mIf6jEM#&QBV~Vlf2LG@X!58M&%4AfyKw`UYjC&{jGL~1bx6sL zUeGm*>%M-Fu=26{A}>Vf`3-=whBLg?if?XjsNe=bSnqi4EC2av&R0%0r-Tsqg6>_` z_W8Z}k&7hGiBgTdfnF-<5%P<B~>n6#QK*;cQ>}`0%LCbH6C%#I2=waA_(E z*LMTh_pM%$S>g2$`0%C!oa(XEhJQWi`OjL^rmOn~P*Y@b;?{7j#Ps9LjP_cfjQ{k` zx8Ao7vD9p_L?$DGmr@9;=lg1FobwG(eVgfq?&V$o1enqu`G&W~c?{4(F=(#i_`)cu z*_gwsf0w8oX`}r3@9*E9%af8eLrT}Y82#z7PS@)i_;?)dIp?LYMl(&i#+yQ)``Mnd zN_tC4em@nhza<^Xa{}b4iAXJC;7Z2_N@r;`x2rDLK{Y#Ax3Ie#QivK>ahp_K9RpUb zjz$!{9Tw>cW*)g8DR2{f621#_QS`KvCRnJ;>unjo)S{1w^# ziS%^SJR{w5ZBD{M*Wk_tJ5hq0!8!R`LrNpZ4n?8SglFEfh^1u2lx5ZtRx`KueQeXD&z44pfhW?;d1xjzORK@FW%bo#a3ZBp zWNJ%XQMN=N4yv6*xm=APP^|UYhUCqBr1|A7T|f)fDY_fnI;Ke?e+_h)Nnw%BMh-q; zV6Rda(~geiC)&_`NHF-sgA{ZIjPT}Hx!15-Knsxy0d=Z_-h9P5Z~?D!V{$VhO=iQR zp>dEb+il%h6yPJG7oua>60ogR15Bgi0ExkXM;o^W`nxz%F%&rqR*nOox|Hpw zQGRG*DG|ctID(zcS-vINi^Z9LFmNh}Mq0VKuS33~LLv6CpkoSpASJXjo8aoVkzIBt zmWQ7R4}BxcDkKI{WAj5(3J4MUss^lsy2Ef82XPQ+*oF$rPk4_Q zmW2rSl~fjLmz^Dg=t^-XWM#%B(nuFLpbS9dcEko`E(z`r0X~>V@*IiTuz>dk#AB0) zd!(t|q=~eFehTZq_Nay5*yYb+wQ7Cx1vgX(g&Xs?Rr`zmP|@0(VoxngUyDlJDk5Uj z@U*}I_tx*>bhvg+Y@G;5YUB}pK^;Me3+!8>1F)1hNCQl~n$MM{#*y?uG`1_fc9{{x zUPO4sU-=$&g2A70jNd0YDRh2j5oAcycw8b+bIkTJGozRk)g2D+?JQJ5Wsm|o%R4w5 zADin-@R1Af&bRCuR`K7#ikD^o(n9~^FU)l0AvLV8ouFE9=#iY zImcUn&8rWV3qwKpFH6PlUW%$|!FuPN`7bXO?%Z1juACOWvK^P3_r_t7EiZ2XUIusb zWLln$_12Ljkqw$ky%vl#d-t+?1$6yjUJzl$^H*$Y#LAKfV#CT!li3Ce{(ilO0bB05 z60TV@%_LYf&QtF1fTl_n87KY1MnAwYn_fwBM*MI4b4LD^ic_1Jepe0hfkJv<1uW~P zj8yptWDsq+S&OsQtrt}7{Uxr*U$t$Ah!-k3;(AcjftVW0@+T847VbtsqW!;LZwiYKG`*qT?STYX0=Dcn*Y^yG^%cEcFED^OA3^|GTYX&K(h_*kZN(7`-T?+Wh_ypWmLkJj^b9H4ij z>px-?g1vYfQ0`63IOjp=YG`*o%vgg6aSi_F*y1f)fz;*oo$Qz>*w0gjEd!@!@;i#; zS4&01(sXFXAF?A-F`6?vf$$>5L~_VeTnZ78MgX7+rGqt?N3ZP_*{UlS{<&;5j7%WR z{hmak7aog5#b_u9I09%>(0DU0>Yu(OwmoW1H;-`sGlj`lucW zb0si?dy+O*(2=-1YW~VaZQJQilQw42{jA!OKz8&V?ROIsaNrs*(i-ynH4i&r@99YXEZidgQ^7012NXb7*`}U&dWIQ(fS+Wx@Pu!PX z;K=4t75L}_SF}JOfjR(vCllnIsbG%Mt@RG9Z$rvQ3Ob2>mtJmDMX#p>zMpGv`FPn= zy1Bs7)DT}#Wwq}+eKq6QfU0meR6TKZa1n%;~EB84YYsry(^m8$v<;$xNB5W2N2My2e zRVXyd?KCh<+)6fs)j3lx!G!tBbuZs^#P#BQ$#yYxWcP<{QTL2ufg?tvzH1&C_qmpA zzPQG7x|C$k8>Tk5OS-1Lffz8dOCcu(w<$W0^@JEBT=nY^PjtcMk z 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, data, len); - newPacket->length = len; - newPacket->channel = channel; - - _crit.Enter(); - newPacket->receiveTime = NowMs() + _networkDelayMs; - _rtpPackets.push(newPacket); - _event.Set(); - _crit.Leave(); - return len; -} - -int TbExternalTransport::SendRTCPPacket(int channel, const void *data, int len) -{ - _statCrit.Enter(); - _rtcpCount++; - _statCrit.Leave(); - - VideoPacket* newPacket = new VideoPacket(); - memcpy(newPacket->packetBuffer, data, len); - newPacket->length = len; - newPacket->channel = channel; - - _crit.Enter(); - newPacket->receiveTime = NowMs() + _networkDelayMs; - _rtcpPackets.push(newPacket); - _event.Set(); - _crit.Leave(); - return len; -} - -WebRtc_Word32 TbExternalTransport::SetPacketLoss(WebRtc_Word32 lossRate) -{ - CriticalSectionScoped cs(_statCrit); - _lossRate = lossRate; - return 0; -} - -void TbExternalTransport::SetNetworkDelay(WebRtc_Word64 delayMs) -{ - CriticalSectionScoped cs(_crit); - _networkDelayMs = delayMs; - return; -} - -void TbExternalTransport::ClearStats() -{ - CriticalSectionScoped cs(_statCrit); - _rtpCount = 0; - _dropCount = 0; - _rtcpCount = 0; - return; -} - -void TbExternalTransport::GetStats(WebRtc_Word32& numRtpPackets, WebRtc_Word32& numDroppedPackets, WebRtc_Word32& numRtcpPackets) -{ - CriticalSectionScoped cs(_statCrit); - numRtpPackets = _rtpCount; - numDroppedPackets = _dropCount; - numRtcpPackets = _rtcpCount; - return; -} - -void TbExternalTransport::EnableSSRCCheck() -{ - CriticalSectionScoped cs(_statCrit); - _checkSSRC = true; -} -unsigned int TbExternalTransport::ReceivedSSRC() -{ - CriticalSectionScoped cs(_statCrit); - return _lastSSRC; -} - -void TbExternalTransport::EnableSequenceNumberCheck() -{ - CriticalSectionScoped cs(_statCrit); - _checkSequenceNumber = true; -} - -unsigned short TbExternalTransport::GetFirstSequenceNumber() -{ - CriticalSectionScoped cs(_statCrit); - return _firstSequenceNumber; -} - - -bool TbExternalTransport::ViEExternalTransportRun(void* object) -{ - return static_cast(object)->ViEExternalTransportProcess(); -} -bool TbExternalTransport::ViEExternalTransportProcess() -{ - unsigned int waitTime = KMaxWaitTimeMs; - - VideoPacket* packet = NULL; - - while (!_rtpPackets.empty()) - { - // Take first packet in queue - _crit.Enter(); - packet = _rtpPackets.front(); - WebRtc_Word64 timeToReceive = packet->receiveTime - NowMs(); - if (timeToReceive > 0) - { - // No packets to receive yet - if (timeToReceive < waitTime && - timeToReceive > 0) - { - waitTime = (unsigned int) timeToReceive; - } - _crit.Leave(); - break; - } - _rtpPackets.pop(); - _crit.Leave(); - - // Send to ViE - if (packet) - { - { - CriticalSectionScoped cs(_statCrit); - if (_checkSSRC) - { - _lastSSRC = ((packet->packetBuffer[8]) << 24); - _lastSSRC += (packet->packetBuffer[9] << 16); - _lastSSRC += (packet->packetBuffer[10] << 8); - _lastSSRC += packet->packetBuffer[11]; - _checkSSRC = false; - } - if (_checkSequenceNumber) - { - _firstSequenceNumber = (unsigned char)packet->packetBuffer[2] << 8; - _firstSequenceNumber += (unsigned char)packet->packetBuffer[3]; - _checkSequenceNumber = false; - } - } - /* - unsigned short sequenceNumber = (unsigned char)packet->packetBuffer[2] << 8; - sequenceNumber += (unsigned char)packet->packetBuffer[3]; - - int marker=packet->packetBuffer[1] & 0x80; - unsigned int timestamp=((((unsigned char*)packet->packetBuffer)[4]) << 24) + ((((unsigned char*)packet->packetBuffer)[5])<<16) +((((unsigned char*)packet->packetBuffer)[6])<<8)+(((unsigned char*)packet->packetBuffer)[7]); - char str[256]; - sprintf(str,"Receiving seq %u length %d m %d, ts %u\n", sequenceNumber,packet->length,marker,timestamp) ; - OutputDebugString(str);*/ - - _vieNetwork.ReceivedRTPPacket(packet->channel, packet->packetBuffer, packet->length); - delete packet; - packet = NULL; - } - } - while (!_rtcpPackets.empty()) - { - // Take first packet in queue - _crit.Enter(); - packet = _rtcpPackets.front(); - WebRtc_Word64 timeToReceive = packet->receiveTime - NowMs(); - if (timeToReceive > 0) - { - // No packets to receive yet - if (timeToReceive < waitTime && - timeToReceive > 0) - { - waitTime = (unsigned int) timeToReceive; - } - _crit.Leave(); - break; - } - packet = _rtcpPackets.front(); - _rtcpPackets.pop(); - _crit.Leave(); - - // Send to ViE - if (packet) - { - _vieNetwork.ReceivedRTCPPacket(packet->channel, packet->packetBuffer, packet->length); - delete packet; - packet = NULL; - } - } - _event.Wait(waitTime + 1); // Add 1 ms to not call to early... - return true; -} - -WebRtc_Word64 TbExternalTransport::NowMs() -{ - return TickTime::MillisecondTimestamp(); -} diff --git a/src/video_engine/main/test/WindowsTest/tbExternalTransport.h b/src/video_engine/main/test/WindowsTest/tbExternalTransport.h deleted file mode 100644 index 53226c6699..0000000000 --- a/src/video_engine/main/test/WindowsTest/tbExternalTransport.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -// -// tbExternalTransport.h -// - -#ifndef WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_TBEXTERNALTRANSPORT_H_ -#define WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_TBEXTERNALTRANSPORT_H_ - -#include "common_types.h" -#include - -namespace webrtc -{ -class CriticalSectionWrapper; -class EventWrapper; -class ThreadWrapper; -class ViENetwork; -} - -class TbExternalTransport : public webrtc::Transport -{ -public: - TbExternalTransport(webrtc::ViENetwork& vieNetwork); - ~TbExternalTransport(void); - - virtual int SendPacket(int channel, const void *data, int len); - virtual int SendRTCPPacket(int channel, const void *data, int len); - - WebRtc_Word32 SetPacketLoss(WebRtc_Word32 lossRate); // Rate in % - void SetNetworkDelay(WebRtc_Word64 delayMs); - - void ClearStats(); - void GetStats(WebRtc_Word32& numRtpPackets, WebRtc_Word32& numDroppedPackets, WebRtc_Word32& numRtcpPackets); - - void EnableSSRCCheck(); - unsigned int ReceivedSSRC(); - - void EnableSequenceNumberCheck(); - unsigned short GetFirstSequenceNumber(); - - -protected: - static bool ViEExternalTransportRun(void* object); - bool ViEExternalTransportProcess(); -private: - WebRtc_Word64 NowMs(); - - enum { KMaxPacketSize = 1650}; - enum { KMaxWaitTimeMs = 100}; - typedef struct - { - WebRtc_Word8 packetBuffer[KMaxPacketSize]; - WebRtc_Word32 length; - WebRtc_Word32 channel; - WebRtc_Word64 receiveTime; - } VideoPacket; - - typedef std::queue VideoPacketQueue; - - - webrtc::ViENetwork& _vieNetwork; - webrtc::ThreadWrapper& _thread; - webrtc::EventWrapper& _event; - webrtc::CriticalSectionWrapper& _crit; - webrtc::CriticalSectionWrapper& _statCrit; - - WebRtc_Word32 _lossRate; - WebRtc_Word64 _networkDelayMs; - WebRtc_Word32 _rtpCount; - WebRtc_Word32 _rtcpCount; - WebRtc_Word32 _dropCount; - - VideoPacketQueue _rtpPackets; - VideoPacketQueue _rtcpPackets; - - bool _checkSSRC; - WebRtc_UWord32 _lastSSRC; - bool _checkSequenceNumber; - WebRtc_UWord16 _firstSequenceNumber; - WebRtc_Word32 _lastSeq; - - //int& numberOfErrors; - - //int _bits; - //int _lastTicks; - //int _dropCnt; - //int _sentCount; - //int _frameCount; - //int _packetLoss; - - //VideoEngine* _video; - - //ReceiveBufferQueue _videoBufferQueue; - //ReceiveBufferQueue _rtcpBufferQueue; -}; - -#endif // WEBRTC_VIDEO_ENGINE_MAIN_TEST_WINDOWSTEST_TBEXTERNALTRANSPORT_H_ diff --git a/src/video_engine/main/test/WindowsTest/videosize.cc b/src/video_engine/main/test/WindowsTest/videosize.cc deleted file mode 100644 index a675ec5ff7..0000000000 --- a/src/video_engine/main/test/WindowsTest/videosize.cc +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include "VideoSize.h" -int GetWidthHeight( VideoSize size, int& width, int& height) -{ - switch(size) - { - case SQCIF: - width = 128; - height = 96; - return 0; - case QQVGA: - width = 160; - height = 120; - return 0; - case QCIF: - width = 176; - height = 144; - return 0; - case CGA: - width = 320; - height = 200; - return 0; - case QVGA: - width = 320; - height = 240; - return 0; - case SIF: - width = 352; - height = 240; - return 0; - case WQVGA: - width = 400; - height = 240; - return 0; - case CIF: - width = 352; - height = 288; - return 0; - case W288P: - width = 512; - height = 288; - return 0; - case W368P: - width = 640; - height = 368; - return 0; - case S_448P: - width = 576; - height = 448; - return 0; - case VGA: - width = 640; - height = 480; - return 0; - case S_432P: - width = 720; - height = 432; - return 0; - case W432P: - width = 768; - height = 432; - return 0; - case S_4SIF: - width = 704; - height = 480; - return 0; - case W448P: - width = 768; - height = 448; - return 0; - case NTSC: - width = 720; - height = 480; - return 0; - case FW448P: - width = 800; - height = 448; - return 0; - case S_768x480P: - width = 768; - height = 480; - return 0; - case WVGA: - width = 800; - height = 480; - return 0; - case S_4CIF: - width = 704; - height = 576; - return 0; - case SVGA: - width = 800; - height = 600; - return 0; - case W544P: - width = 960; - height = 544; - return 0; - case W576P: - width = 1024; - height = 576; - return 0; - case HD: - width = 960; - height = 720; - return 0; - case XGA: - width = 1024; - height = 768; - return 0; - case FULL_HD: - width = 1440; - height = 1080; - return 0; - case WHD: - width = 1280; - height = 720; - return 0; - case UXGA: - width = 1600; - height = 1200; - return 0; - case WFULL_HD: - width = 1920; - height = 1080; - return 0; - default: - return -1; - } - return -1; -} \ No newline at end of file diff --git a/src/video_engine/main/test/WindowsTest/windowstest.gypi b/src/video_engine/main/test/WindowsTest/windowstest.gypi deleted file mode 100644 index 83d0515744..0000000000 --- a/src/video_engine/main/test/WindowsTest/windowstest.gypi +++ /dev/null @@ -1,86 +0,0 @@ -# Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. -# -# Use of this source code is governed by a BSD-style license -# that can be found in the LICENSE file in the root of the source -# tree. An additional intellectual property rights grant can be found -# in the file PATENTS. All contributing project authors may -# be found in the AUTHORS file in the root of the source tree. - -{ - 'conditions': [ - # TODO(kjellander): Support UseoFMFC on VS2010. - # http://code.google.com/p/webrtc/issues/detail?id=709 - ['OS=="win" and MSVS_VERSION < "2010"', { - 'targets': [ - # WinTest - GUI test for Windows - { - 'target_name': 'vie_win_test', - 'type': 'executable', - 'dependencies': [ - '<(webrtc_root)/modules/modules.gyp:video_render_module', - '<(webrtc_root)/modules/modules.gyp:video_capture_module', - '<(webrtc_root)/system_wrappers/source/system_wrappers.gyp:system_wrappers', - ## VoiceEngine - '<(webrtc_root)/voice_engine/voice_engine.gyp:voice_engine_core', - ## VideoEngine - 'video_engine_core', - ], - 'include_dirs': [ - './interface', - '../../../../', # common_types.h and typedefs.h - '../commonTestClasses/' - ], - 'sources': [ - 'Capture.rc', - 'captureDeviceImage.jpg', - 'ChannelDlg.cc', - 'ChannelDlg.h', - 'ChannelPool.cc', - 'ChannelPool.h', - 'renderStartImage.jpg', - 'renderTimeoutImage.jpg', - 'res\Capture.rc2', - 'resource.h', - 'StdAfx.h', - 'videosize.cc', - 'VideoSize.h', - 'WindowsTest.cc', - 'WindowsTest.h', - 'WindowsTestMainDlg.cc', - 'WindowsTestMainDlg.h', - 'WindowsTestResouce.rc', - 'WindowsTestResource.h', - 'tbExternalTransport.cc', - 'CaptureDevicePool.cc', - 'tbExternalTransport.h', - 'CaptureDevicePool.h', - - ], - 'configurations': { - 'Common_Base': { - 'msvs_configuration_attributes': { - 'conditions': [ - ['component=="shared_library"', { - 'UseOfMFC': '2', # Shared DLL - },{ - 'UseOfMFC': '1', # Static - }], - ], - }, - }, - }, - 'msvs_settings': { - 'VCLinkerTool': { - 'SubSystem': '2', # Windows - }, - }, - }, - ], - }], - ], -} -# Local Variables: -# tab-width:2 -# indent-tabs-mode:nil -# End: -# vim: set expandtab tabstop=2 shiftwidth=2: diff --git a/src/video_engine/video_engine.gyp b/src/video_engine/video_engine.gyp index c02deae6de..6e72dd551b 100644 --- a/src/video_engine/video_engine.gyp +++ b/src/video_engine/video_engine.gyp @@ -17,7 +17,6 @@ 'includes': [ 'test/libvietest/libvietest.gypi', 'test/auto_test/vie_auto_test.gypi', - 'main/test/WindowsTest/windowstest.gypi', ], }], ],