Browse code

Merge commit '25b6837f7cacd691b19cbc12b9dad1ce84a318a1'

* commit '25b6837f7cacd691b19cbc12b9dad1ce84a318a1':
replaygain: fix gain sign decoding

Merged-by: Michael Niedermayer <michaelni@gmx.at>

Michael Niedermayer authored on 2014/04/05 05:43:37
Showing 1 changed files
... ...
@@ -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)