diff options
author | 2007-09-10 05:39:07 +0000 | |
---|---|---|
committer | 2007-09-10 05:39:07 +0000 | |
commit | c8141f9f7667de6ab0863f26c45a1b2396004f73 (patch) | |
tree | 3ce297287caf497195df90e1550ad6a939f7b3f8 | |
parent | initialize sc_outports->master and sc_inports->master. Fixes "set failed" (diff) | |
download | wireguard-openbsd-c8141f9f7667de6ab0863f26c45a1b2396004f73.tar.xz wireguard-openbsd-c8141f9f7667de6ab0863f26c45a1b2396004f73.zip |
If 44.1kHz sample rate isn't supported, use 48kHz instead.
-rw-r--r-- | sys/dev/pci/azalia.c | 15 | ||||
-rw-r--r-- | sys/dev/pci/azalia.h | 3 |
2 files changed, 14 insertions, 4 deletions
diff --git a/sys/dev/pci/azalia.c b/sys/dev/pci/azalia.c index 779847ab653..fbdf3d683dc 100644 --- a/sys/dev/pci/azalia.c +++ b/sys/dev/pci/azalia.c @@ -1,4 +1,4 @@ -/* $OpenBSD: azalia.c,v 1.31 2007/09/10 05:30:14 deanna Exp $ */ +/* $OpenBSD: azalia.c,v 1.32 2007/09/10 05:39:07 deanna Exp $ */ /* $NetBSD: azalia.c,v 1.20 2006/05/07 08:31:44 kent Exp $ */ /*- @@ -1268,6 +1268,15 @@ azalia_codec_construct_format(codec_t *this, int newdac, int newadc) } rvariation = group->nconv * nbits; + if (bits_rates & COP_PCM_R441) + this->rate = 44100; + else if (bits_rates & COP_PCM_R480) + this->rate = 48000; + else { + printf("%s: %s/%d invalid PCM format: 0x%8.8x\n", + XNAME(this->az), __FILE__, __LINE__, bits_rates); + return -1; + } if (this->formats != NULL) free(this->formats, M_DEVBUF); this->nformats = 0; @@ -2010,7 +2019,7 @@ azalia_set_params(void *v, int smode, int umode, audio_params_t *p, r->encoding = AUDIO_ENCODING_SLINEAR_LE; r->precision = 16; r->channels = 2; - r->sample_rate = 44100; + r->sample_rate = codec->rate; } for (i = 0; i < codec->nformats; i++) { if (r->encoding != codec->formats[i].encoding) @@ -2043,7 +2052,7 @@ azalia_set_params(void *v, int smode, int umode, audio_params_t *p, p->encoding = AUDIO_ENCODING_SLINEAR_LE; p->precision = 16; p->channels = 2; - p->sample_rate = 44100; + p->sample_rate = codec->rate; } for (i = 0; i < codec->nformats; i++) { if (p->encoding != codec->formats[i].encoding) diff --git a/sys/dev/pci/azalia.h b/sys/dev/pci/azalia.h index 34c455ef584..63be267fce3 100644 --- a/sys/dev/pci/azalia.h +++ b/sys/dev/pci/azalia.h @@ -1,4 +1,4 @@ -/* $OpenBSD: azalia.h,v 1.12 2007/09/10 05:34:21 deanna Exp $ */ +/* $OpenBSD: azalia.h,v 1.13 2007/09/10 05:39:07 deanna Exp $ */ /* $NetBSD: azalia.h,v 1.6 2006/01/16 14:15:26 kent Exp $ */ /*- @@ -565,6 +565,7 @@ typedef struct codec_t { struct audio_encoding_set *encodings; uint32_t *extra; + u_int rate; } codec_t; |