This file defines a useful set of functions for IMA/DVI ADPCM compression/decompression on AVR32 devices.
Definition in file adpcm.c.
#include "dsp.h"
Go to the source code of this file.
Defines | |
#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. | |
S16 | dsp_adpcm_ima_decode_nibble (S8 nibble, S16 *step_index, S16 *predicted_value) |
IMA/DVI ADPCM sample decoder. | |
void | dsp_adpcm_ima_encode (void *out, S16 *in, int size, S16 *step_index, S16 *predicted_value) |
IMA/DVI ADPCM encoder. | |
S8 | dsp_adpcm_ima_encode_nibble (S16 nibble, S16 *step_index, S16 *predicted_value) |
IMA/DVI ADPCM sample encoder. | |
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;
Definition at line 54 of file adpcm.c.
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 | ) |
Definition at line 87 of file adpcm.c.
Referenced by dsp_adpcm_ima_encode(), and dsp_adpcm_ima_encode_nibble().
int adpcm_ima_index_table[16] [static] |
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 }