50 #if !defined(_SPANDSP_G711_H_)
51 #define _SPANDSP_G711_H_
55 #define G711_ALAW_IDLE_OCTET 0x5D
57 #define G711_ULAW_IDLE_OCTET 0xFF
70 #if defined(__cplusplus)
115 #define G711_ULAW_BIAS 0x84
121 static __inline__ uint8_t linear_to_ulaw(
int linear)
139 seg = top_bit(linear | 0xFF) - 7;
146 u_val = (uint8_t) (0x7F ^ mask);
148 u_val = (uint8_t) (((seg << 4) | ((linear >> (seg + 3)) & 0xF)) ^ mask);
149 #if defined(G711_ULAW_ZEROTRAP)
162 static __inline__ int16_t ulaw_to_linear(uint8_t ulaw)
172 t = (((ulaw & 0x0F) << 3) +
G711_ULAW_BIAS) << (((
int) ulaw & 0x70) >> 4);
196 #define G711_ALAW_AMI_MASK 0x55
202 static __inline__ uint8_t linear_to_alaw(
int linear)
216 linear = -linear - 1;
220 seg = top_bit(linear | 0xFF) - 7;
226 return (uint8_t) (0x7F ^ mask);
229 return (uint8_t) (0x00 ^ mask);
232 return (uint8_t) (((seg << 4) | ((linear >> ((seg) ? (seg + 3) : 4)) & 0x0F)) ^ mask);
240 static __inline__ int16_t alaw_to_linear(uint8_t alaw)
246 i = ((alaw & 0x0F) << 4);
247 seg = (((int) alaw & 0x70) >> 4);
249 i = (i + 0x108) << (seg - 1);
252 return (int16_t) ((alaw & 0x80) ? i : -i);
277 const uint8_t g711_data[],
301 const uint8_t g711_in[],
320 #if defined(__cplusplus)