Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/sound/pcm/feeder_rate.c
Show All 12 Lines | |||||
if (!(Z_FACTOR_SAFE(val) && val < feeder_rate_max)) | if (!(Z_FACTOR_SAFE(val) && val < feeder_rate_max)) | ||||
return (EINVAL); | return (EINVAL); | ||||
feeder_rate_min = val; | feeder_rate_min = val; | ||||
return (0); | return (0); | ||||
} | } | ||||
SYSCTL_PROC(_hw_snd, OID_AUTO, feeder_rate_min, CTLTYPE_INT | CTLFLAG_RWTUN, | SYSCTL_PROC(_hw_snd, OID_AUTO, feeder_rate_min, | ||||
CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, | |||||
0, sizeof(int), sysctl_hw_snd_feeder_rate_min, "I", | 0, sizeof(int), sysctl_hw_snd_feeder_rate_min, "I", | ||||
"minimum allowable rate"); | "minimum allowable rate"); | ||||
static int | static int | ||||
sysctl_hw_snd_feeder_rate_max(SYSCTL_HANDLER_ARGS) | sysctl_hw_snd_feeder_rate_max(SYSCTL_HANDLER_ARGS) | ||||
{ | { | ||||
int err, val; | int err, val; | ||||
val = feeder_rate_max; | val = feeder_rate_max; | ||||
err = sysctl_handle_int(oidp, &val, 0, req); | err = sysctl_handle_int(oidp, &val, 0, req); | ||||
if (err != 0 || req->newptr == NULL || val == feeder_rate_max) | if (err != 0 || req->newptr == NULL || val == feeder_rate_max) | ||||
return (err); | return (err); | ||||
if (!(Z_FACTOR_SAFE(val) && val > feeder_rate_min)) | if (!(Z_FACTOR_SAFE(val) && val > feeder_rate_min)) | ||||
return (EINVAL); | return (EINVAL); | ||||
feeder_rate_max = val; | feeder_rate_max = val; | ||||
return (0); | return (0); | ||||
} | } | ||||
SYSCTL_PROC(_hw_snd, OID_AUTO, feeder_rate_max, CTLTYPE_INT | CTLFLAG_RWTUN, | SYSCTL_PROC(_hw_snd, OID_AUTO, feeder_rate_max, | ||||
CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, | |||||
0, sizeof(int), sysctl_hw_snd_feeder_rate_max, "I", | 0, sizeof(int), sysctl_hw_snd_feeder_rate_max, "I", | ||||
"maximum allowable rate"); | "maximum allowable rate"); | ||||
static int | static int | ||||
sysctl_hw_snd_feeder_rate_round(SYSCTL_HANDLER_ARGS) | sysctl_hw_snd_feeder_rate_round(SYSCTL_HANDLER_ARGS) | ||||
{ | { | ||||
int err, val; | int err, val; | ||||
val = feeder_rate_round; | val = feeder_rate_round; | ||||
err = sysctl_handle_int(oidp, &val, 0, req); | err = sysctl_handle_int(oidp, &val, 0, req); | ||||
if (err != 0 || req->newptr == NULL || val == feeder_rate_round) | if (err != 0 || req->newptr == NULL || val == feeder_rate_round) | ||||
return (err); | return (err); | ||||
if (val < Z_ROUNDHZ_MIN || val > Z_ROUNDHZ_MAX) | if (val < Z_ROUNDHZ_MIN || val > Z_ROUNDHZ_MAX) | ||||
return (EINVAL); | return (EINVAL); | ||||
feeder_rate_round = val - (val % Z_ROUNDHZ); | feeder_rate_round = val - (val % Z_ROUNDHZ); | ||||
return (0); | return (0); | ||||
} | } | ||||
SYSCTL_PROC(_hw_snd, OID_AUTO, feeder_rate_round, CTLTYPE_INT | CTLFLAG_RWTUN, | SYSCTL_PROC(_hw_snd, OID_AUTO, feeder_rate_round, | ||||
CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, | |||||
0, sizeof(int), sysctl_hw_snd_feeder_rate_round, "I", | 0, sizeof(int), sysctl_hw_snd_feeder_rate_round, "I", | ||||
"sample rate converter rounding threshold"); | "sample rate converter rounding threshold"); | ||||
static int | static int | ||||
sysctl_hw_snd_feeder_rate_quality(SYSCTL_HANDLER_ARGS) | sysctl_hw_snd_feeder_rate_quality(SYSCTL_HANDLER_ARGS) | ||||
{ | { | ||||
struct snddev_info *d; | struct snddev_info *d; | ||||
struct pcm_channel *c; | struct pcm_channel *c; | ||||
Show All 24 Lines | |||||
CHN_UNLOCK(c); | CHN_UNLOCK(c); | ||||
} | } | ||||
PCM_RELEASE(d); | PCM_RELEASE(d); | ||||
PCM_UNLOCK(d); | PCM_UNLOCK(d); | ||||
} | } | ||||
return (0); | return (0); | ||||
} | } | ||||
SYSCTL_PROC(_hw_snd, OID_AUTO, feeder_rate_quality, CTLTYPE_INT | CTLFLAG_RWTUN, | SYSCTL_PROC(_hw_snd, OID_AUTO, feeder_rate_quality, | ||||
CTLTYPE_INT | CTLFLAG_RWTUN | CTLFLAG_NEEDGIANT, | |||||
0, sizeof(int), sysctl_hw_snd_feeder_rate_quality, "I", | 0, sizeof(int), sysctl_hw_snd_feeder_rate_quality, "I", | ||||
"sample rate converter quality ("__XSTRING(Z_QUALITY_MIN)"=low .. " | "sample rate converter quality ("__XSTRING(Z_QUALITY_MIN)"=low .. " | ||||
__XSTRING(Z_QUALITY_MAX)"=high)"); | __XSTRING(Z_QUALITY_MAX)"=high)"); | ||||
#endif /* _KERNEL */ | #endif /* _KERNEL */ | ||||
/* | /* | ||||
* Resampler type. | * Resampler type. | ||||
Show All 12 Lines |