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
121static __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)
162static __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
202static __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);
240static __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)
#define G711_ALAW_AMI_MASK
Definition g711.h:196
uint8_t alaw_to_ulaw(uint8_t alaw)
Transcode from A-law to u-law, using the procedure defined in G.711.
Definition g711.c:86
#define G711_ULAW_BIAS
Definition g711.h:115
uint8_t ulaw_to_alaw(uint8_t ulaw)
Transcode from u-law to A-law, using the procedure defined in G.711.
Definition g711.c:92
struct g711_state_s g711_state_t
Definition g711.h:68
int g711_transcode(g711_state_t *s, uint8_t g711_out[], const uint8_t g711_in[], int g711_bytes)
Transcode between u-law and A-law.
Definition g711.c:146
g711_state_t * g711_init(g711_state_t *s, int mode)
Definition g711.c:170
int g711_encode(g711_state_t *s, uint8_t g711_data[], const int16_t amp[], int len)
Encode from linear to u-law or A-law.
Definition g711.c:122
int g711_decode(g711_state_t *s, int16_t amp[], const uint8_t g711_data[], int g711_bytes)
Decode from u-law or A-law to linear.
Definition g711.c:98
int g711_release(g711_state_t *s)
Definition g711.c:182
int g711_free(g711_state_t *s)
Definition g711.c:188
Definition private/g711.h:33
int mode
Definition private/g711.h:35