summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJari Vetoniemi <mailroxas@gmail.com>2018-10-30 21:43:25 +0200
committerJari Vetoniemi <mailroxas@gmail.com>2018-10-30 21:43:25 +0200
commitec14a5118d551fc4a600bc0aa6403c4d7187a1f4 (patch)
tree53123cd7068862e2da0593f1e3680d6815dcac21
parentf2579c4984615609847759cbd5883b8db821b1ba (diff)
fixes qutebrowser
-rw-r--r--libasound.c44
-rw-r--r--stubs.h5
2 files changed, 42 insertions, 7 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, &params) && !snd_pcm_hw_params_set_format(pcm, &params, format) &&
+ !snd_pcm_hw_params_set_access(pcm, &params, access) && !snd_pcm_hw_params_set_channels(pcm, &params, channels) &&
+ !snd_pcm_hw_params_set_rate(pcm, &params, rate, 0) && !snd_pcm_hw_params(pcm, &params) ? 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"
diff --git a/stubs.h b/stubs.h
index 5603e3a..37329fa 100644
--- a/stubs.h
+++ b/stubs.h
@@ -471,7 +471,6 @@ int snd_output_putc(snd_output_t *output, int c) { WARNX1("stub"); return 0; }
int snd_output_flush(snd_output_t *output) { WARNX1("stub"); return 0; }
int snd_pcm_open_lconf(snd_pcm_t **pcm, const char *name, snd_pcm_stream_t stream, int mode, snd_config_t *lconf) { WARNX1("stub"); return 0; }
int snd_pcm_open_fallback(snd_pcm_t **pcm, snd_config_t *root, const char *name, const char *orig_name, snd_pcm_stream_t stream, int mode) { WARNX1("stub"); return 0; }
-const char *snd_pcm_name(snd_pcm_t *pcm) { WARNX1("stub"); return NULL; }
snd_pcm_type_t snd_pcm_type(snd_pcm_t *pcm) { WARNX1("stub"); return 0; }
snd_pcm_stream_t snd_pcm_stream(snd_pcm_t *pcm) { WARNX1("stub"); return 0; }
int snd_pcm_poll_descriptors_count(snd_pcm_t *pcm) { WARNX1("stub"); return 0; }
@@ -484,9 +483,7 @@ int snd_pcm_hw_free(snd_pcm_t *pcm) { WARNX1("stub"); return 0; }
int snd_pcm_sw_params(snd_pcm_t *pcm, snd_pcm_sw_params_t *params) { WARNX1("stub"); return 0; }
int snd_pcm_reset(snd_pcm_t *pcm) { WARNX1("stub"); return 0; }
int snd_pcm_status(snd_pcm_t *pcm, snd_pcm_status_t *status) { WARNX1("stub"); return 0; }
-snd_pcm_state_t snd_pcm_state(snd_pcm_t *pcm) { WARNX1("stub"); return 0; }
int snd_pcm_hwsync(snd_pcm_t *pcm) { WARNX1("stub"); return 0; }
-int snd_pcm_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *delayp) { WARNX1("stub"); return 0; }
int snd_pcm_htimestamp(snd_pcm_t *pcm, snd_pcm_uframes_t *avail, snd_htimestamp_t *tstamp) { WARNX1("stub"); return 0; }
snd_pcm_sframes_t snd_pcm_avail(snd_pcm_t *pcm) { WARNX1("stub"); return 0; }
int snd_pcm_avail_delay(snd_pcm_t *pcm, snd_pcm_sframes_t *availp, snd_pcm_sframes_t *delayp) { WARNX1("stub"); return 0; }
@@ -511,8 +508,6 @@ int snd_pcm_chmap_print(const snd_pcm_chmap_t *map, size_t maxlen, char *buf) {
unsigned int snd_pcm_chmap_from_string(const char *str) { WARNX1("stub"); return 0; }
snd_pcm_chmap_t *snd_pcm_chmap_parse_string(const char *str) { WARNX1("stub"); return NULL; }
int snd_pcm_recover(snd_pcm_t *pcm, int err, int silent) { WARNX1("stub"); 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) { WARNX1("stub"); return 0; }
-int snd_pcm_get_params(snd_pcm_t *pcm, snd_pcm_uframes_t *buffer_size, snd_pcm_uframes_t *period_size) { WARNX1("stub"); return 0; }
size_t snd_pcm_info_sizeof(void) { WARNX1("stub"); return 0; }
int snd_pcm_info_malloc(snd_pcm_info_t **ptr) { WARNX1("stub"); return 0; }
void snd_pcm_info_free(snd_pcm_info_t *obj) { WARNX1("stub"); }