Dynamic range companding algorithms