adpcm.c File Reference


Detailed Description

IMA/DVI ADPCM functions for AVR32 UC3.

This file defines a useful set of functions for IMA/DVI ADPCM compression/decompression on AVR32 devices.

Author:
Atmel Corporation: http://www.atmel.com
Support and FAQ: http://support.atmel.no/

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 Documentation

#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().


Variable Documentation

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
}

Definition at line 155 of file adpcm.c.

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
}

Definition at line 140 of file adpcm.c.


Generated on Fri Feb 19 02:23:17 2010 for AVR32 UC3 - EVK1104 DSPLib Demo Documentation by  doxygen 1.5.5