// -5 -24.08 dB
// -6 -30.10 dB
// -7 -36.12 dB
// -8 -42.14 dB
$fourbit =
str_pad(decbin(($compre & 0xF0
) >> 4
), 4, '0', STR_PAD_LEFT
);
if ($fourbit[0
] == '1'
) { $log_gain = -8 +
bindec(substr($fourbit, 1
));
} else { $log_gain =
bindec(substr($fourbit, 1
));
} $log_gain =
($log_gain + 1
) * getid3_lib::
RGADamplitude2dB(2
);
// The value of Y is a linear representation of a gain change of up to -6 dB. Y is considered to
// be an unsigned fractional integer, with a leading value of 1, or: 0.1 Y4 Y5 Y6 Y7 (base 2). Y can
// represent values between 0.111112 (or 31/32) and 0.100002 (or 1/2). Thus, Y can represent gain
// changes from -0.28 dB to -6.02 dB.
$lin_gain =
(16 +
($compre & 0x0F
)) / 32;
// The combination of X and Y values allows compr to indicate gain changes from
// 48.16 - 0.28 = +47.89 dB, to
// -42.14 - 6.02 = -48.16 dB.