forked from auracaster/pyalsaaudio
Import from divmod. Original log message:
r1322 | casper | 2005-03-30 22:44:55 +0200 (Wed, 30 Mar 2005) | 2 lines Fixed return values for set* functions git-svn-id: svn://svn.code.sf.net/p/pyalsaaudio/code/trunk@11 ec2f30ec-7544-0410-870e-f70ca00c83f0
This commit is contained in:
30
alsaaudio.c
30
alsaaudio.c
@@ -74,6 +74,8 @@ static PyTypeObject ALSAPCMType;
|
|||||||
|
|
||||||
static int alsapcm_setup(alsapcm_t *self) {
|
static int alsapcm_setup(alsapcm_t *self) {
|
||||||
int res,dir;
|
int res,dir;
|
||||||
|
unsigned int val;
|
||||||
|
snd_pcm_uframes_t frames;
|
||||||
snd_pcm_hw_params_t *hwparams;
|
snd_pcm_hw_params_t *hwparams;
|
||||||
|
|
||||||
if (self->handle) {
|
if (self->handle) {
|
||||||
@@ -83,12 +85,11 @@ static int alsapcm_setup(alsapcm_t *self) {
|
|||||||
res = snd_pcm_open(&(self->handle),self->cardname,self->pcmtype,self->pcmmode);
|
res = snd_pcm_open(&(self->handle),self->cardname,self->pcmtype,self->pcmmode);
|
||||||
if (res < 0) return res;
|
if (res < 0) return res;
|
||||||
|
|
||||||
|
/* Allocate a hwparam structure, and fill it in with configuration space */
|
||||||
snd_pcm_hw_params_alloca(&hwparams);
|
snd_pcm_hw_params_alloca(&hwparams);
|
||||||
res = snd_pcm_hw_params_any(self->handle, hwparams);
|
res = snd_pcm_hw_params_any(self->handle, hwparams);
|
||||||
if (res < 0) return res;
|
if (res < 0) return res;
|
||||||
|
|
||||||
snd_pcm_hw_params_alloca(&hwparams);
|
|
||||||
|
|
||||||
/* Fill it in with default values. */
|
/* Fill it in with default values. */
|
||||||
snd_pcm_hw_params_any(self->handle, hwparams);
|
snd_pcm_hw_params_any(self->handle, hwparams);
|
||||||
snd_pcm_hw_params_set_access(self->handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED);
|
snd_pcm_hw_params_set_access(self->handle, hwparams, SND_PCM_ACCESS_RW_INTERLEAVED);
|
||||||
@@ -99,7 +100,18 @@ static int alsapcm_setup(alsapcm_t *self) {
|
|||||||
snd_pcm_hw_params_set_period_size(self->handle, hwparams, self->periodsize, dir);
|
snd_pcm_hw_params_set_period_size(self->handle, hwparams, self->periodsize, dir);
|
||||||
snd_pcm_hw_params_set_periods(self->handle,hwparams,4,0);
|
snd_pcm_hw_params_set_periods(self->handle,hwparams,4,0);
|
||||||
|
|
||||||
|
/* Write it to the device */
|
||||||
res = snd_pcm_hw_params(self->handle, hwparams);
|
res = snd_pcm_hw_params(self->handle, hwparams);
|
||||||
|
if (res) return res;
|
||||||
|
|
||||||
|
/* Query current settings. These may differ from the requested values,
|
||||||
|
which should therefore be sync'ed with actual values */
|
||||||
|
snd_pcm_hw_params_current(self->handle,hwparams);
|
||||||
|
|
||||||
|
snd_pcm_hw_params_get_format(hwparams,&val); self->format = val;
|
||||||
|
snd_pcm_hw_params_get_channels(hwparams,&val); self->channels = val;
|
||||||
|
snd_pcm_hw_params_get_rate(hwparams,&val,&dir); self->rate = val;
|
||||||
|
snd_pcm_hw_params_get_period_size(hwparams,&frames,&dir); self->periodsize = (int) frames;
|
||||||
|
|
||||||
self->framesize = self->channels * snd_pcm_hw_params_get_sbits(hwparams)/8;
|
self->framesize = self->channels * snd_pcm_hw_params_get_sbits(hwparams)/8;
|
||||||
return res;
|
return res;
|
||||||
@@ -270,23 +282,14 @@ static PyObject *
|
|||||||
alsapcm_setchannels(alsapcm_t *self, PyObject *args) {
|
alsapcm_setchannels(alsapcm_t *self, PyObject *args) {
|
||||||
int channels;
|
int channels;
|
||||||
int res;
|
int res;
|
||||||
unsigned int val;
|
|
||||||
snd_pcm_hw_params_t *hwparams;
|
|
||||||
snd_pcm_hw_params_alloca(&hwparams);
|
|
||||||
snd_pcm_hw_params_current(self->handle,hwparams);
|
|
||||||
|
|
||||||
if (!PyArg_ParseTuple(args,"i",&channels)) return NULL;
|
if (!PyArg_ParseTuple(args,"i",&channels)) return NULL;
|
||||||
|
self->channels = channels;
|
||||||
res = alsapcm_setup(self);
|
res = alsapcm_setup(self);
|
||||||
if (res < 0) {
|
if (res < 0) {
|
||||||
PyErr_SetString(ALSAAudioError, snd_strerror(res));
|
PyErr_SetString(ALSAAudioError, snd_strerror(res));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
return PyInt_FromLong(self->channels);
|
||||||
snd_pcm_hw_params_get_channels(hwparams, &val);
|
|
||||||
|
|
||||||
self->channels = val;
|
|
||||||
|
|
||||||
return PyInt_FromLong(val);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
@@ -975,6 +978,7 @@ void initalsaaudio(void) {
|
|||||||
_EXPORT_INT(m,"PCM_PLAYBACK",SND_PCM_STREAM_PLAYBACK);
|
_EXPORT_INT(m,"PCM_PLAYBACK",SND_PCM_STREAM_PLAYBACK);
|
||||||
_EXPORT_INT(m,"PCM_CAPTURE",SND_PCM_STREAM_CAPTURE);
|
_EXPORT_INT(m,"PCM_CAPTURE",SND_PCM_STREAM_CAPTURE);
|
||||||
|
|
||||||
|
_EXPORT_INT(m,"PCM_NORMAL",0);
|
||||||
_EXPORT_INT(m,"PCM_NONBLOCK",SND_PCM_NONBLOCK);
|
_EXPORT_INT(m,"PCM_NONBLOCK",SND_PCM_NONBLOCK);
|
||||||
_EXPORT_INT(m,"PCM_ASYNC",SND_PCM_ASYNC);
|
_EXPORT_INT(m,"PCM_ASYNC",SND_PCM_ASYNC);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user