87 lines
2.6 KiB
C++
87 lines
2.6 KiB
C++
/*==========================================================================
|
|
*
|
|
* Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: aconv.cpp
|
|
* Content: Contains implementation of the CAudioConverter class. See AudioConverter.h
|
|
* for class description.
|
|
*
|
|
* History:
|
|
* Date By Reason
|
|
* ==== == ======
|
|
* 07/16/99 rodtoll Created
|
|
* 08/25/99 rodtoll General Cleanup/Modifications to support new
|
|
* compression sub-system.
|
|
* 10/05/99 rodtoll Added DPF_MODNAMEs
|
|
*
|
|
***************************************************************************/
|
|
|
|
#include "stdafx.h"
|
|
#include "aconv.h"
|
|
#include "dndbg.h"
|
|
#include "wiutils.h"
|
|
#include "OSInd.h"
|
|
|
|
#define MODULE_ID AUDIOCONVERTER
|
|
|
|
#undef DPF_MODNAME
|
|
#define DPF_MODNAME "CAudioConverter::CAudioConverter"
|
|
CAudioConverter::CAudioConverter(
|
|
WAVEFORMATEX *pwfSrcFormat, DVFULLCOMPRESSIONINFO *lpdvfTargetFormat
|
|
): m_lpdvfInfo( lpdvfTargetFormat ),
|
|
m_bValid(FALSE)
|
|
{
|
|
Initialize( pwfSrcFormat, m_lpdvfInfo->lpwfxFormat, pwfSrcFormat );
|
|
}
|
|
|
|
#undef DPF_MODNAME
|
|
#define DPF_MODNAME "CAudioConverter::CAudioConverter"
|
|
CAudioConverter::CAudioConverter(
|
|
DVFULLCOMPRESSIONINFO *lpdvfSrcFormat, WAVEFORMATEX *pwfTargetFormat
|
|
): m_lpdvfInfo( lpdvfSrcFormat ),
|
|
m_bValid(FALSE)
|
|
{
|
|
Initialize( lpdvfSrcFormat->lpwfxFormat, pwfTargetFormat, pwfTargetFormat );
|
|
}
|
|
|
|
#undef DPF_MODNAME
|
|
#define DPF_MODNAME "CAudioConverter::~CAudioConverter"
|
|
CAudioConverter::~CAudioConverter()
|
|
{
|
|
}
|
|
|
|
#undef DPF_MODNAME
|
|
#define DPF_MODNAME "CAudioConverter::Initialize"
|
|
void CAudioConverter::Initialize( WAVEFORMATEX *pwfSrcFormat, WAVEFORMATEX *pwfTargetFormat, WAVEFORMATEX *pwfUnCompressedFormat )
|
|
{
|
|
m_pwfSourceFormat = pwfSrcFormat;
|
|
m_pwfTargetFormat = pwfTargetFormat;
|
|
m_dwNumFramesPerBuffer = m_lpdvfInfo->dwFramesPerBuffer;
|
|
|
|
m_dwCompressedFrameSize = m_lpdvfInfo->dwFrameLength;
|
|
|
|
m_dwUnCompressedFrameSize = CalcUnCompressedFrameSize( m_lpdvfInfo, pwfUnCompressedFormat );
|
|
}
|
|
|
|
#undef DPF_MODNAME
|
|
#define DPF_MODNAME "CAudioConverter::CalcUnCompressedFrameSize"
|
|
DWORD CAudioConverter::CalcUnCompressedFrameSize( LPDVFULLCOMPRESSIONINFO lpdvfInfo, WAVEFORMATEX *pwfFormat )
|
|
{
|
|
DWORD frameSize;
|
|
|
|
switch( pwfFormat->nSamplesPerSec )
|
|
{
|
|
case 8000: frameSize = lpdvfInfo->dwFrame8Khz; break;
|
|
case 11025: frameSize = lpdvfInfo->dwFrame11Khz; break;
|
|
case 22050: frameSize = lpdvfInfo->dwFrame22Khz; break;
|
|
case 44100: frameSize = lpdvfInfo->dwFrame44Khz; break;
|
|
default: return 0;
|
|
}
|
|
|
|
return CalculateSizeFromBase( frameSize, pwfFormat );
|
|
}
|
|
|
|
|
|
|
|
|