* commit '25b6837f7cacd691b19cbc12b9dad1ce84a318a1':
replaygain: fix gain sign decoding
Merged-by: Michael Niedermayer <michaelni@gmx.at>
... | ... |
@@ -40,6 +40,7 @@ static int32_t parse_gain(const char *gain) |
40 | 40 |
char *fraction; |
41 | 41 |
int scale = 10000; |
42 | 42 |
int32_t mb = 0; |
43 |
+ int sign = 1; |
|
43 | 44 |
int db; |
44 | 45 |
|
45 | 46 |
if (!gain) |
... | ... |
@@ -47,6 +48,9 @@ static int32_t parse_gain(const char *gain) |
47 | 47 |
|
48 | 48 |
gain += strspn(gain, " \t"); |
49 | 49 |
|
50 |
+ if (*gain == '-') |
|
51 |
+ sign = -1; |
|
52 |
+ |
|
50 | 53 |
db = strtol(gain, &fraction, 0); |
51 | 54 |
if (*fraction++ == '.') { |
52 | 55 |
while (av_isdigit(*fraction) && scale) { |
... | ... |
@@ -59,7 +63,7 @@ static int32_t parse_gain(const char *gain) |
59 | 59 |
if (abs(db) > (INT32_MAX - mb) / 100000) |
60 | 60 |
return INT32_MIN; |
61 | 61 |
|
62 |
- return db * 100000 + FFSIGN(db) * mb; |
|
62 |
+ return db * 100000 + sign * mb; |
|
63 | 63 |
} |
64 | 64 |
|
65 | 65 |
static uint32_t parse_peak(const uint8_t *peak) |