Exemplo n.º 1
0
	explicit WinsockInitialization(int major = 2, int minor = 2)
	{
		WSADATA wsaData = {0};
		int rc = WSAStartup(MAKEWORD(major, minor), &wsaData);
		if (rc != 0)
			ThrowWin32Error(rc, "WSAStartup");
	}
Exemplo n.º 2
0
CAudio::CAudio(WORD channels, DWORD sample_rate, WORD bits_per_sample,
    bool &_audioStart, bool &_videoStart, HANDLE &_hStartEvent)
    : m_hWaveOut(NULL)
    , m_dwStart(0)
    , m_dwCur(0)
    , m_dwEnd(0)
    , m_dwWaveHdrIndex(0)
    , m_dwCount(0)
    , m_hDataEvent(NULL)
    , m_hNotFullEvent(NULL)
    , m_hNotEmptyEvent(NULL)
    , m_hThread(NULL)
    , m_bContinue(FALSE)
    , m_bForce(FALSE)
    , m_bAudioStart(_audioStart)
    , m_bVideoStart(_videoStart)
    , m_hStartEvent(_hStartEvent)
{
    if (!_hStartEvent)ThrowWin32Error(CAudio::CVideo, ERROR_BAD_ARGUMENTS);
    MMRESULT mmResult;
    WAVEFORMATEX wfex = { WAVE_FORMAT_PCM,channels,sample_rate };
    wfex.wBitsPerSample = bits_per_sample;
    wfex.cbSize = sizeof(WAVEFORMATEX);
    wfex.nBlockAlign = (wfex.wBitsPerSample >> 3)*wfex.nChannels;
    wfex.nAvgBytesPerSec = wfex.nBlockAlign*wfex.nSamplesPerSec;

    TestWin32Throw(m_hDataEvent = CreateEvent(NULL, FALSE, FALSE, NULL));
    TestWin32Throw(m_hNotFullEvent = CreateEvent(NULL, FALSE, FALSE, NULL));
    TestWin32Throw(m_hNotEmptyEvent = CreateEvent(NULL, FALSE, FALSE, NULL));
    mmResult = waveOutOpen(&m_hWaveOut, WAVE_MAPPER, &wfex, (DWORD_PTR)waveOutProc, (DWORD_PTR)m_hDataEvent, CALLBACK_FUNCTION);
    if (MMSYSERR_NOERROR != mmResult)throw mmResult;
    ZeroMemory(m_cWaveHdr, sizeof m_cWaveHdr);
    for (int i = 0; i < MAX_WAVE_COUNT; ++i)
        m_cWaveHdr[i].dwUser = (DWORD_PTR)&m_dwCount;
    m_bContinue = TRUE;
    m_hThread = CreateThread(NULL, 0, ThreadProc, this, 0, NULL);
}
Exemplo n.º 3
0
DWORD CALLBACK CAudio::ThreadProc(LPVOID lp)
{
    if (nullptr == lp)ThrowWin32Error(CAudio::ThreadProc, ERROR_BAD_ARGUMENTS);
    CAudio * audio = static_cast<CAudio*>(lp);
    return audio->AudioThreadProc();
}
Exemplo n.º 4
0
void CheckHr(HRESULT hr)
{
	if (FAILED(hr))
		ThrowWin32Error(hr);
}
Exemplo n.º 5
0
void ThrowLastError(const std::string& what)
{
	ThrowWin32Error(GetLastError(), what);
}