- 在线时间
- 0 小时
- 最后登录
- 2004-12-14
- 注册时间
- 2004-6-4
- 听众数
- 1
- 收听数
- 0
- 能力
- 0 分
- 体力
- 109 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 38
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 9
- 主题
- 5
- 精华
- 0
- 分享
- 0
- 好友
- 0
升级   34.74% 该用户从未签到
 |
< >有关于ACM压缩的BCB代码段:</P>
! G. K t, L, _9 F< >开始的时候有一个采样的过程和格式设定:</P>. d+ e7 m v1 L: F R8 q, f
< >void CCompression::SetWaveFormat(int channels, long samplerate, int bitspersample)
; R5 g6 b( V0 R" X! ]{, g% M, x9 Q5 ]. M7 ^
memset(&m_wfSrc, 0, sizeof(m_wfSrc));+ \+ u9 q6 }; [% ~9 y3 v
m_wfSrc.cbSize = 0;% Z/ M- P7 { z
m_wfSrc.wFormatTag = WAVE_FORMAT_PCM; // pcm d. r' _2 F0 R( X
m_wfSrc.nChannels = channels; // mono% i) G! @7 [. B( t* m( U
m_wfSrc.nSamplesPerSec = samplerate; // 11.025 kHz
1 u, P7 \1 q' ?, H m_wfSrc.wBitsPerSample = bitspersample; // 8 bit, Y+ h, q4 {0 t* q+ w+ M/ z" @
m_wfSrc.nBlockAlign = m_wfSrc.nChannels *m_wfSrc.wBitsPerSample / 8;% H% u% D5 N( L
m_wfSrc.nAvgBytesPerSec = m_wfSrc.nSamplesPerSec * m_wfSrc.nBlockAlign;+ J5 }6 v8 q( }5 d5 s% {
}</P>
6 C" C# w) f; L2 `* ^# B
9 A8 L' o6 ]' Z* f6 J< >void CCompression::SetSrcSamples(long samples,unsigned char* pSrcData)/ C/ h1 k3 D5 l0 B
{
' W0 L3 _: c o$ A, Y5 ^ int n=(int)(m_wfSrc.wBitsPerSample/8);</P>
J9 G8 o- M+ {) C$ ^< > m_dwSrcSamples=samples;) z2 Y! @' T/ T, }9 q8 Z! f
m_dwSrcBytes=(DWORD)(samples*n);/ `) {6 N; r$ o9 {% Z; i% W3 L# d
m_pSrcData=(BYTE*)malloc(m_dwSrcBytes);, [* S9 K( E2 _2 Z8 B
memcpy(m_pSrcData,pSrcData,m_dwSrcBytes);" D2 H: ]2 l n5 u# w7 h: _$ z* {
}</P>
: g9 b$ H1 t8 G' n6 p8 ?/ u8 U< >请教这段程序的功能!</P>
4 r- ]) F% e' J< > // enumerate the formats it supports
2 J6 z& |/ ?5 R, K# J$ g. j$ B DWORD dwSize = 0;" K, B! Q, C- h' r+ t- z
mmr = acmMetrics((HACMOBJ)had, ACM_METRIC_MAX_SIZE_FORMAT, &dwSize);
. a; j" E. |0 ]2 t4 `& a4 q if (dwSize < sizeof(WAVEFORMATEX)) dwSize = sizeof(WAVEFORMATEX); // for MS-PCM
8 T# }: N) P' E l6 M8 L. \( F( W3 l WAVEFORMATEX* pwf = (WAVEFORMATEX*) malloc(dwSize);
0 R; r- b% ~, d# p/ M! b& d/ m memset(pwf, 0, dwSize);4 W0 c2 z+ z- W, T
pwf->cbSize = LOWORD(dwSize) - sizeof(WAVEFORMATEX);
# ]7 p6 d' W0 I' [4 o8 S pwf->wFormatTag = pdi->wFormatTag;</P>
# @. ~, P" f4 Y8 S< >还有这段是长度转换部分PCM-PCM。但是我不清楚具体的实现原理,以及这样做的目的!</P>7 {& Y2 C1 O K v# e
< >谢谢!</P> |
zan
|