Czy wie ktos jak w komponentach typu ACM zmienic programowo kodowanie dzwieku z WAVE_FORMAT_PCM na WAVE_FORMAT_GSM610 ??
Znalazlem cos takiego jednak nie dziala mi i mam problemy z kompilacja. Jak ktos cos wie to prosze o pomoc.
procedure SelectWaveFormat(
wFormatTag : Integer;
nChannels : Integer;
nSamplesPerSec : Integer;
wBitsPerSample : Integer);
var
Status : MMResult;
acmfmtdetails : TACMFORMATDETAILS;
fdwEnum : DWORD;
begin
// Initialize the format structure with requested format
FillChar(FWaveFormat^, FMaxFmtSize, 0);
FWaveFormat.cbSize := FMaxFmtSize - SizeOf(TWAVEFORMATEX);
FWaveFormat.wFormatTag := wFormatTag;
FWaveFormat.nChannels := nChannels;
FWaveFormat.nSamplesPerSec := nSamplesPerSec;
FWaveFormat.wBitsPerSample := wBitsPerSample;
// Zero out struct...
FillChar(acmfmtdetails, sizeof(acmfmtdetails), 0);
acmfmtdetails.cbStruct := sizeof(acmfmtdetails);
acmfmtdetails.pwfx := FWaveFormat;
acmfmtdetails.dwFormatTag := FWaveFormat.wFormatTag;
acmfmtdetails.cbwfx := sizeof(TWAVEFORMATEX) + FWaveFormat.cbSize;
fdwEnum := ACM_FORMATENUMF_INPUT; // We wants to be able to record
if wFormatTag <> 0 then
fdwEnum := fdwEnum + ACM_FORMATENUMF_WFORMATTAG;
if nChannels <> 0 then
fdwEnum := fdwEnum + ACM_FORMATENUMF_NCHANNELS;
if nSamplesPerSec <> 0 then
fdwEnum := fdwEnum + ACM_FORMATENUMF_NSAMPLESPERSEC;
if wBitsPerSample <> 0 then
fdwEnum := fdwEnum + ACM_FORMATENUMF_WBITSPERSAMPLE;
Status := acmFormatEnum(HACMDRIVER(0), acmfmtdetails,
acmFormatEnumCallback, 0, fdwEnum);
if Status <> 0 then
raise Exception.Create(
'acmFormatEnum failed, Error #' + IntToStr(Status));
// store the format and tag decription strings...
GetFormatTagDetails(FWaveFormat.wFormatTag);
GetFormatDetails(FWaveFormat);
end;