static NoteDevice * pcmConstruct (int errorLevel) { NoteDevice *device; if ((device = malloc(sizeof(*device)))) { if ((device->pcm = openPcmDevice(errorLevel, opt_pcmDevice))) { device->blockSize = getPcmBlockSize(device->pcm); device->sampleRate = getPcmSampleRate(device->pcm); device->channelCount = getPcmChannelCount(device->pcm); device->amplitudeFormat = getPcmAmplitudeFormat(device->pcm); device->blockUsed = 0; if ((device->blockAddress = malloc(device->blockSize))) { logMessage(LOG_DEBUG, "PCM enabled: blk=%d rate=%d chan=%d fmt=%d", device->blockSize, device->sampleRate, device->channelCount, device->amplitudeFormat); return device; } else { logMallocError(); } closePcmDevice(device->pcm); } free(device); } else { logMallocError(); } logMessage(LOG_DEBUG, "PCM not available"); return NULL; }
int setPcmSampleRate (PcmDevice *pcm, int rate) { WAVEFORMATEX format = pcm->format; format.nSamplesPerSec = rate; if (!updateWaveOutFormat(pcm, &format, "setting PCM sample rate")) return getPcmSampleRate(pcm); else return rate; }
int setPcmSampleRate (PcmDevice *pcm, int rate) { int result; pcm->sampleRate = rate; if ((result = pcmAlsa_pcm_hw_params_set_rate_near(pcm->handle, pcm->hardwareParameters, &pcm->sampleRate, NULL)) < 0) { logPcmError(LOG_ERR, "set rate near", result); } return getPcmSampleRate(pcm); }
int setPcmSampleRate (PcmDevice *pcm, int rate) { if (ioctl(pcm->fileDescriptor, SNDCTL_DSP_SPEED, &rate) != -1) pcm->sampleRate = rate; return getPcmSampleRate(pcm); }
int setPcmSampleRate (PcmDevice *pcm, int rate) { pcm->parameters.format.rate = rate; reconfigurePcmChannel(pcm, LOG_WARNING); return getPcmSampleRate(pcm); }
int setPcmSampleRate (PcmDevice *pcm, int rate) { return getPcmSampleRate(pcm); }