unit alsa;

{$mode objfpc}{$H+}

interface

uses
  ctypes;

const
  libasound = 'asound';

type
  Psnd_pcm_t = Pointer;
  Psnd_pcm_hw_params_t = Pointer;
  snd_pcm_uframes_t = cuint;

function snd_pcm_open(pcm: PPsnd_pcm_t; name: PChar; stream: cint; mode: cint): cint; cdecl; external libasound;
function snd_pcm_hw_params_malloc(params: PPsnd_pcm_hw_params_t): cint; cdecl; external libasound;
procedure snd_pcm_hw_params_free(params: Psnd_pcm_hw_params_t); cdecl; external libasound;
function snd_pcm_hw_params_any(pcm: Psnd_pcm_t; params: Psnd_pcm_hw_params_t): cint; cdecl; external libasound;
function snd_pcm_hw_params_set_access(pcm: Psnd_pcm_t; params: Psnd_pcm_hw_params_t; access: cint): cint; cdecl; external libasound;
function snd_pcm_hw_params_set_format(pcm: Psnd_pcm_t; params: Psnd_pcm_hw_params_t; format: cint): cint; cdecl; external libasound;
function snd_pcm_hw_params_set_channels(pcm: Psnd_pcm_t; params: Psnd_pcm_hw_params_t; channels: cuint): cint; cdecl; external libasound;
function snd_pcm_hw_params_set_rate_near(pcm: Psnd_pcm_t; params: Psnd_pcm_hw_params_t; val: pcuint; dir: pcint): cint; cdecl; external libasound;
function snd_pcm_hw_params_set_buffer_size_near(pcm: Psnd_pcm_t; params: Psnd_pcm_hw_params_t; val: Psnd_pcm_uframes_t): cint; cdecl; external libasound;
function snd_pcm_hw_params(pcm: Psnd_pcm_t; params: Psnd_pcm_hw_params_t): cint; cdecl; external libasound;
function snd_pcm_prepare(pcm: Psnd_pcm_t): cint; cdecl; external libasound;
function snd_pcm_writei(pcm: Psnd_pcm_t; buffer: Pointer; size: snd_pcm_uframes_t): snd_pcm_sframes_t; cdecl; external libasound;
function snd_pcm_drain(pcm: Psnd_pcm_t): cint; cdecl; external libasound;
function snd_pcm_close(pcm: Psnd_pcm_t): cint; cdecl; external libasound;

// Добавленная декларация
function snd_pcm_hw_params_set_period_size_near(pcm: Psnd_pcm_t; params: Psnd_pcm_hw_params_t; val: Psnd_pcm_uframes_t; dir: PInteger): cint; cdecl; external libasound;

implementation

end.