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;