Microchip® Advanced Software Framework

adpcm.c File Reference
#include "dsp.h"

Macros

#define ADPCM_IMA_DECODE_NIBBLE(v_nibble, v_step_index, v_predicted_value)
 
#define ADPCM_IMA_ENCODE_NIBBLE(v_out, v_nibble, v_step_index, v_predicted_value)
 

Functions

void dsp_adpcm_ima_decode (S16 *out, void *in, int size, S16 *step_index, S16 *predicted_value)
 IMA/DVI ADPCM decoder. More...
 
S16 dsp_adpcm_ima_decode_nibble (S8 nibble, S16 *step_index, S16 *predicted_value)
 IMA/DVI ADPCM sample decoder. More...
 
void dsp_adpcm_ima_encode (void *out, S16 *in, int size, S16 *step_index, S16 *predicted_value)
 IMA/DVI ADPCM encoder. More...
 
S8 dsp_adpcm_ima_encode_nibble (S16 nibble, S16 *step_index, S16 *predicted_value)
 IMA/DVI ADPCM sample encoder. More...
 

Variables

static int adpcm_ima_index_table [16]
 
static int adpcm_ima_step_table [89]
 

#define ADPCM_IMA_DECODE_NIBBLE (   v_nibble,
  v_step_index,
  v_predicted_value 
)
Value:
step = adpcm_ima_step_table[v_step_index]; \
\
v_step_index += adpcm_ima_index_table[v_nibble]; \
if (v_step_index < 0) \
v_step_index = 0; \
else if (v_step_index > 88) \
v_step_index = 88; \
\
diff = step >> 3; \
if (nibble & 4) \
diff += step; \
if (nibble & 2) \
diff += step >> 1; \
if (nibble & 1) \
diff += step >> 2; \
if (nibble & 8) \
v_predicted_value -= diff; \
else \
v_predicted_value += diff; \
if ((v_predicted_value) < -0x8000) \
(v_predicted_value) = -0x8000; \
else if ((v_predicted_value) > 0x7fff) \
(v_predicted_value) = 0x7fff;
static int adpcm_ima_step_table[89]
Definition: adpcm.c:133
if(memp!=NULL)
Definition: lwip-1.4.1/src/core/memp.c:407
else
Definition: lwip-1.4.1/src/core/memp.c:418
static int adpcm_ima_index_table[16]
Definition: adpcm.c:148

Referenced by dsp_adpcm_ima_decode(), and dsp_adpcm_ima_decode_nibble().

#define ADPCM_IMA_ENCODE_NIBBLE (   v_out,
  v_nibble,
  v_step_index,
  v_predicted_value 
)

int adpcm_ima_index_table[16]
static
Initial value:
= {
-1, -1, -1, -1, 2, 4, 6, 8,
-1, -1, -1, -1, 2, 4, 6, 8
}
int adpcm_ima_step_table[89]
static
Initial value:
= {
7, 8, 9, 10, 11, 12, 13, 14,
16, 17, 19, 21, 23, 25, 28, 31,
34, 37, 41, 45, 50, 55, 60, 66,
73, 80, 88, 97, 107, 118, 130, 143,
157, 173, 190, 209, 230, 253, 279, 307,
337, 371, 408, 449, 494, 544, 598, 658,
724, 796, 876, 963, 1060, 1166, 1282, 1411,
1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024,
3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484,
7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899,
15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767
}