diff options
author | Jari Vetoniemi <mailroxas@gmail.com> | 2018-10-30 21:43:25 +0200 |
---|---|---|
committer | Jari Vetoniemi <mailroxas@gmail.com> | 2018-10-30 21:43:25 +0200 |
commit | ec14a5118d551fc4a600bc0aa6403c4d7187a1f4 (patch) | |
tree | 53123cd7068862e2da0593f1e3680d6815dcac21 /libasound.c | |
parent | f2579c4984615609847759cbd5883b8db821b1ba (diff) |
fixes qutebrowser
Diffstat (limited to 'libasound.c')
-rw-r--r-- | libasound.c | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/libasound.c b/libasound.c index d1700a0..3d67f6b 100644 --- a/libasound.c +++ b/libasound.c @@ -157,7 +157,7 @@ snd_pcm_open(snd_pcm_t **pcm, const char *name, snd_pcm_stream_t stream, int mod if (!((*pcm)->hdl = device_open(*pcm, name, stream, mode))) return -1; - (*pcm)->name = name; + (*pcm)->name = (name ? name : "default"); return (sio_getcap((*pcm)->hdl, &(*pcm)->cap) && sio_getpar((*pcm)->hdl, &(*pcm)->hw.par) ? 0 : -1); } @@ -169,6 +169,12 @@ snd_pcm_close(snd_pcm_t *pcm) return 0; } +const char* +snd_pcm_name(snd_pcm_t *pcm) +{ + return pcm->name; +} + int snd_pcm_nonblock(snd_pcm_t *pcm, int nonblock) { @@ -190,6 +196,15 @@ snd_pcm_nonblock(snd_pcm_t *pcm, int nonblock) #endif } +snd_pcm_state_t +snd_pcm_state(snd_pcm_t *pcm) +{ + if (pcm->started) + return SND_PCM_STATE_RUNNING; + + return SND_PCM_STATE_OPEN; +} + snd_pcm_sframes_t snd_pcm_writei(snd_pcm_t *pcm, const void *buffer, snd_pcm_uframes_t size) { @@ -206,7 +221,15 @@ snd_pcm_sframes_t snd_pcm_avail_update(snd_pcm_t *pcm) { // FIXME: not correct, but fine since we force blocking for now - return snd_pcm_bytes_to_frames(pcm, pcm->hw.par.appbufsz); + return snd_pcm_bytes_to_frames(pcm, pcm->hw.par.bufsz); +} + +int +snd_pcm_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp) +{ + // FIXME: not correct, but fine since we force blocking for now + if (delayp) *delayp = 0; + return 0; } int @@ -748,4 +771,21 @@ snd_pcm_sw_params_current(snd_pcm_t *pcm, snd_pcm_sw_params_t *params) return 0; } +int +snd_pcm_set_params(snd_pcm_t *pcm, snd_pcm_format_t format, snd_pcm_access_t access, unsigned int channels, unsigned int rate, int soft_resample, unsigned int latency) +{ + snd_pcm_hw_params_t params; + return (!snd_pcm_hw_params_any(pcm, ¶ms) && !snd_pcm_hw_params_set_format(pcm, ¶ms, format) && + !snd_pcm_hw_params_set_access(pcm, ¶ms, access) && !snd_pcm_hw_params_set_channels(pcm, ¶ms, channels) && + !snd_pcm_hw_params_set_rate(pcm, ¶ms, rate, 0) && !snd_pcm_hw_params(pcm, ¶ms) ? 0 : -1); +} + +int +snd_pcm_get_params(snd_pcm_t *pcm, snd_pcm_uframes_t *buffer_size, snd_pcm_uframes_t *period_size) +{ + if (buffer_size) *buffer_size = pcm->hw.par.appbufsz; + if (period_size) *period_size = pcm->hw.par.round; + return 0; +} + #include "symversioning-hell.h" |