type
TACMWaveFormat = packed record
case integer of
0 : (Format : TWaveFormatEx);
1 : (RawData : Array[0..128] of byte);
end;.........
var
mmr: mmresult ;
outSize : DWord ;
FStreamhandle: HACMStream ;
InputBufferSize, OutputBufferSize: Dword ;
begin
with FormatIn.Format do begin
wFormatTag := $1;
nChannels := 1;
nSamplesPerSec := 8000;
nAvgBytesPerSec:= 8000;
nBlockAlign:=1;
wbitspersample := 8;
cbSize := 0 ; //SizeOf(TACMWaveFormat);
end;
with FormatOut.Format do begin
wFormatTag := $1;
nChannels := 1;
nSamplesPerSec := 16000;
nAvgBytesPerSec:= 16000;
nBlockAlign:=1;
wbitspersample := 8;
cbSize := 0 ;//SizeOf(TACMWaveFormat);
end; mmr := acmStreamOpen(@FStreamhandle,0, FormatIn.Format, FormatOut.Format, nil, 0, 0, 0 );
if mmr <> 0 then exit ;
mmr := acmStreamSize(FStreamHandle, InputBufferSize, OutputBufferSize, ACM_STREAMSIZEF_SOURCE);
if mmr <> 0 then exit ;
如果按上面的转换没有问题 但是一旦将转换8位的pcm转换为16位的pcm 或16位转换为16位出错 是不是acm管理不支持16位音频数据转换?? 希望高手帮忙解答!
TACMWaveFormat = packed record
case integer of
0 : (Format : TWaveFormatEx);
1 : (RawData : Array[0..128] of byte);
end;.........
var
mmr: mmresult ;
outSize : DWord ;
FStreamhandle: HACMStream ;
InputBufferSize, OutputBufferSize: Dword ;
begin
with FormatIn.Format do begin
wFormatTag := $1;
nChannels := 1;
nSamplesPerSec := 8000;
nAvgBytesPerSec:= 8000;
nBlockAlign:=1;
wbitspersample := 8;
cbSize := 0 ; //SizeOf(TACMWaveFormat);
end;
with FormatOut.Format do begin
wFormatTag := $1;
nChannels := 1;
nSamplesPerSec := 16000;
nAvgBytesPerSec:= 16000;
nBlockAlign:=1;
wbitspersample := 8;
cbSize := 0 ;//SizeOf(TACMWaveFormat);
end; mmr := acmStreamOpen(@FStreamhandle,0, FormatIn.Format, FormatOut.Format, nil, 0, 0, 0 );
if mmr <> 0 then exit ;
mmr := acmStreamSize(FStreamHandle, InputBufferSize, OutputBufferSize, ACM_STREAMSIZEF_SOURCE);
if mmr <> 0 then exit ;
如果按上面的转换没有问题 但是一旦将转换8位的pcm转换为16位的pcm 或16位转换为16位出错 是不是acm管理不支持16位音频数据转换?? 希望高手帮忙解答!
acm好像是4位吧