Init
This commit is contained in:
40
Samples/RakVoiceDSound/CMakeLists.txt
Normal file
40
Samples/RakVoiceDSound/CMakeLists.txt
Normal file
@ -0,0 +1,40 @@
|
||||
#
|
||||
# This file was taken from RakNet 4.082.
|
||||
# Please see licenses/RakNet license.txt for the underlying license and related copyright.
|
||||
#
|
||||
#
|
||||
# Modified work: Copyright (c) 2017-2019, SLikeSoft UG (haftungsbeschränkt)
|
||||
#
|
||||
# This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style
|
||||
# license found in the license.txt file in the root directory of this source tree.
|
||||
#
|
||||
|
||||
cmake_minimum_required(VERSION 2.6)
|
||||
|
||||
|
||||
IF(WIN32 AND NOT UNIX)
|
||||
GETCURRENTFOLDER()
|
||||
FINDPORTAUDIO()
|
||||
FINDDSOUND()
|
||||
project(${current_folder})
|
||||
FILE(GLOB ALL_CPP_SRCS *.cpp ${SLikeNet_SOURCE_DIR}/DependentExtensions/RakVoice.cpp)
|
||||
FILE(GLOB ALL_HEADER_SRCS *.h ${SLikeNet_SOURCE_DIR}/DependentExtensions/RakVoice.h)
|
||||
FILE(GLOB SPEEXFILES ${speex_SOURCE_DIR}/win32/*.h ${speex_SOURCE_DIR}/include/*.h ${speex_SOURCE_DIR}/libspeex/*.h ${speex_SOURCE_DIR}/include/speex/*.h ${speex_SOURCE_DIR}/libspeex/*.c)
|
||||
LIST(REMOVE_ITEM SPEEXFILES
|
||||
${speex_SOURCE_DIR}/libspeex/pcm_wrapper.h)
|
||||
LIST(REMOVE_ITEM SPEEXFILES
|
||||
${speex_SOURCE_DIR}/libspeex/pcm_wrapper.c)
|
||||
SOURCE_GROUP(Speex FILES ${SPEEXFILES})
|
||||
ADDCPPDEF(HAVE_CONFIG_H)
|
||||
ADDCPPDEF(_UNICODE)
|
||||
ADDCPPDEF(UNICODE)
|
||||
include_directories(${SLIKENET_HEADER_FILES} ./ ${PORTAUDIO_INCLUDE_DIR} ${SLikeNet_SOURCE_DIR}/DependentExtensions ${speex_SOURCE_DIR}/include ${portaudio_SOURCE_DIR} ${speex_SOURCE_DIR}/win32 ${DSOUND_INCLUDE_DIR})
|
||||
add_executable(${current_folder} ${ALL_CPP_SRCS} ${ALL_HEADER_SRCS} ${SPEEXFILES})
|
||||
target_link_libraries(${current_folder} ${SLIKENET_COMMON_LIBS} winmm.lib ${DSOUND_LIBRARIES})
|
||||
VSUBFOLDER(${current_folder} Samples/Voice)
|
||||
ENDIF(WIN32 AND NOT UNIX)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
402
Samples/RakVoiceDSound/DSoundVoiceAdapter.cpp
Normal file
402
Samples/RakVoiceDSound/DSoundVoiceAdapter.cpp
Normal file
@ -0,0 +1,402 @@
|
||||
/*
|
||||
* Original work: Copyright (c) 2014, Oculus VR, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* RakNet License.txt file in the licenses directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the RakNet Patents.txt file in the same directory.
|
||||
*
|
||||
*
|
||||
* Modified work: Copyright (c) 2016-2020, SLikeSoft UG (haftungsbeschränkt)
|
||||
*
|
||||
* This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style
|
||||
* license found in the license.txt file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#include "DSoundVoiceAdapter.h"
|
||||
#include "slikenet/assert.h"
|
||||
#include "slikenet/peerinterface.h"
|
||||
#include <tchar.h>
|
||||
|
||||
/// To test sending to myself
|
||||
//#define _TEST_LOOPBACK
|
||||
|
||||
using namespace SLNet;
|
||||
|
||||
DSoundVoiceAdapter DSoundVoiceAdapter::instance;
|
||||
|
||||
DSoundVoiceAdapter::DSoundVoiceAdapter()
|
||||
{
|
||||
m_rakVoice = 0;
|
||||
ds = 0;
|
||||
dsC = 0;
|
||||
dsbIncoming = 0;
|
||||
dsbOutgoing = 0;
|
||||
m_mute = false;
|
||||
memset(incomingBufferNotifications,0,sizeof(incomingBufferNotifications));
|
||||
memset(outgoingBufferNotifications,0,sizeof(outgoingBufferNotifications));
|
||||
}
|
||||
|
||||
DSoundVoiceAdapter* DSoundVoiceAdapter::Instance()
|
||||
{
|
||||
return &instance;
|
||||
}
|
||||
|
||||
bool DSoundVoiceAdapter::SetupAdapter(RakVoice *rakVoice, HWND hwnd, DWORD dwCoopLevel)
|
||||
{
|
||||
// Check if it was already initialized
|
||||
RakAssert(ds == 0);
|
||||
if (ds != 0)
|
||||
return false;
|
||||
|
||||
HRESULT hr;
|
||||
|
||||
if (FAILED(hr = DirectSoundCreate8(nullptr, &ds, nullptr)))
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("DirectSoundCreate8, when initiliazing DirectSound"), hr);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (FAILED(hr = ds->SetCooperativeLevel(hwnd, dwCoopLevel)))
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("IDirectSound8::SetCooperativeLevel"), hr);
|
||||
Release();
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if the rest of the initialization fails, and if so, release any allocated resources
|
||||
if (SetupAdapter(rakVoice))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Release();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool DSoundVoiceAdapter::SetupAdapter(RakVoice *rakVoice, IDirectSound8 *pDS)
|
||||
{
|
||||
// Check if it was already initialized
|
||||
RakAssert(ds == 0);
|
||||
if (ds != 0)
|
||||
return false;
|
||||
|
||||
// User provided his own device object, so use it and add another reference
|
||||
pDS->AddRef();
|
||||
ds = pDS;
|
||||
|
||||
// Check if the rest of the initialization fails, and if so, release any allocated resources
|
||||
if (SetupAdapter(rakVoice))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
Release();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool DSoundVoiceAdapter::SetupAdapter(RakVoice *rakVoice)
|
||||
{
|
||||
RakAssert(rakVoice);
|
||||
// Make sure rakVoice was initialized
|
||||
RakAssert((rakVoice->IsInitialized())&&(rakVoice->GetRakPeerInterface()!= nullptr));
|
||||
|
||||
m_rakVoice = rakVoice;
|
||||
|
||||
if (!SetupIncomingBuffer())
|
||||
return false;
|
||||
|
||||
return SetupOutgoingBuffer();
|
||||
}
|
||||
|
||||
bool DSoundVoiceAdapter::SetupIncomingBuffer()
|
||||
{
|
||||
|
||||
//
|
||||
//
|
||||
// Create the buffer for incoming sound
|
||||
//
|
||||
//
|
||||
|
||||
WAVEFORMATEX wfx;
|
||||
DSBUFFERDESC dsbdesc;
|
||||
LPDIRECTSOUNDBUFFER pDsb = nullptr;
|
||||
HRESULT hr;
|
||||
// Set up WAV format structure.
|
||||
memset(&wfx, 0, sizeof(WAVEFORMATEX));
|
||||
wfx.wFormatTag = WAVE_FORMAT_PCM;
|
||||
wfx.nChannels = 1;
|
||||
wfx.nSamplesPerSec = m_rakVoice->GetSampleRate();
|
||||
wfx.nBlockAlign = 2;
|
||||
wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign;
|
||||
wfx.wBitsPerSample = 16;
|
||||
// Set up DSBUFFERDESC structure.
|
||||
memset(&dsbdesc, 0, sizeof(DSBUFFERDESC));
|
||||
dsbdesc.dwSize = sizeof(DSBUFFERDESC);
|
||||
dsbdesc.dwFlags = DSBCAPS_CTRLVOLUME | DSBCAPS_GLOBALFOCUS | DSBCAPS_CTRLPOSITIONNOTIFY
|
||||
| DSBCAPS_LOCSOFTWARE; // Create in software, because DX documentation says its the best option when using notifications
|
||||
dsbdesc.dwBufferBytes = m_rakVoice->GetBufferSizeBytes()*FRAMES_IN_SOUND;
|
||||
dsbdesc.lpwfxFormat = &wfx;
|
||||
// Create buffer.
|
||||
if (FAILED(hr = ds->CreateSoundBuffer(&dsbdesc, &pDsb, nullptr)))
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("IDirectSound8::CreateSoundBuffer, when creating buffer for incoming sound )"), hr);
|
||||
return false;
|
||||
}
|
||||
hr = pDsb->QueryInterface(IID_IDirectSoundBuffer8, (LPVOID*) &dsbIncoming);
|
||||
pDsb->Release();
|
||||
if (FAILED(hr))
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("IDirectSoundBuffer::QueryInterface, when getting IDirectSoundBuffer8 interface for incoming sound"), hr);
|
||||
return false;
|
||||
}
|
||||
//
|
||||
// Setup the notification events
|
||||
//
|
||||
for (int i=0; i<FRAMES_IN_SOUND; i++)
|
||||
{
|
||||
incomingBufferNotifications[i].dwOffset = i*m_rakVoice->GetBufferSizeBytes();
|
||||
#if defined(WINDOWS_PHONE_8)
|
||||
if ((incomingBufferNotifications[i].hEventNotify = CreateEventEx(0, 0, CREATE_EVENT_MANUAL_RESET, 0))== nullptr)
|
||||
#else
|
||||
if ((incomingBufferNotifications[i].hEventNotify = CreateEvent(nullptr, TRUE, FALSE, nullptr))== nullptr)
|
||||
#endif
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("CreateEvent"), GetLastError());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
IDirectSoundNotify8 *dsbNotify=0;
|
||||
if (FAILED(hr=dsbIncoming->QueryInterface(IID_IDirectSoundNotify8, (LPVOID*) &dsbNotify)))
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("IDirectSoundBuffer8::QueryInterface, when getting IDirectSoundNotify8 interface for incoming sound"), hr);
|
||||
return false;
|
||||
}
|
||||
hr = dsbNotify->SetNotificationPositions(FRAMES_IN_SOUND, incomingBufferNotifications);
|
||||
dsbNotify->Release();
|
||||
if (FAILED(hr))
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("IDirectSoundNotify8::SetNotificationPositions, when setting notifications for incoming sound"), hr);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (FAILED(hr = dsbIncoming->Play(0,0,DSBPLAY_LOOPING)))
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("IDirectSoundBuffer8::Play, when starting incoming sound buffer"), hr);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool DSoundVoiceAdapter::SetupOutgoingBuffer()
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
//
|
||||
//
|
||||
// Create the buffer for outgoing sound
|
||||
//
|
||||
//
|
||||
if (FAILED(hr=DirectSoundCaptureCreate8(nullptr, &dsC, nullptr)))
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("DirectSoundCaptureCreate8"), hr);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Set up WAV format structure.
|
||||
WAVEFORMATEX wfx;
|
||||
memset(&wfx, 0, sizeof(WAVEFORMATEX));
|
||||
wfx.wFormatTag = WAVE_FORMAT_PCM;
|
||||
wfx.nChannels = 1;
|
||||
wfx.nSamplesPerSec = m_rakVoice->GetSampleRate();
|
||||
wfx.nBlockAlign = 2;
|
||||
wfx.nAvgBytesPerSec = wfx.nSamplesPerSec * wfx.nBlockAlign;
|
||||
wfx.wBitsPerSample = 16;
|
||||
// Set up DSCBUFFERDESC structure.
|
||||
DSCBUFFERDESC dscbd;
|
||||
memset(&dscbd, 0, sizeof(DSCBUFFERDESC));
|
||||
dscbd.dwSize = sizeof(DSCBUFFERDESC);
|
||||
dscbd.dwFlags = 0;
|
||||
dscbd.dwBufferBytes = m_rakVoice->GetBufferSizeBytes()*FRAMES_IN_SOUND;
|
||||
dscbd.dwReserved = 0;
|
||||
dscbd.lpwfxFormat = &wfx;
|
||||
dscbd.dwFXCount = 0;
|
||||
dscbd.lpDSCFXDesc = nullptr;
|
||||
// Create capture buffer.
|
||||
LPDIRECTSOUNDCAPTUREBUFFER pDscb = nullptr;
|
||||
if (FAILED(hr = dsC->CreateCaptureBuffer(&dscbd, &pDscb, nullptr)))
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("IDirectSoundCapture8::CreateCaptureBuffer, when creating buffer for outgoing sound )"), hr);
|
||||
return false;
|
||||
}
|
||||
hr = pDscb->QueryInterface(IID_IDirectSoundCaptureBuffer8, (LPVOID*) &dsbOutgoing);
|
||||
pDscb->Release();
|
||||
if (FAILED(hr))
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("IDirectSoundBuffer::QueryInterface, when getting IDirectSoundCaptureBuffer8 interface for outgoing sound"), hr);
|
||||
return false;
|
||||
}
|
||||
//
|
||||
// Setup the notification events
|
||||
//
|
||||
for (int i=0; i<FRAMES_IN_SOUND; i++)
|
||||
{
|
||||
outgoingBufferNotifications[i].dwOffset = i*m_rakVoice->GetBufferSizeBytes();
|
||||
if ((outgoingBufferNotifications[i].hEventNotify = CreateEventEx(0, 0, CREATE_EVENT_MANUAL_RESET, 0))== nullptr)
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("CreateEvent"), GetLastError());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
IDirectSoundNotify8 *dsbNotify=0;
|
||||
if (FAILED(hr=dsbOutgoing->QueryInterface(IID_IDirectSoundNotify8, (LPVOID*) &dsbNotify)))
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("IDirectSoundCaptureBuffer8::QueryInterface, when getting IDirectSoundNotify8 interface for outgoing sound"), hr);
|
||||
return false;
|
||||
}
|
||||
hr = dsbNotify->SetNotificationPositions(FRAMES_IN_SOUND, outgoingBufferNotifications);
|
||||
dsbNotify->Release();
|
||||
if (FAILED(hr))
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("IDirectSoundNotify8::SetNotificationPositions, when setting notifications for outgoing sound"), hr);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (FAILED(hr = dsbOutgoing->Start(DSCBSTART_LOOPING)))
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("IDirectSoundCaptureBuffer8::Start, when starting outgoing sound buffer"), hr);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void DSoundVoiceAdapter::Release()
|
||||
{
|
||||
// Release DirectSound buffer used for incoming voice
|
||||
if (dsbIncoming)
|
||||
{
|
||||
dsbIncoming->Stop();
|
||||
dsbIncoming->Release();
|
||||
dsbIncoming = 0;
|
||||
}
|
||||
|
||||
// Release DirectSound buffer used for outgoing voice
|
||||
if (dsbOutgoing)
|
||||
{
|
||||
dsbOutgoing->Stop();
|
||||
dsbOutgoing->Release();
|
||||
dsbOutgoing = 0;
|
||||
}
|
||||
|
||||
// Release DirectSound device object
|
||||
if (ds)
|
||||
{
|
||||
ds->Release();
|
||||
ds = 0;
|
||||
}
|
||||
|
||||
if (dsC)
|
||||
{
|
||||
dsC->Release();
|
||||
dsC = 0;
|
||||
}
|
||||
|
||||
// Release the notification events
|
||||
for (int i=0; i<FRAMES_IN_SOUND;i++)
|
||||
{
|
||||
if (incomingBufferNotifications[i].hEventNotify!=0 && CloseHandle(incomingBufferNotifications[i].hEventNotify)==0)
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("CloseHandle"), GetLastError());
|
||||
}
|
||||
if (outgoingBufferNotifications[i].hEventNotify!=0 && CloseHandle(outgoingBufferNotifications[i].hEventNotify)==0)
|
||||
{
|
||||
DXTRACE_ERR_MSGBOX(_T("CloseHandle"), GetLastError());
|
||||
}
|
||||
}
|
||||
memset(incomingBufferNotifications,0, sizeof(incomingBufferNotifications));
|
||||
memset(outgoingBufferNotifications,0, sizeof(outgoingBufferNotifications));
|
||||
}
|
||||
|
||||
IDirectSound8* DSoundVoiceAdapter::GetDSDeviceObject()
|
||||
{
|
||||
return ds;
|
||||
}
|
||||
|
||||
void DSoundVoiceAdapter::Update()
|
||||
{
|
||||
HRESULT hr;
|
||||
void *audioPtr;
|
||||
DWORD audioPtrbytes;
|
||||
|
||||
for (int i=0; i<FRAMES_IN_SOUND; i++)
|
||||
{
|
||||
//
|
||||
// Update incoming sound
|
||||
//
|
||||
if (WaitForSingleObject(incomingBufferNotifications[i].hEventNotify, 0)==WAIT_OBJECT_0)
|
||||
{
|
||||
// The lock offset is the buffer right before the one the event refers to
|
||||
DWORD dwOffset = (i==0) ? incomingBufferNotifications[FRAMES_IN_SOUND-1].dwOffset : incomingBufferNotifications[i-1].dwOffset;
|
||||
hr = dsbIncoming->Lock(dwOffset, m_rakVoice->GetBufferSizeBytes(), &audioPtr, &audioPtrbytes, nullptr, nullptr, 0);
|
||||
// #med - should change GetBufferSizeBytes()-interface to unsigned int return
|
||||
RakAssert(audioPtrbytes==static_cast<unsigned int>(m_rakVoice->GetBufferSizeBytes()));
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
m_rakVoice->ReceiveFrame(audioPtr);
|
||||
dsbIncoming->Unlock(audioPtr, audioPtrbytes, nullptr, 0);
|
||||
}
|
||||
ResetEvent(incomingBufferNotifications[i].hEventNotify);
|
||||
}
|
||||
|
||||
//
|
||||
// Update outgoing sound
|
||||
//
|
||||
if (WaitForSingleObject(outgoingBufferNotifications[i].hEventNotify, 0)==WAIT_OBJECT_0)
|
||||
{
|
||||
|
||||
/* If we're set to mute, we don't send anything, and just reset the event */
|
||||
if (!m_mute)
|
||||
{
|
||||
// The lock offset is the buffer right before the one the event refers to
|
||||
DWORD dwOffset = (i==0) ? outgoingBufferNotifications[FRAMES_IN_SOUND-1].dwOffset : outgoingBufferNotifications[i-1].dwOffset;
|
||||
hr = dsbOutgoing->Lock(dwOffset, m_rakVoice->GetBufferSizeBytes(), &audioPtr, &audioPtrbytes, nullptr, nullptr, 0);
|
||||
// #med - should change GetBufferSizeBytes()-interface to unsigned int return
|
||||
RakAssert(audioPtrbytes == static_cast<unsigned int>(m_rakVoice->GetBufferSizeBytes()));
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
BroadcastFrame(audioPtr);
|
||||
dsbOutgoing->Unlock(audioPtr, audioPtrbytes, nullptr, 0);
|
||||
}
|
||||
}
|
||||
ResetEvent(outgoingBufferNotifications[i].hEventNotify);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
void DSoundVoiceAdapter::BroadcastFrame(void *ptr)
|
||||
{
|
||||
#ifndef _TEST_LOOPBACK
|
||||
unsigned i;
|
||||
|
||||
unsigned int numPeers = m_rakVoice->GetRakPeerInterface()->GetMaximumNumberOfPeers();
|
||||
for (i=0; i < numPeers; i++)
|
||||
{
|
||||
m_rakVoice->SendFrame(m_rakVoice->GetRakPeerInterface()->GetGUIDFromIndex(i), ptr);
|
||||
}
|
||||
#else
|
||||
m_rakVoice->SendFrame(SLNet::UNASSIGNED_SYSTEM_ADDRESS, ptr);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
void DSoundVoiceAdapter::SetMute(bool mute)
|
||||
{
|
||||
m_mute = mute;
|
||||
}
|
||||
129
Samples/RakVoiceDSound/DSoundVoiceAdapter.h
Normal file
129
Samples/RakVoiceDSound/DSoundVoiceAdapter.h
Normal file
@ -0,0 +1,129 @@
|
||||
/*
|
||||
* Original work: Copyright (c) 2014, Oculus VR, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* RakNet License.txt file in the licenses directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the RakNet Patents.txt file in the same directory.
|
||||
*
|
||||
*
|
||||
* Modified work: Copyright (c) 2016-2017, SLikeSoft UG (haftungsbeschränkt)
|
||||
*
|
||||
* This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style
|
||||
* license found in the license.txt file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
/// \file
|
||||
/// \brief Connection between DirectSound and RakVoice
|
||||
///
|
||||
|
||||
/*
|
||||
This sample uses RakVoice along with DirectSound 8.
|
||||
|
||||
Instead of using IDirectSoundBuffer::GetCurrentPosition / IDirectSoundCaptureBuffer::GetCurrentPosition
|
||||
to keep track of the play/write cursors, notifications are used instead.
|
||||
Speex encodes/decodes sound in blocks (frames), so the size of the used DirectSound buffers is
|
||||
multiple of the Speex's frame size. This makes it easier to implement DirectSound notifications at the end
|
||||
of each frame.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __DSOUNDVOICEADAPTER_H
|
||||
#define __DSOUNDVOICEADAPTER_H
|
||||
|
||||
#include "RakVoice.h"
|
||||
|
||||
// If you get:
|
||||
// Error 1 fatal error C1083: Cannot open include file: 'dsound.h': No such file or directory
|
||||
// It is because this project depends on Directx SDK. You must have the DirectX SDK installed.
|
||||
// Also, check if you have the DXSDK_DIR environment variable point to the right DX SDK path,
|
||||
// or change the project settings to point to the right include and lib directories
|
||||
#include "dsound.h"
|
||||
#include "dxerr.h"
|
||||
|
||||
// for Unicode support, we have to include legacy_stdio_definitions.lib with VS 2015+ so to define
|
||||
// _vsnwprintf which is referenced in dxerr.lib(dxerrw.obj) but no longer exported in the standard libs
|
||||
// as of VS 2015
|
||||
// reference: https://connect.microsoft.com/VisualStudio/feedback/details/1134693/vs-2015-ctp-5-c-vsnwprintf-s-and-other-functions-are-not-exported-in-appcrt140-dll-breaking-linkage-of-static-libraries
|
||||
#if _MSC_VER >= 1900 && defined(_DEBUG) && defined(UNICODE)
|
||||
#pragma comment(lib, "legacy_stdio_definitions.lib")
|
||||
#endif
|
||||
|
||||
namespace SLNet {
|
||||
|
||||
class DSoundVoiceAdapter
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
// --------------------------------------------------------------------------------------------
|
||||
// User functions
|
||||
// --------------------------------------------------------------------------------------------
|
||||
|
||||
/// Returns the singleton
|
||||
static DSoundVoiceAdapter* Instance();
|
||||
|
||||
/// \brief Setups the connection between RakVoice and DirectSound
|
||||
/// This function initializes all the required DirectSound objects for you. If you already have
|
||||
/// initialized DirectSound on your own, use the other supplied SetupAdater function, where you can
|
||||
/// pass your own DirectSound device object
|
||||
/// \param[in] rakVoice RakVoice object to use, fully Initialized AND attached to a RakPeerInterface.
|
||||
/// \param[in] hwnd Your Window Handle. Required for DirectSound initialization
|
||||
/// \param[in] dwCoopLevel DirectSound cooperative level. Required for DirectSound initialization
|
||||
bool SetupAdapter(RakVoice *rakVoice, HWND hwnd, DWORD dwCoopLevel=DSSCL_EXCLUSIVE);
|
||||
|
||||
/// \brief Setups the connection between RakVoice and DirectSound
|
||||
/// \param[in] rakVoice RakVoice object to use, fully Initialized AND attached to a RakPeerInterface.
|
||||
/// \param[in] pDS DirectSound Device Object to use.
|
||||
/// \pre IMPORTANT : Don't forget to initialized and attach rakVoice, before calling this method.
|
||||
/// \return true on success, false if an error occurred.
|
||||
bool SetupAdapter(RakVoice *rakVoice, IDirectSound8 *pDS);
|
||||
|
||||
|
||||
/// \brief Releases any resources used
|
||||
void Release();
|
||||
|
||||
/// \brief This needs to be called once per game frame
|
||||
void Update();
|
||||
|
||||
/// \brief Turns on/off outgoing traffic
|
||||
/// \param[in] true to mute, false to allow outgoing traffic.
|
||||
void SetMute(bool mute);
|
||||
|
||||
/// \brief Returns the used DirectSound Device object
|
||||
IDirectSound8* GetDSDeviceObject();
|
||||
|
||||
private:
|
||||
|
||||
enum
|
||||
{
|
||||
FRAMES_IN_SOUND = 2 // Number of voice frames the DirectSound buffers will contain
|
||||
};
|
||||
|
||||
/// Internal setup function called after proper directsound initialization
|
||||
bool SetupAdapter(RakVoice *rakVoice);
|
||||
bool SetupIncomingBuffer();
|
||||
bool SetupOutgoingBuffer();
|
||||
void BroadcastFrame(void *ptr);
|
||||
|
||||
|
||||
DSoundVoiceAdapter();
|
||||
DSoundVoiceAdapter(DSoundVoiceAdapter &) {}
|
||||
|
||||
static DSoundVoiceAdapter instance;
|
||||
RakVoice *m_rakVoice;
|
||||
IDirectSound8 *ds; // Pointer to the DirectSound Device Object
|
||||
IDirectSoundCapture8 *dsC; // Pointer to the DirectSound Capture Device Object
|
||||
IDirectSoundBuffer8 *dsbIncoming; // DirectSound buffer for incoming sound (what you'll hear)
|
||||
IDirectSoundCaptureBuffer8 *dsbOutgoing; // DirectSound buffer used for outgoing sound (capture from your microphone and send to the other players)
|
||||
bool m_mute;
|
||||
|
||||
// DirectSound notification positions with the required Win32 Event objects
|
||||
DSBPOSITIONNOTIFY incomingBufferNotifications[FRAMES_IN_SOUND];
|
||||
DSBPOSITIONNOTIFY outgoingBufferNotifications[FRAMES_IN_SOUND];
|
||||
|
||||
};
|
||||
|
||||
} // namespace SLNet
|
||||
|
||||
#endif
|
||||
506
Samples/RakVoiceDSound/RakVoiceDSound.vcxproj
Normal file
506
Samples/RakVoiceDSound/RakVoiceDSound.vcxproj
Normal file
@ -0,0 +1,506 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug - Unicode|Win32">
|
||||
<Configuration>Debug - Unicode</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release - Unicode|Win32">
|
||||
<Configuration>Release - Unicode</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Retail - Unicode|Win32">
|
||||
<Configuration>Retail - Unicode</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Retail|Win32">
|
||||
<Configuration>Retail</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectName>RakVoiceDSound</ProjectName>
|
||||
<ProjectGuid>{CC15F4DA-8B51-4A97-9E30-B44DDC966565}</ProjectGuid>
|
||||
<RootNamespace>RakVoiceDSound</RootNamespace>
|
||||
<Keyword>Win32Proj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup>
|
||||
<_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">$(Configuration)\</OutDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">true</LinkIncremental>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">$(Configuration)\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">$(Configuration)\</OutDir>
|
||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">$(Configuration)\</OutDir>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">false</LinkIncremental>
|
||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/wd4996 %(AdditionalOptions)</AdditionalOptions>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./../../Source/include;./../../DependentExtensions;./../../DependentExtensions/speex-1.1.12/include;./../../DependentExtensions/speex-1.1.12/win32;$(DXSDK_DIR)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;_DEBUG;_CONSOLE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>./../../Lib/SLikeNet_LibStatic_Debug_Win32.lib;Winmm.lib;ws2_32.lib;Dsound.lib;Dxguid.lib;Dxerr.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(DXSDK_DIR)lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<TreatLinkerWarningAsErrors>true</TreatLinkerWarningAsErrors>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/wd4996 %(AdditionalOptions)</AdditionalOptions>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>./../../Source/include;./../../DependentExtensions;./../../DependentExtensions/speex-1.1.12/include;./../../DependentExtensions/speex-1.1.12/win32;$(DXSDK_DIR)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;_DEBUG;_CONSOLE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>./../../Lib/SLikeNet_LibStatic_Debug - Unicode_Win32.lib;Winmm.lib;ws2_32.lib;Dsound.lib;Dxguid.lib;Dxerr.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(DXSDK_DIR)lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<TreatLinkerWarningAsErrors>true</TreatLinkerWarningAsErrors>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/wd4996 %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalIncludeDirectories>./../../Source/include;./../../DependentExtensions;./../../DependentExtensions/speex-1.1.12/include;./../../DependentExtensions/speex-1.1.12/win32;$(DXSDK_DIR)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>./../../Lib/SLikeNet_LibStatic_Release_Win32.lib;Winmm.lib;ws2_32.lib;Dsound.lib;Dxguid.lib;Dxerr.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(DXSDK_DIR)lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<TreatLinkerWarningAsErrors>true</TreatLinkerWarningAsErrors>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/wd4996 %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalIncludeDirectories>./../../Source/include;./../../DependentExtensions;./../../DependentExtensions/speex-1.1.12/include;./../../DependentExtensions/speex-1.1.12/win32;$(DXSDK_DIR)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;_RETAIL;NDEBUG;_CONSOLE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>./../../Lib/SLikeNet_LibStatic_Retail_Win32.lib;Winmm.lib;ws2_32.lib;Dsound.lib;Dxguid.lib;Dxerr.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(DXSDK_DIR)lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<TreatLinkerWarningAsErrors>true</TreatLinkerWarningAsErrors>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/wd4996 %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalIncludeDirectories>./../../Source/include;./../../DependentExtensions;./../../DependentExtensions/speex-1.1.12/include;./../../DependentExtensions/speex-1.1.12/win32;$(DXSDK_DIR)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;NDEBUG;_CONSOLE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>./../../Lib/SLikeNet_LibStatic_Release - Unicode_Win32.lib;Winmm.lib;ws2_32.lib;Dsound.lib;Dxguid.lib;Dxerr.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(DXSDK_DIR)lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<TreatLinkerWarningAsErrors>true</TreatLinkerWarningAsErrors>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalOptions>/wd4996 %(AdditionalOptions)</AdditionalOptions>
|
||||
<AdditionalIncludeDirectories>./../../Source/include;./../../DependentExtensions;./../../DependentExtensions/speex-1.1.12/include;./../../DependentExtensions/speex-1.1.12/win32;$(DXSDK_DIR)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_CRT_SECURE_NO_DEPRECATE;WIN32;_RETAIL;NDEBUG;_CONSOLE;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level4</WarningLevel>
|
||||
<TreatWarningAsError>true</TreatWarningAsError>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>./../../Lib/SLikeNet_LibStatic_Retail - Unicode_Win32.lib;Winmm.lib;ws2_32.lib;Dsound.lib;Dxguid.lib;Dxerr.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(DXSDK_DIR)lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<SubSystem>Console</SubSystem>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
||||
<DataExecutionPrevention>
|
||||
</DataExecutionPrevention>
|
||||
<TreatLinkerWarningAsErrors>true</TreatLinkerWarningAsErrors>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="DSoundVoiceAdapter.cpp" />
|
||||
<ClCompile Include="main.cpp" />
|
||||
<ClCompile Include="..\..\DependentExtensions\RakVoice.cpp" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\bits.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\cb_search.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\exc_10_16_table.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\exc_10_32_table.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\exc_20_32_table.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\exc_5_256_table.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\exc_5_64_table.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\exc_8_128_table.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\fftwrap.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4244</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\filters.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\gain_table.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\gain_table_lbr.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\hexc_10_32_table.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\hexc_table.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\high_lsp_tables.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\jitter.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4100;4127;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4100;4127;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4100;4127;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4100;4127;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4100;4127;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4100;4127;4244;4305</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\kiss_fft.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4018;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4018;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4018;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4018;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4018;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4018;4244</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\kiss_fftr.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4244</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\lbr_48k_tables.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\lpc.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4244</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\lsp.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4244</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\lsp_tables_nb.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\ltp.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4100;4101;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4100;4101;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4100;4101;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4100;4101;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4100;4101;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4100;4101;4244;4305</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\math_approx.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4244</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\mdf.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4244;4305</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\misc.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4244</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\modes.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4305</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\nb_celp.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4701;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4701;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4701;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4701;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4701;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4701;4244;4305</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\preprocess.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4100;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4100;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4100;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4100;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4100;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4100;4244;4305</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\quant_lsp.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4244</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\sb_celp.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4244;4305</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\smallft.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4244</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\speex.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\speex_callbacks.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\speex_header.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\stereo.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4100;4244</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vbr.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4100;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4100;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4100;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4100;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4100;4244;4305</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4100;4244;4305</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vorbis_psy.c" />
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vq.c">
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">4100</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Debug - Unicode|Win32'">4100</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release - Unicode|Win32'">4100</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail|Win32'">4100</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">4100</DisableSpecificWarnings>
|
||||
<DisableSpecificWarnings Condition="'$(Configuration)|$(Platform)'=='Retail - Unicode|Win32'">4100</DisableSpecificWarnings>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="DSoundVoiceAdapter.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\RakVoice.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\_kiss_fft_guts.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\arch.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\cb_search.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\cb_search_arm4.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\cb_search_bfin.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\cb_search_sse.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\fftwrap.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\filters.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\filters_arm4.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\filters_bfin.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\filters_sse.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\fixed_arm4.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\fixed_arm5e.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\fixed_bfin.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\fixed_debug.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\fixed_generic.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\kiss_fft.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\kiss_fftr.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\lpc.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\lpc_bfin.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\lsp.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\ltp.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\ltp_arm4.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\ltp_bfin.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\ltp_sse.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\math_approx.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\misc.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\misc_bfin.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\modes.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\nb_celp.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\pseudofloat.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\quant_lsp.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\sb_celp.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\smallft.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\stack_alloc.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vbr.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vorbis_psy.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vq.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vq_arm4.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vq_bfin.h" />
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vq_sse.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\Lib\LibStatic\LibStatic.vcxproj">
|
||||
<Project>{6533bdae-0f0c-45e4-8fe7-add0f37fe063}</Project>
|
||||
<ReferenceOutputAssembly>false</ReferenceOutputAssembly>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
279
Samples/RakVoiceDSound/RakVoiceDSound.vcxproj.filters
Normal file
279
Samples/RakVoiceDSound/RakVoiceDSound.vcxproj.filters
Normal file
@ -0,0 +1,279 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Speex">
|
||||
<UniqueIdentifier>{818e0f65-e3e4-4604-926d-97ccae1f8bf4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="DSoundVoiceAdapter.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="main.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\RakVoice.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\bits.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\cb_search.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\exc_10_16_table.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\exc_10_32_table.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\exc_20_32_table.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\exc_5_256_table.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\exc_5_64_table.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\exc_8_128_table.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\fftwrap.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\filters.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\gain_table.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\gain_table_lbr.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\hexc_10_32_table.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\hexc_table.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\high_lsp_tables.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\jitter.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\kiss_fft.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\kiss_fftr.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\lbr_48k_tables.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\lpc.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\lsp.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\lsp_tables_nb.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\ltp.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\math_approx.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\mdf.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\misc.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\modes.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\nb_celp.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\preprocess.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\quant_lsp.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\sb_celp.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\smallft.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\speex.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\speex_callbacks.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\speex_header.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\stereo.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vbr.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vorbis_psy.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vq.c">
|
||||
<Filter>Speex</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="DSoundVoiceAdapter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\RakVoice.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\_kiss_fft_guts.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\arch.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\cb_search.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\cb_search_arm4.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\cb_search_bfin.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\cb_search_sse.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\fftwrap.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\filters.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\filters_arm4.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\filters_bfin.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\filters_sse.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\fixed_arm4.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\fixed_arm5e.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\fixed_bfin.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\fixed_debug.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\fixed_generic.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\kiss_fft.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\kiss_fftr.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\lpc.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\lpc_bfin.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\lsp.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\ltp.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\ltp_arm4.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\ltp_bfin.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\ltp_sse.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\math_approx.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\misc.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\misc_bfin.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\modes.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\nb_celp.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\pseudofloat.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\quant_lsp.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\sb_celp.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\smallft.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\stack_alloc.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vbr.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vorbis_psy.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vq.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vq_arm4.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vq_bfin.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\DependentExtensions\speex-1.1.12\libspeex\vq_sse.h">
|
||||
<Filter>Speex</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
304
Samples/RakVoiceDSound/main.cpp
Normal file
304
Samples/RakVoiceDSound/main.cpp
Normal file
@ -0,0 +1,304 @@
|
||||
/*
|
||||
* Original work: Copyright (c) 2014, Oculus VR, Inc.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This source code is licensed under the BSD-style license found in the
|
||||
* RakNet License.txt file in the licenses directory of this source tree. An additional grant
|
||||
* of patent rights can be found in the RakNet Patents.txt file in the same directory.
|
||||
*
|
||||
*
|
||||
* Modified work: Copyright (c) 2016-2020, SLikeSoft UG (haftungsbeschränkt)
|
||||
*
|
||||
* This source code was modified by SLikeSoft. Modifications are licensed under the MIT-style
|
||||
* license found in the license.txt file in the root directory of this source tree.
|
||||
*/
|
||||
|
||||
#define INTERACTIVE
|
||||
|
||||
#if defined(INTERACTIVE)
|
||||
#include "slikenet/Kbhit.h"
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <memory.h>
|
||||
#include <limits> // used for std::numeric_limits
|
||||
#include "slikenet/peerinterface.h"
|
||||
#include "slikenet/MessageIdentifiers.h"
|
||||
|
||||
#include "slikenet/sleep.h"
|
||||
#include "RakVoice.h"
|
||||
#include "slikenet/statistics.h"
|
||||
#include "slikenet/GetTime.h"
|
||||
#include "slikenet/assert.h"
|
||||
#include "slikenet/Gets.h"
|
||||
#include "DSoundVoiceAdapter.h"
|
||||
#include "slikenet/linux_adapter.h"
|
||||
#include "slikenet/osx_adapter.h"
|
||||
|
||||
// Reads and writes per second of the sound data
|
||||
// Speex only supports these 3 values
|
||||
#define SAMPLE_RATE (8000)
|
||||
//#define SAMPLE_RATE (16000)
|
||||
//#define SAMPLE_RATE (32000)
|
||||
|
||||
#define FRAMES_PER_BUFFER (2048 / (32000 / SAMPLE_RATE))
|
||||
|
||||
// define sample type. Only short(16 bits sound) is supported at the moment.
|
||||
typedef short SAMPLE;
|
||||
|
||||
SLNet::RakPeerInterface *rakPeer= nullptr;
|
||||
SLNet::RakVoice rakVoice;
|
||||
|
||||
struct myStat{
|
||||
uint64_t time;
|
||||
uint64_t bitsRec;
|
||||
uint64_t bitsSent;
|
||||
};
|
||||
|
||||
// Keeps a record of the last 20 calls, to give a faster response to traffic change
|
||||
void LogStats(){
|
||||
const int numStats = 20;
|
||||
static myStat data[numStats];
|
||||
|
||||
for(int i=0; i<=numStats-2; i++){
|
||||
data[i] = data[i+1];
|
||||
}
|
||||
|
||||
SLNet::RakNetStatistics *rss=rakPeer->GetStatistics(rakPeer->GetSystemAddressFromIndex(0));
|
||||
unsigned int currTime = SLNet::GetTimeMS();
|
||||
|
||||
data[numStats-1].time = currTime;
|
||||
data[numStats-1].bitsSent = BYTES_TO_BITS(rss->runningTotal[SLNet::USER_MESSAGE_BYTES_SENT]);
|
||||
data[numStats-1].bitsRec = BYTES_TO_BITS(rss->runningTotal[SLNet::USER_MESSAGE_BYTES_RECEIVED_PROCESSED]);
|
||||
|
||||
float totalTime = (data[numStats-1].time - data[0].time) / 1000.f ;
|
||||
uint64_t totalBitsSent = data[numStats-1].bitsSent - data[0].bitsSent;
|
||||
uint64_t totalBitsRec = data[numStats-1].bitsRec - data[0].bitsRec;
|
||||
float bpsSent = totalBitsSent/totalTime;
|
||||
float bpsRec = totalBitsRec/totalTime;
|
||||
float avgBpsSent = static_cast<float>(rss->valueOverLastSecond[SLNet::USER_MESSAGE_BYTES_SENT]);
|
||||
float avgBpsRec = static_cast<float>(rss->valueOverLastSecond[SLNet::USER_MESSAGE_BYTES_RECEIVED_PROCESSED]);
|
||||
|
||||
printf("avgKbpsSent=%02.1f avgKbpsRec=%02.1f kbpsSent=%02.1f kbpsRec=%02.1f \r", avgBpsSent/1000, avgBpsRec/1000, bpsSent/1000 , bpsRec/1000);
|
||||
//printf("MsgBuf=%6i SndBuf=%10i RcvBuf=%10i \r", rakVoice.GetRakPeerInterface()->GetStatistics(SLNet::UNASSIGNED_SYSTEM_ADDRESS)->messageSendBuffer[HIGH_PRIORITY], rakVoice.GetBufferedBytesToSend(SLNet::UNASSIGNED_SYSTEM_ADDRESS), rakVoice.GetBufferedBytesToReturn(SLNet::UNASSIGNED_SYSTEM_ADDRESS));
|
||||
}
|
||||
|
||||
// Prints the current encoder parameters
|
||||
void PrintParameters(void)
|
||||
{
|
||||
printf("\nComplexity=%3d Noise filter=%3s VAD=%3s VBR=%3s\n"
|
||||
,rakVoice.GetEncoderComplexity()
|
||||
,(rakVoice.IsNoiseFilterActive()) ? "ON" : "OFF"
|
||||
,(rakVoice.IsVADActive()) ? "ON" : "OFF"
|
||||
,(rakVoice.IsVBRActive()) ? "ON" : "OFF");
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// Utility function to obtain a Console Window Handle (HWND), as explained in:
|
||||
// http://support.microsoft.com/kb/124103
|
||||
//
|
||||
HWND GetConsoleHwnd(void)
|
||||
{
|
||||
#define MY_BUFSIZE 1024 // Buffer size for console window titles.
|
||||
HWND hwndFound; // This is what is returned to the caller.
|
||||
TCHAR pszNewWindowTitle[MY_BUFSIZE]; // Contains fabricated
|
||||
// WindowTitle.
|
||||
TCHAR pszOldWindowTitle[MY_BUFSIZE]; // Contains original
|
||||
// WindowTitle.
|
||||
|
||||
// Fetch current window title.
|
||||
GetConsoleTitle(pszOldWindowTitle, MY_BUFSIZE);
|
||||
|
||||
// Format a "unique" NewWindowTitle.
|
||||
wsprintf(pszNewWindowTitle,TEXT("%d/%d"),
|
||||
GetTickCount(),
|
||||
GetCurrentProcessId());
|
||||
|
||||
// Change current window title.
|
||||
SetConsoleTitle(pszNewWindowTitle);
|
||||
|
||||
// Ensure window title has been updated.
|
||||
Sleep(40);
|
||||
|
||||
// Look for NewWindowTitle.
|
||||
hwndFound=FindWindow(nullptr, pszNewWindowTitle);
|
||||
|
||||
// Restore original window title.
|
||||
SetConsoleTitle(pszOldWindowTitle);
|
||||
|
||||
return(hwndFound);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
||||
printf("A sample on how to use RakVoice together with DirectSound.\n");
|
||||
printf("You need a microphone for this sample.\n");
|
||||
printf("RakVoice relies on Speex for voice encoding and decoding.\n");
|
||||
printf("See DependentExtensions/RakVoice/speex-1.2beta3 for speex projects.\n");
|
||||
printf("For windows, I had to define HAVE_CONFIG_H, include win32/config.h,\n");
|
||||
printf("and include the files under libspeex, except those that start with test.\n");
|
||||
printf("Difficulty: Advanced\n\n");
|
||||
|
||||
bool mute=false;
|
||||
bool quit;
|
||||
int ch;
|
||||
|
||||
char port[256];
|
||||
rakPeer = SLNet::RakPeerInterface::GetInstance();
|
||||
#if defined(INTERACTIVE)
|
||||
printf("Enter local port: ");
|
||||
Gets(port, sizeof(port));
|
||||
if (port[0]==0)
|
||||
#endif
|
||||
strcpy_s(port, "60000");
|
||||
const int intLocalPort = atoi(port);
|
||||
if ((intLocalPort < 0) || (intLocalPort > std::numeric_limits<unsigned short>::max())) {
|
||||
printf("Failed. Specified local port %d is outside valid bounds [0, %u]", intLocalPort, std::numeric_limits<unsigned short>::max());
|
||||
return -1;
|
||||
}
|
||||
SLNet::SocketDescriptor socketDescriptor(static_cast<unsigned short>(intLocalPort),0);
|
||||
|
||||
rakPeer->Startup(4, &socketDescriptor, 1);
|
||||
|
||||
rakPeer->SetMaximumIncomingConnections(4);
|
||||
rakPeer->AttachPlugin(&rakVoice);
|
||||
|
||||
rakVoice.Init(SAMPLE_RATE, FRAMES_PER_BUFFER*sizeof(SAMPLE));
|
||||
|
||||
// Initialize our connection with DirectSound
|
||||
if (!SLNet::DSoundVoiceAdapter::Instance()->SetupAdapter(&rakVoice, GetConsoleHwnd(), DSSCL_EXCLUSIVE))
|
||||
{
|
||||
printf("An error occurred while initializing DirectSound.\n");
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
SLNet::Packet *p;
|
||||
quit=false;
|
||||
#if defined(INTERACTIVE)
|
||||
printf("(Q)uit. (C)onnect. (D)isconnect. (M)ute. ' ' for stats.\n");
|
||||
printf("(+/-)encoder complexity. (N)oise filter on/off. (V)AD on/off. (B)vbr on/off.\n");
|
||||
#else
|
||||
rakPeer->Connect("1.1.1.1", 60000, 0,0);
|
||||
#endif
|
||||
PrintParameters();
|
||||
while (!quit)
|
||||
{
|
||||
#if defined(INTERACTIVE)
|
||||
if (_kbhit())
|
||||
{
|
||||
ch=_getch();
|
||||
if (ch=='+'){
|
||||
// Increase encoder complexity
|
||||
int v = rakVoice.GetEncoderComplexity();
|
||||
if (v<10) rakVoice.SetEncoderComplexity(v+1);
|
||||
PrintParameters();
|
||||
}
|
||||
else if (ch=='-'){
|
||||
// Decrease encoder complexity
|
||||
int v = rakVoice.GetEncoderComplexity();
|
||||
if (v>0) rakVoice.SetEncoderComplexity(v-1);
|
||||
PrintParameters();
|
||||
}
|
||||
else if (ch=='n'){
|
||||
// Turn on/off noise filter
|
||||
rakVoice.SetNoiseFilter(!rakVoice.IsNoiseFilterActive());
|
||||
PrintParameters();
|
||||
}
|
||||
else if (ch=='v') {
|
||||
// Turn on/off Voice detection
|
||||
rakVoice.SetVAD(!rakVoice.IsVADActive());
|
||||
PrintParameters();
|
||||
}
|
||||
else if (ch=='b') {
|
||||
// Turn on/off VBR
|
||||
rakVoice.SetVBR(!rakVoice.IsVBRActive());
|
||||
PrintParameters();
|
||||
}
|
||||
else if (ch=='y')
|
||||
{
|
||||
quit=true;
|
||||
}
|
||||
else if (ch=='c')
|
||||
{
|
||||
char ip[256];
|
||||
printf("\nEnter IP of remote system: ");
|
||||
Gets(ip, sizeof(ip));
|
||||
if (ip[0]==0)
|
||||
strcpy_s(ip, "127.0.0.1");
|
||||
printf("\nEnter port of remote system: ");
|
||||
Gets(port, sizeof(port));
|
||||
if (port[0]==0)
|
||||
strcpy_s(port, "60000");
|
||||
const int intRemotePort = atoi(port);
|
||||
if ((intRemotePort < 0) || (intRemotePort > std::numeric_limits<unsigned short>::max())) {
|
||||
printf("Specified remote port %d is outside valid bounds [0, %u]", intRemotePort, std::numeric_limits<unsigned short>::max());
|
||||
return -1;
|
||||
}
|
||||
rakPeer->Connect(ip, static_cast<unsigned short>(intRemotePort), 0,0);
|
||||
}
|
||||
else if (ch=='m')
|
||||
{
|
||||
mute=!mute;
|
||||
SLNet::DSoundVoiceAdapter::Instance()->SetMute(mute);
|
||||
if (mute)
|
||||
printf("\nNow muted.\n");
|
||||
else
|
||||
printf("\nNo longer muted.\n");
|
||||
}
|
||||
else if (ch=='d')
|
||||
{
|
||||
rakPeer->Shutdown(100,0);
|
||||
}
|
||||
else if (ch==' ')
|
||||
{
|
||||
char message[2048];
|
||||
SLNet::RakNetStatistics *rss=rakPeer->GetStatistics(rakPeer->GetSystemAddressFromIndex(0));
|
||||
StatisticsToString(rss, message, 2048, 2);
|
||||
printf("%s", message);
|
||||
}
|
||||
else if (ch=='q')
|
||||
quit=true;
|
||||
ch=0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
p=rakPeer->Receive();
|
||||
while (p)
|
||||
{
|
||||
if (p->data[0]==ID_CONNECTION_REQUEST_ACCEPTED)
|
||||
{
|
||||
printf("\nID_CONNECTION_REQUEST_ACCEPTED from %s\n", p->systemAddress.ToString());
|
||||
rakVoice.RequestVoiceChannel(p->guid);
|
||||
}
|
||||
else if (p->data[0]==ID_RAKVOICE_OPEN_CHANNEL_REQUEST)
|
||||
{
|
||||
printf("\nOpen Channel request from %s\n", p->systemAddress.ToString());
|
||||
}
|
||||
else if (p->data[0]==ID_RAKVOICE_OPEN_CHANNEL_REPLY)
|
||||
{
|
||||
printf("\nGot new channel from %s\n", p->systemAddress.ToString());
|
||||
}
|
||||
|
||||
rakPeer->DeallocatePacket(p);
|
||||
p=rakPeer->Receive();
|
||||
}
|
||||
|
||||
// Update our connection with DirectSound
|
||||
SLNet::DSoundVoiceAdapter::Instance()->Update();
|
||||
|
||||
LogStats();
|
||||
RakSleep(20);
|
||||
}
|
||||
|
||||
// Release any FMOD resources we used, and shutdown FMOD itself
|
||||
SLNet::DSoundVoiceAdapter::Instance()->Release();
|
||||
|
||||
rakPeer->Shutdown(300);
|
||||
SLNet::RakPeerInterface::DestroyInstance(rakPeer);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user