100分求救一个关于wave文件的小问题

Boy_Vc 2002-11-04 07:56:32
我用directX开发的语音采集,以wave格式存放,声音是pcm格式的。请问此pcm(msdn上说是无压缩编码的),是否均匀编码,即如果是8bit就表示256个幅度,相邻幅度间隔相等。还是经过A律或U律压缩的编码1
此问题对我很重要,因为我要直接对语音信号进行处理。必须弄懂幅度的编码。
有个要求,必须能指出权威的资料,比如msdn上介绍(我自己没找到)的等等,其他网站也行!
我确认即给100分!
...全文
30 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuefl66 2002-12-09
  • 打赏
  • 举报
回复
see
JetLuo 2002-11-06
  • 打赏
  • 举报
回复
代码太长,如需要,发邮件给我!
Jet.Luo@sina.com
JetLuo 2002-11-06
  • 打赏
  • 举报
回复
msdn 上说得对,没有任何压缩。
我变过一个PCM编码的Wave文件处理的程序,截一段给你:

#define READPCMFORMAT 0
#define READPCMDATA 1
#define READALL 2

#define FILEOPENOK 0
#define FILEOPENFAIL 1
#define FILEWAVEERR 2
#define FILEFMTERR 3
#define FILEDATAERR 4

#define CHANNELMERGE 0
#define LEFTCHANNEL 1
#define RIGHTCHANNEL 2

#define MONO 1
#define STEREO 2

const LONG sdtFreq=22050;

class CWaveFile : public CObject
{
public:
CWaveFile();
virtual ~CWaveFile();

protected:
CString m_strFileName;
HMMIO m_hmmio;

WAVEFORMATEX m_WaveFormat;
HANDLE m_hPCMData;
int m_bErrFlag;
DWORD m_dwDataBytes;
DWORD m_dwSamples;

HANDLE Convert16BitPCMDataToSample(HANDLE hPCMData,int nChannelFlag);
HANDLE Convert8BitPCMDataToSample(HANDLE hPCMData,int nChannelFlag);
HANDLE Convert16BitSampleDataToPCM(HANDLE hLeftSampleData,HANDLE hRightSampleData,int nChannelFlag=MONO);
HANDLE Convert8BitSampleDataToPCM(HANDLE hLeftSampleData,HANDLE hRightSampleData,int nChannelFlag);

public:
void SetFileName(CString str){ m_strFileName=str;};
BOOL OpenFile(LPCTSTR lpFileName,UINT uFlag);
void Close();
BOOL ReadPCMData();
HANDLE GetPCMData(){ return m_hPCMData;};
WAVEFORMATEX GetPCMFormat(){return m_WaveFormat;};
DWORD GetPCMDataBytes(){return m_dwDataBytes;};
DWORD GetPCMSamples(){return m_dwSamples;};
void ClearPCMData();


BOOL Play();

HANDLE ConvertPCMDataToSample(HANDLE hPCMData,int nChannelFlag);
HANDLE ConvertSampleDataToPCM(HANDLE hLeftSampleData,HANDLE hRightSampleData,int nChannelFlag);

BOOL ConvertToSelfFormat(WAVEFORMATEX *pWaveFormat,WORD dwMaxLimit);
BOOL ChannelMerge(int nChannleFlag);
BOOL Convert8BitTo16();
BOOL AdjustVolume(double dRatio);
BOOL AmplitfyToMax();
DWORD GetMaxRange();
void Standardized(WORD wStandard);
BOOL ChangeSampleFreq();

// BOOL CompressPcmData();
};

#endif // !defined(AFX_WAVEFILE_H__F1CE8F8D_E5E9_4738_A6A1_118624921F8F__INCLUDED_)

jian 2002-11-05
  • 打赏
  • 举报
回复
推荐一个网址
http://www.csdn.net/dev/format/windows/wavec.htm
希望对你有所帮助
liugy 2002-11-05
  • 打赏
  • 举报
回复
http://www.sunchina.cc/products/modem/5660.htm

liugy 2002-11-05
  • 打赏
  • 举报
回复
http://www.cnforyou.com/query/bookdetail.asp?viBookCode=5614

目录里边

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧