#include <dev/sound/pcm/sound.h>
#include <dev/sound/pcm/pcm.h>
#include "feeder_if.h"
#include "snd_fxdiv_gen.h"
#include "feeder_eq_gen.h"
Go to the source code of this file.
|
| SND_DECLARE_FILE ("$FreeBSD$") |
|
| SYSCTL_STRING (_hw_snd, OID_AUTO, feeder_eq_presets, CTLFLAG_RD, &feeder_eq_presets, 0, "compile-time eq presets") |
|
| SYSCTL_INT (_hw_snd, OID_AUTO, feeder_eq_exact_rate, CTLFLAG_RWTUN, &feeder_eq_exact_rate, 0, "force exact rate validation") |
|
static struct feed_eq_coeff * | feed_eq_coeff_rate (uint32_t rate) |
|
int | feeder_eq_validrate (uint32_t rate) |
|
static void | feed_eq_reset (struct feed_eq_info *info) |
|
static int | feed_eq_setup (struct feed_eq_info *info) |
|
static int | feed_eq_init (struct pcm_feeder *f) |
|
static int | feed_eq_set (struct pcm_feeder *f, int what, int value) |
|
static int | feed_eq_free (struct pcm_feeder *f) |
|
static int | feed_eq_feed (struct pcm_feeder *f, struct pcm_channel *c, uint8_t *b, uint32_t count, void *source) |
|
| FEEDER_DECLARE (feeder_eq, NULL) |
|
static int32_t | feed_eq_scan_preamp_arg (const char *s) |
|
static int | sysctl_dev_pcm_eq (SYSCTL_HANDLER_ARGS) |
|
static int | sysctl_dev_pcm_eq_preamp (SYSCTL_HANDLER_ARGS) |
|
void | feeder_eq_initsys (device_t dev) |
|
◆ FEEDEQ_BIQUAD_TAB_SIZE
◆ FEEDEQ_CLAMP
#define FEEDEQ_CLAMP |
( |
|
v | ) |
|
◆ FEEDEQ_DECLARE
#define FEEDEQ_DECLARE |
( |
|
SIGN, |
|
|
|
BIT, |
|
|
|
ENDIAN |
|
) |
| |
◆ FEEDEQ_ENTRY
#define FEEDEQ_ENTRY |
( |
|
SIGN, |
|
|
|
BIT, |
|
|
|
ENDIAN |
|
) |
| |
Value: { \
AFMT_##SIGN##BIT##_##ENDIAN, \
feed_eq_biquad_##SIGN##BIT##ENDIAN \
}
Definition at line 237 of file feeder_eq.c.
◆ FEEDEQ_ERR_CLIP_CHECK
#define FEEDEQ_ERR_CLIP_CHECK |
( |
|
... | ) |
|
◆ FEEDEQ_IF2PREAMP
#define FEEDEQ_IF2PREAMP |
( |
|
i, |
|
|
|
f |
|
) |
| |
Value: ((abs(i) << FEEDEQ_GAIN_SHIFT) | \
(((abs(f) / FEEDEQ_GAIN_STEP) * FEEDEQ_GAIN_STEP) & \
FEEDEQ_GAIN_FMASK))
Definition at line 73 of file feeder_eq.c.
◆ FEEDEQ_L2GAIN
◆ FEEDEQ_LEVELS
Value: (((FEEDEQ_GAIN_MAX - FEEDEQ_GAIN_MIN) * \
(FEEDEQ_GAIN_DIV / FEEDEQ_GAIN_STEP)) + 1)
Definition at line 54 of file feeder_eq.c.
◆ FEEDEQ_PREAMP2IDX
#define FEEDEQ_PREAMP2IDX |
( |
|
v | ) |
|
Value: ((int32_t)((FEEDEQ_GAIN_MAX * (FEEDEQ_GAIN_DIV / \
FEEDEQ_PREAMP_IPART(v) * (FEEDEQ_GAIN_DIV / \
#define FEEDEQ_PREAMP_FPART(x)
#define FEEDEQ_PREAMP_SIGNVAL(x)
Definition at line 88 of file feeder_eq.c.
◆ FEEDEQ_PREAMP_DEFAULT
◆ FEEDEQ_PREAMP_FMAX
#define FEEDEQ_PREAMP_FMAX 9 |
◆ FEEDEQ_PREAMP_FMIN
#define FEEDEQ_PREAMP_FMIN 0 |
◆ FEEDEQ_PREAMP_FPART
#define FEEDEQ_PREAMP_FPART |
( |
|
x | ) |
(abs(x) & FEEDEQ_GAIN_FMASK) |
◆ FEEDEQ_PREAMP_IMAX
#define FEEDEQ_PREAMP_IMAX 192 |
◆ FEEDEQ_PREAMP_IMIN
#define FEEDEQ_PREAMP_IMIN -192 |
◆ FEEDEQ_PREAMP_INVALID
#define FEEDEQ_PREAMP_INVALID INT_MAX |
◆ FEEDEQ_PREAMP_IPART
#define FEEDEQ_PREAMP_IPART |
( |
|
x | ) |
(abs(x) >> FEEDEQ_GAIN_SHIFT) |
◆ FEEDEQ_PREAMP_MAX
#define FEEDEQ_PREAMP_MAX |
Value:
FEEDEQ_IF2PREAMP(FEEDEQ_GAIN_MAX, 0))
Definition at line 82 of file feeder_eq.c.
◆ FEEDEQ_PREAMP_MIN
#define FEEDEQ_PREAMP_MIN |
Value:
FEEDEQ_IF2PREAMP(FEEDEQ_GAIN_MIN, 0))
Definition at line 78 of file feeder_eq.c.
◆ FEEDEQ_PREAMP_SIGNMARK
#define FEEDEQ_PREAMP_SIGNMARK |
( |
|
x | ) |
(((x) < 0) ? '-' : '+') |
◆ FEEDEQ_PREAMP_SIGNVAL
#define FEEDEQ_PREAMP_SIGNVAL |
( |
|
x | ) |
((x) < 0 ? -1 : 1) |
◆ SND_USE_FXDIV
◆ feed_eq_t
typedef void(* feed_eq_t) (struct feed_eq_info *, uint8_t *, uint32_t) |
◆ feed_eq_coeff_rate()
static struct feed_eq_coeff * feed_eq_coeff_rate |
( |
uint32_t |
rate | ) |
|
|
static |
◆ feed_eq_feed()
static int feed_eq_feed |
( |
struct pcm_feeder * |
f, |
|
|
struct pcm_channel * |
c, |
|
|
uint8_t * |
b, |
|
|
uint32_t |
count, |
|
|
void * |
source |
|
) |
| |
|
static |
◆ feed_eq_free()
◆ feed_eq_init()
Definition at line 339 of file feeder_eq.c.
References AFMT_BPS, AFMT_CHANNEL, AFMT_ENCODING, feed_eq_info::align, feed_eq_info::bass, feed_eq_info::biquad, feed_eq_info::channels, pcm_feeder::data, pcm_feeder::desc, feed_eq_biquad_tab, feed_eq_setup(), FEEDEQ_BIQUAD_TAB_SIZE, FEEDEQ_L2GAIN, FEEDEQ_PREAMP2IDX, FEEDEQ_PREAMP_DEFAULT, FEEDEQ_UNKNOWN, feed_eq_tone::gain, pcm_feederdesc::in, pcm_feederdesc::out, feed_eq_info::preamp, feed_eq_info::rate, feed_eq_info::state, and feed_eq_info::treble.
◆ feed_eq_reset()
◆ feed_eq_scan_preamp_arg()
static int32_t feed_eq_scan_preamp_arg |
( |
const char * |
s | ) |
|
|
static |
◆ feed_eq_set()
static int feed_eq_set |
( |
struct pcm_feeder * |
f, |
|
|
int |
what, |
|
|
int |
value |
|
) |
| |
|
static |
Definition at line 379 of file feeder_eq.c.
References AFMT_BPS, feed_eq_info::align, feed_eq_info::bass, feed_eq_info::channels, pcm_feeder::data, pcm_feeder::desc, feed_eq_reset(), feed_eq_setup(), FEEDEQ_BASS, FEEDEQ_BYPASS, FEEDEQ_CHANNELS, FEEDEQ_DISABLE, FEEDEQ_ENABLE, FEEDEQ_L2GAIN, FEEDEQ_PREAMP, FEEDEQ_PREAMP2IDX, FEEDEQ_PREAMP_MAX, FEEDEQ_RATE, FEEDEQ_STATE, FEEDEQ_TREBLE, FEEDEQ_UNKNOWN, feeder_eq_validrate(), feed_eq_tone::gain, pcm_feederdesc::in, feed_eq_info::preamp, feed_eq_info::rate, SND_CHN_MAX, feed_eq_info::state, feed_eq_info::treble, value, and what.
◆ feed_eq_setup()
◆ FEEDER_DECLARE()
FEEDER_DECLARE |
( |
feeder_eq |
, |
|
|
NULL |
|
|
) |
| |
◆ feeder_eq_initsys()
void feeder_eq_initsys |
( |
device_t |
dev | ) |
|
◆ feeder_eq_validrate()
int feeder_eq_validrate |
( |
uint32_t |
rate | ) |
|
◆ SND_DECLARE_FILE()
SND_DECLARE_FILE |
( |
"$FreeBSD$" |
| ) |
|
◆ sysctl_dev_pcm_eq()
static int sysctl_dev_pcm_eq |
( |
SYSCTL_HANDLER_ARGS |
| ) |
|
|
static |
Definition at line 544 of file feeder_eq.c.
References snddev_info::busy, c, chn_findfeeder(), CHN_FOREACH, CHN_LOCK, CHN_UNLOCK, FEEDEQ_BYPASS, FEEDEQ_DISABLE, FEEDEQ_ENABLE, FEEDEQ_STATE, FEEDER_EQ, snddev_info::flags, snddev_info::pcm, PCM_ACQUIRE, PCM_LOCK, PCM_REGISTERED, PCM_RELEASE, PCM_RELEASE_QUICK, PCM_UNLOCK, PCM_WAIT, req, SD_F_EQ_BYPASSED, SD_F_EQ_ENABLED, and val.
Referenced by feeder_eq_initsys().
◆ sysctl_dev_pcm_eq_preamp()
static int sysctl_dev_pcm_eq_preamp |
( |
SYSCTL_HANDLER_ARGS |
| ) |
|
|
static |
Definition at line 604 of file feeder_eq.c.
References buf, snddev_info::busy, c, chn_findfeeder(), CHN_FOREACH, CHN_LOCK, CHN_UNLOCK, snddev_info::eqpreamp, feed_eq_scan_preamp_arg(), FEEDEQ_PREAMP, FEEDEQ_PREAMP_FPART, FEEDEQ_PREAMP_INVALID, FEEDEQ_PREAMP_IPART, FEEDEQ_PREAMP_MAX, FEEDEQ_PREAMP_MIN, FEEDEQ_PREAMP_SIGNMARK, FEEDER_EQ, snddev_info::pcm, PCM_ACQUIRE, PCM_LOCK, PCM_REGISTERED, PCM_RELEASE, PCM_RELEASE_QUICK, PCM_UNLOCK, PCM_WAIT, req, and val.
Referenced by feeder_eq_initsys().
◆ SYSCTL_INT()
SYSCTL_INT |
( |
_hw_snd |
, |
|
|
OID_AUTO |
, |
|
|
feeder_eq_exact_rate |
, |
|
|
CTLFLAG_RWTUN |
, |
|
|
& |
feeder_eq_exact_rate, |
|
|
0 |
, |
|
|
"force exact rate validation" |
|
|
) |
| |
◆ SYSCTL_STRING()
SYSCTL_STRING |
( |
_hw_snd |
, |
|
|
OID_AUTO |
, |
|
|
feeder_eq_presets |
, |
|
|
CTLFLAG_RD |
, |
|
|
& |
feeder_eq_presets, |
|
|
0 |
, |
|
|
"compile-time eq presets" |
|
|
) |
| |
◆ biquad
const struct { ... } feed_eq_biquad_tab[] |
Initial value:= {
}
#define FEEDEQ_ENTRY(SIGN, BIT, ENDIAN)
Referenced by feed_eq_init().
◆ feeder_eq_desc
◆ feeder_eq_exact_rate
int feeder_eq_exact_rate = 0 |
|
static |
◆ feeder_eq_methods
kobj_method_t feeder_eq_methods[] |
|
static |
Initial value:= {
}
static int feed_eq_set(struct pcm_feeder *f, int what, int value)
static int feed_eq_init(struct pcm_feeder *f)
static int feed_eq_feed(struct pcm_feeder *f, struct pcm_channel *c, uint8_t *b, uint32_t count, void *source)
static int feed_eq_free(struct pcm_feeder *f)
Definition at line 491 of file feeder_eq.c.
◆ feeder_eq_presets
char feeder_eq_presets[] = FEEDER_EQ_PRESETS |
|
static |
◆ format