summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--channels/chan_dahdi.c36
1 files changed, 24 insertions, 12 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index 7a8847e8b..fef686895 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -5150,9 +5150,12 @@ static void fill_txgain(struct dahdi_gains *g, float gain, float drc, int law)
if (drc) {
k = drc_sample(k, drc);
}
- k = (float)k*linear_gain;
- if (k > 32767) k = 32767;
- if (k < -32767) k = -32767;
+ k = (float)k * linear_gain;
+ if (k > 32767) {
+ k = 32767;
+ } else if (k < -32768) {
+ k = -32768;
+ }
g->txgain[j] = AST_LIN2A(k);
} else {
g->txgain[j] = j;
@@ -5166,9 +5169,12 @@ static void fill_txgain(struct dahdi_gains *g, float gain, float drc, int law)
if (drc) {
k = drc_sample(k, drc);
}
- k = (float)k*linear_gain;
- if (k > 32767) k = 32767;
- if (k < -32767) k = -32767;
+ k = (float)k * linear_gain;
+ if (k > 32767) {
+ k = 32767;
+ } else if (k < -32768) {
+ k = -32768;
+ }
g->txgain[j] = AST_LIN2MU(k);
} else {
@@ -5193,9 +5199,12 @@ static void fill_rxgain(struct dahdi_gains *g, float gain, float drc, int law)
if (drc) {
k = drc_sample(k, drc);
}
- k = (float)k*linear_gain;
- if (k > 32767) k = 32767;
- if (k < -32767) k = -32767;
+ k = (float)k * linear_gain;
+ if (k > 32767) {
+ k = 32767;
+ } else if (k < -32768) {
+ k = -32768;
+ }
g->rxgain[j] = AST_LIN2A(k);
} else {
g->rxgain[j] = j;
@@ -5209,9 +5218,12 @@ static void fill_rxgain(struct dahdi_gains *g, float gain, float drc, int law)
if (drc) {
k = drc_sample(k, drc);
}
- k = (float)k*linear_gain;
- if (k > 32767) k = 32767;
- if (k < -32767) k = -32767;
+ k = (float)k * linear_gain;
+ if (k > 32767) {
+ k = 32767;
+ } else if (k < -32768) {
+ k = -32768;
+ }
g->rxgain[j] = AST_LIN2MU(k);
} else {
g->rxgain[j] = j;