hackedteam/core-winmobile

View on GitHub
Mornella/Mornella_Mobile/CWaveForm.cpp

Summary

Maintainability
Test Coverage
/**
*    CWaveform
*    I/O class to manage wave in/out api
**/
#include "CWaveform.h"

///////////////////////////////////////////////////////////
// Waveform common class
///////////////////////////////////////////////////////////
CWaveform::CWaveform()
{
}

CWaveform::~CWaveform()
{
}

void CALLBACK CWaveform::waveInProc(HWAVEIN hwi, UINT uMsg, DWORD dwInstance, WAVEHDR *dwParam1, DWORD dwParam2)
{
    CWaveformIn *instance = reinterpret_cast<CWaveformIn *>(dwInstance);

    instance->waveInProc(uMsg, dwParam1, dwParam2);
}

void CALLBACK CWaveform::waveOutProc(HWAVEOUT hwo, UINT uMsg, DWORD dwInstance, WAVEHDR *dwParam1, DWORD dwParam2)
{
    CWaveformOut *instance = reinterpret_cast<CWaveformOut *>(dwInstance);

    instance->waveOutProc(uMsg, dwParam1, dwParam2);
}


CWaveformIn* CWaveform::InOpen(UINT uDeviceID, LPWAVEFORMATEX pwfx, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen)
{
    HWAVEIN hWaveIn = NULL;

    if (waveInOpen(&hWaveIn, uDeviceID, pwfx, dwCallback, dwInstance, fdwOpen) == MMSYSERR_NOERROR)
    {
        CWaveformIn *waveFormIn = new CWaveformIn(hWaveIn);

        return waveFormIn;
    }

    return NULL;
}

CWaveformIn*  CWaveform::InOpen(UINT uDeviceID, LPWAVEFORMATEX pwfx, DWORD fdwOpen)
{
    HWAVEIN hWaveIn = NULL;
    CWaveformIn *waveFormIn = new CWaveformIn(NULL);    // alloc object

    if (waveInOpen(&hWaveIn, uDeviceID, pwfx, (DWORD_PTR)&CWaveform::waveInProc, (DWORD_PTR) waveFormIn, fdwOpen) == MMSYSERR_NOERROR)
    {
        waveFormIn->setHandle(hWaveIn);
        return waveFormIn;
    }

    delete waveFormIn;    // destroy unmanaged object
    return NULL;
}

CWaveformOut* CWaveform::OutOpen(UINT uDeviceID, LPWAVEFORMATEX pwfx, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen)
{
    HWAVEOUT hWaveOut = NULL;

    if (waveOutOpen(&hWaveOut, uDeviceID, pwfx, dwCallback, dwInstance, fdwOpen) == MMSYSERR_NOERROR)
    {
        CWaveformOut *waveFormOut = new CWaveformOut(hWaveOut);

        return waveFormOut;
    }

    return NULL;
}

CWaveformOut* CWaveform::OutOpen(UINT uDeviceID, LPWAVEFORMATEX pwfx, DWORD fdwOpen)
{
    HWAVEOUT hWaveOut = NULL;
    CWaveformOut *waveFormOut = new CWaveformOut(NULL);

    if (waveOutOpen(&hWaveOut, uDeviceID, pwfx, (DWORD_PTR)&CWaveform::waveOutProc, (DWORD_PTR) waveFormOut, fdwOpen) == MMSYSERR_NOERROR)
    {
        waveFormOut->setHandle(hWaveOut);

        return waveFormOut;
    }

    delete waveFormOut;
    return NULL;

}


void CWaveform::PrepareWaveFormat(LPWAVEFORMATEX pWaveFormat, WORD wFormatTag, WORD nChannels, DWORD nSamplesPerRec, WORD wBitsPerSample)
{
    pWaveFormat->cbSize = 0;
    pWaveFormat->wFormatTag = wFormatTag;
    pWaveFormat->nChannels = nChannels;
    pWaveFormat->nSamplesPerSec = nSamplesPerRec;
    pWaveFormat->wBitsPerSample = wBitsPerSample;
    pWaveFormat->nBlockAlign = (wBitsPerSample/8)* nChannels;
    pWaveFormat->nAvgBytesPerSec = nSamplesPerRec*pWaveFormat->nBlockAlign;
}


UINT CWaveform::OutGetNumDevs()
{
    return waveOutGetNumDevs();
}


BOOL CWaveform::InGetDevCaps(UINT uDeviceID, LPWAVEINCAPS pwic, UINT cbwic)
{
    if (waveInGetDevCaps(uDeviceID, pwic, cbwic) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveform::InGetErrorText(MMRESULT mmError, LPTSTR pszText, UINT cchText)
{
    if (waveInGetErrorText(mmError, pszText, cchText) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

UINT CWaveform::InGetNumDevs()
{
    return waveInGetNumDevs();
}

BOOL CWaveform::OutGetDevCaps(UINT uDeviceID, LPWAVEOUTCAPS pwoc, UINT cbwoc)
{
    if ( waveOutGetDevCaps(uDeviceID, pwoc, cbwoc) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveform::OutGetErrorText(UINT mmError, LPTSTR pszText, UINT cchText)
{
    if ( waveOutGetErrorText(mmError, pszText, cchText) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}


///////////////////////////////////////////////////////////
// Wave In class
///////////////////////////////////////////////////////////
CWaveformIn::CWaveformIn(HWAVEIN hwi)
:    m_hwi(hwi)
{
}

CWaveformIn::~CWaveformIn()
{
}

void CWaveformIn::setHandle(HWAVEIN hwi)
{
    m_hwi = hwi;
}

BOOL CWaveformIn::AddBuffer(LPWAVEHDR pwh, UINT cbwh)
{
    if (waveInAddBuffer(m_hwi, pwh, cbwh) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

// Close method
BOOL CWaveformIn::Close()
{
    if (m_hwi != NULL)
        if (waveInClose(m_hwi) == MMSYSERR_NOERROR)
        {
            m_hwi = NULL;
            return TRUE;
        }

        return FALSE;
}

BOOL CWaveformIn::GetID(PUINT puDeviceID)
{
    if (waveInGetID(m_hwi, puDeviceID) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}


BOOL CWaveformIn::GetPosition(LPMMTIME pmmt, UINT cbmmt)
{
    if (waveInGetPosition(m_hwi, pmmt, cbmmt) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}


BOOL CWaveformIn::Message(UINT uMsg, DWORD dw1, DWORD dw2)
{
    if (waveInMessage(m_hwi, uMsg, dw1, dw2) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}


BOOL CWaveformIn::PrepareHeader(LPWAVEHDR pwh, UINT cbwh)
{
    if (waveInPrepareHeader(m_hwi, pwh, cbwh) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}


BOOL CWaveformIn::Reset()
{
    if (waveInReset(m_hwi) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformIn::Start()
{
    if (waveInStart(m_hwi) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformIn::Stop()
{
    if (waveInStop(m_hwi) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformIn::UnprepareHeader(LPWAVEHDR pwh, UINT cbwh)
{
    if (waveInUnprepareHeader(m_hwi, pwh, cbwh) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

// callback event
void CALLBACK CWaveformIn::waveInProc(UINT uMsg, WAVEHDR *dwParam1, DWORD dwParam2)
{
    return;
}

///////////////////////////////////////////////////////////
// Wave Out class
///////////////////////////////////////////////////////////
CWaveformOut::CWaveformOut(HWAVEOUT hwo)
:    m_hwo(hwo)
{
}

CWaveformOut::~CWaveformOut()
{
}

BOOL CWaveformOut::BreakLoop()
{
    if (waveOutBreakLoop(m_hwo) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

void CWaveformOut::setHandle(HWAVEOUT hwo)
{
    m_hwo = hwo;
}

BOOL CWaveformOut::Close()
{
    if (m_hwo != NULL)
        if (waveOutClose(m_hwo) == MMSYSERR_NOERROR)
        {
            m_hwo = NULL;
            return TRUE;
        }

        return FALSE;
}

BOOL CWaveformOut::GetID(LPUINT puDeviceId)
{
    if ( waveOutGetID(m_hwo, puDeviceId) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}


BOOL CWaveformOut::GetPitch(LPDWORD pdwPitch)
{
    if ( waveOutGetPitch(m_hwo, pdwPitch) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformOut::GetPlaybackRate(LPDWORD pdwRate)
{
    if ( waveOutGetPlaybackRate(m_hwo, pdwRate) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformOut::GetPosition(LPMMTIME pmmt, UINT cbmmt)
{
    if ( waveOutGetPosition(m_hwo, pmmt, cbmmt) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformOut::GetVolume(LPDWORD pdwVolume)
{
    if ( waveOutGetVolume(m_hwo, pdwVolume) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformOut::Message(UINT uMsg, DWORD dw1, DWORD dw2)
{
    if ( waveOutMessage(m_hwo, uMsg, dw1, dw2) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformOut::Pause()
{
    if ( waveOutPause(m_hwo) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformOut::PrepareHeader(LPWAVEHDR pwh, UINT cbwh)
{
    if ( waveOutPrepareHeader(m_hwo, pwh, cbwh) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformOut::Reset()
{
    if ( waveOutReset(m_hwo) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformOut::Restart()
{
    if ( waveOutRestart(m_hwo) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformOut::SetPitch(DWORD dwPitch)
{
    if ( waveOutSetPitch(m_hwo, dwPitch) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformOut::SetPlaybackRate(DWORD dwRate)
{
    if ( waveOutSetPlaybackRate(m_hwo, dwRate) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformOut::SetVolume(DWORD dwVolume)
{
    if ( waveOutSetVolume(m_hwo, dwVolume) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformOut::UnprepareHeader(LPWAVEHDR pwh, UINT cbwh)
{
    if ( waveOutUnprepareHeader(m_hwo, pwh, cbwh) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

BOOL CWaveformOut::Write(LPWAVEHDR pwh, UINT cbwh)
{
    if ( waveOutWrite(m_hwo, pwh, cbwh) == MMSYSERR_NOERROR)
        return TRUE;

    return FALSE;
}

// callback event
void CALLBACK CWaveformOut::waveOutProc(UINT uMsg, WAVEHDR *dwParam1, DWORD dwParam2)
{
    return;
}