用Directsound实现音频采集Visual C++


应用Directshow SDK 用c++语言实现音频采集功能
资源截图
代码片段和文件信息
// AudioFormat.cpp : implementation file
//

#include “stdafx.h“
#include “Recorder.h“
#include “AudioFormat.h“

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAudioFormat dialog

extern CRecorderApp theApp;



//-----------------------------------------------------------------------------
// Function-prototypes
//-----------------------------------------------------------------------------


HRESULT ScanAvailableInputFormats();
VOID    GetWaveFormatFromIndex( INT nIndex WAVEFORMATEX* pwfx );
HRESULT FillFormatListBox( HWND hListBox BOOL* aFormatSupported );
VOID    ConvertWaveFormatToString( WAVEFORMATEX* pwfx TCHAR* strFormatName );
HRESULT CreateCaptureBuffer( WAVEFORMATEX* pwfxInput );
HRESULT InitNotifications();


//-----------------------------------------------------------------------------
// Name: GetWaveFormatFromIndex()
// Desc: Returns 20 different wave formats based on nIndex
//-----------------------------------------------------------------------------
VOID GetWaveFormatFromIndex( INT nIndex WAVEFORMATEX* pwfx )
{
    INT iSampleRate = nIndex / 4;
    INT iType = nIndex % 4;
    
    switch( iSampleRate )
    {
    case 0: pwfx->nSamplesPerSec = 48000; break;
    case 1: pwfx->nSamplesPerSec = 44100; break;
    case 2: pwfx->nSamplesPerSec = 22050; break;
    case 3: pwfx->nSamplesPerSec = 11025; break;
    case 4: pwfx->nSamplesPerSec =  8000; break;
    }
    
    switch( iType )
    {
    case 0: pwfx->wBitsPerSample =  8; pwfx->nChannels = 1; break;
    case 1: pwfx->wBitsPerSample = 16; pwfx->nChannels = 1; break;
    case 2: pwfx->wBitsPerSample =  8; pwfx->nChannels = 2; break;
    case 3: pwfx->wBitsPerSample = 16; pwfx->nChannels = 2; break;
    }
    
    pwfx->nBlockAlign = pwfx->nChannels * ( pwfx->wBitsPerSample / 8 );
    pwfx->nAvgBytesPerSec = pwfx->nBlockAlign * pwfx->nSamplesPerSec;
}



//-----------------------------------------------------------------------------
// Name: ConvertWaveFormatToString()
// Desc: Converts a wave format to a text string
//-----------------------------------------------------------------------------
VOID ConvertWaveFormatToString( WAVEFORMATEX* pwfx TCHAR* strFormatName )
{
    wsprintf( strFormatName 
        TEXT(“%u Hz %u-bit %s“) 
        pwfx->nSamplesPerSec 
        pwfx->wBitsPerSample 
        ( pwfx->nChannels == 1 ) ? TEXT(“Mono“) : TEXT(“Stereo“) );
}


//-----------------------------------------------------------------------------
// Name: FillFormatListBox()
// Desc: Fills the format list box based on the availible formats
//-----------------------------------------------------------------------------
HRESULT FillFormatListBox( HWND hListBox BOOL* aFormatSupported )
{
    TCHAR        strFormatName[255];
    WAVEFORMATEX wfx;
    DWORD        dw

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     272820  2002-12-04 01:07  CaptureSoundRecorderamstrmid.lib

     文件      10763  2008-11-17 18:48  CaptureSoundRecorderAudioFormat.cpp

     文件       1318  2008-11-17 18:26  CaptureSoundRecorderAudioFormat.h

     文件       3748  2008-11-16 21:53  CaptureSoundRecorderCaptureDevices.cpp

     文件       1335  2008-11-16 21:52  CaptureSoundRecorderCaptureDevices.h

     文件       2466  2002-12-04 01:25  CaptureSoundRecorderd3d8.lib

     文件       3010  2002-12-04 01:22  CaptureSoundRecorderd3d9.lib

     文件     614522  2002-12-04 01:31  CaptureSoundRecorderd3dx.lib

     文件    2151212  2002-12-04 01:26  CaptureSoundRecorderd3dx8.lib

     文件      53414  2002-12-04 01:28  CaptureSoundRecorderd3dx8d.lib

     文件    2679888  2002-12-04 01:28  CaptureSoundRecorderd3dx8dt.lib

     文件    4383332  2002-12-10 22:25  CaptureSoundRecorderd3dx9.lib

     文件      72100  2002-12-10 22:25  CaptureSoundRecorderd3dx9d.lib

     文件    5146120  2002-12-10 22:25  CaptureSoundRecorderd3dx9dt.lib

     文件     615364  2002-12-04 01:34  CaptureSoundRecorderd3dxd.lib

     文件       1722  2002-11-12 20:15  CaptureSoundRecorderd3dxof.lib

     文件       4540  2002-12-04 01:11  CaptureSoundRecorderddraw.lib

     文件     126296  2009-05-08 11:11  CaptureSoundRecorderDebugAudioFormat.obj

     文件       8796  2009-05-08 11:13  CaptureSoundRecorderDebugBuildLog.htm

     文件     114713  2009-05-08 11:11  CaptureSoundRecorderDebugCaptureDevices.obj

     文件     103351  2009-05-08 11:11  CaptureSoundRecorderDebugdsutil.obj

     文件      74389  2009-05-08 11:11  CaptureSoundRecorderDebugdxutil.obj

     文件         67  2009-05-08 11:13  CaptureSoundRecorderDebugmt.dep

     文件     798208  2009-05-08 11:13  CaptureSoundRecorderDebugRecorder.exe

     文件        920  2009-05-08 11:13  CaptureSoundRecorderDebugRecorder.exe.embed.manifest

     文件        984  2009-05-08 11:13  CaptureSoundRecorderDebugRecorder.exe.embed.manifest.res

     文件        861  2009-05-08 11:13  CaptureSoundRecorderDebugRecorder.exe.intermediate.manifest

     文件    2983064  2009-05-08 11:13  CaptureSoundRecorderDebugRecorder.ilk

     文件     121739  2009-05-08 11:11  CaptureSoundRecorderDebugRecorder.obj

     文件   25231360  2009-05-08 11:10  CaptureSoundRecorderDebugRecorder.pch

............此处省略62个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)