|
|
@ -40,6 +40,7 @@ static int32_t parse_gain(const char *gain) |
|
|
|
char *fraction; |
|
|
|
char *fraction; |
|
|
|
int scale = 10000; |
|
|
|
int scale = 10000; |
|
|
|
int32_t mb = 0; |
|
|
|
int32_t mb = 0; |
|
|
|
|
|
|
|
int sign = 1; |
|
|
|
int db; |
|
|
|
int db; |
|
|
|
|
|
|
|
|
|
|
|
if (!gain) |
|
|
|
if (!gain) |
|
|
@ -47,6 +48,9 @@ static int32_t parse_gain(const char *gain) |
|
|
|
|
|
|
|
|
|
|
|
gain += strspn(gain, " \t"); |
|
|
|
gain += strspn(gain, " \t"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (*gain == '-') |
|
|
|
|
|
|
|
sign = -1; |
|
|
|
|
|
|
|
|
|
|
|
db = strtol(gain, &fraction, 0); |
|
|
|
db = strtol(gain, &fraction, 0); |
|
|
|
if (*fraction++ == '.') { |
|
|
|
if (*fraction++ == '.') { |
|
|
|
while (av_isdigit(*fraction) && scale) { |
|
|
|
while (av_isdigit(*fraction) && scale) { |
|
|
@ -59,7 +63,7 @@ static int32_t parse_gain(const char *gain) |
|
|
|
if (abs(db) > (INT32_MAX - mb) / 100000) |
|
|
|
if (abs(db) > (INT32_MAX - mb) / 100000) |
|
|
|
return INT32_MIN; |
|
|
|
return INT32_MIN; |
|
|
|
|
|
|
|
|
|
|
|
return db * 100000 + FFSIGN(db) * mb; |
|
|
|
return db * 100000 + sign * mb; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static uint32_t parse_peak(const uint8_t *peak) |
|
|
|
static uint32_t parse_peak(const uint8_t *peak) |
|
|
|