aboutsummaryrefslogtreecommitdiffstats
path: root/src/common/emphasis.c
diff options
context:
space:
mode:
authorAndreas Eversberg <jolly@eversberg.eu>2017-01-27 16:57:34 +0100
committerAndreas Eversberg <jolly@eversberg.eu>2017-02-18 21:01:08 +0100
commit7ea3bc188df54a4dbe3026bc30ed39a5cded8fdb (patch)
tree696c78eca5f1676246fed55314c1eab67408c7f4 /src/common/emphasis.c
parent538a9591285bdc2604c5e05c06e4b2d776f4bdf9 (diff)
Move samples of int16_t format to sample_t, that is of type double
This prepares the correction of all levels
Diffstat (limited to 'src/common/emphasis.c')
-rw-r--r--src/common/emphasis.c24
1 files changed, 6 insertions, 18 deletions
diff --git a/src/common/emphasis.c b/src/common/emphasis.c
index c4a8242..57273d4 100644
--- a/src/common/emphasis.c
+++ b/src/common/emphasis.c
@@ -55,9 +55,8 @@ int init_emphasis(emphasis_t *state, int samplerate, double cut_off)
return 0;
}
-void pre_emphasis(emphasis_t *state, int16_t *samples, int num)
+void pre_emphasis(emphasis_t *state, double *samples, int num)
{
- int32_t sample;
double x, y, x_last, factor, amp;
int i;
@@ -66,26 +65,20 @@ void pre_emphasis(emphasis_t *state, int16_t *samples, int num)
amp = state->p.amp;
for (i = 0; i < num; i++) {
- x = (double)(*samples) / 32768.0;
+ x = *samples / 32768.0;
y = x - factor * x_last;
x_last = x;
- sample = (int)(amp * y * 32768.0);
- if (sample > 32767)
- sample = 32767;
- else if (sample < -32768)
- sample = -32768;
- *samples++ = sample;
+ *samples++ = (int)(amp * y * 32768.0);
}
state->p.x_last = x_last;
}
-void de_emphasis(emphasis_t *state, int16_t *samples, int num)
+void de_emphasis(emphasis_t *state, double *samples, int num)
{
- int32_t sample;
double x, y, z, y_last, z_last, d_factor, h_factor, amp;
int i;
@@ -96,7 +89,7 @@ void de_emphasis(emphasis_t *state, int16_t *samples, int num)
amp = state->d.amp;
for (i = 0; i < num; i++) {
- x = (double)(*samples) / 32768.0;
+ x = *samples / 32768.0;
/* de-emphasis */
y = x + d_factor * y_last;
@@ -107,12 +100,7 @@ void de_emphasis(emphasis_t *state, int16_t *samples, int num)
y_last = y;
z_last = z;
- sample = (int)(amp * z * 32768.0);
- if (sample > 32767)
- sample = 32767;
- else if (sample < -32768)
- sample = -32768;
- *samples++ = sample;
+ *samples++ = (int)(amp * z * 32768.0);
}
state->d.y_last = y_last;