270 likes | 1.09k Views
Adaptive Differential Pulse Code Modulation. Instructor: Chia-Tsun Wu. 11/18/2004. Outline. File format for voice data files ADPCM encoding algorithm ADPCM decoding algorithm Step size determination Initial and reset conditions ADPCM CODEC C example code LAB.
E N D
Adaptive Differential Pulse Code Modulation Instructor: Chia-Tsun Wu. 11/18/2004
Outline • File format for voice data files • ADPCM encoding algorithm • ADPCM decoding algorithm • Step size determination • Initial and reset conditions • ADPCM CODEC C example code • LAB
ADPCM encoding algorithm let B3 = B2 = B1 = B0 = 0 if (d(n) < 0) then B3 = 1 d(n) = ABS(d(n)) if (d(n) >= ss(n)) then B2 = 1 and d(n) = d(n) - ss(n) if (d(n) >= ss(n) / 2) then B1 = 1 and d(n) = d(n) - ss(n) / 2 if (d(n) >= ss(n) / 4) then B0 = 1 L(n) = (10002 * B3) + (1002 * B2) + (102 * B1) + B0
ADPCM decoding algorithm d(n) = (ss(n)*B2) + (ss(n)/2*B1) + (ss(n)/4*BO) + (ss(n)/8) if (B3 = 1) then d(n) = d(n) * (-1) X(n) = X(n-1) + d(n)
Initial and reset conditions • Step size ss(n) = 16 • Estimated waveform value X = 0 (half scale) • No DC offset input
ADPCM CODEC C example code • Please refer to reference [2]
Two examples • Example 1: • Speech: 8 bits resolutions, 22.5K sample rate • ADPCM encode to 2 bits per sample • Example 2: • Music: 8 bits resolutions, 22.5K sample rate • ADPCM encode to 2 bits per sample
Distortions Source ADPCM encode
LAB • Lab 1: Write a 16 to 4 or 12 to 4 ADPCM CODEC • Sample rate: 8KHz for speech • Resolutions: 16 or 12 bits • Encode to 4 bits • Lab 2: Write a 16 to 4 or 12 to 4 ADPCM CODEC • Sample rate: 44.1K for music • Resolutions: 16 bits • Encode to 4 bits • Lab 3: Write a 8 to 2 ADPCM CODEC • Sample rate: 8KHz for speech • Resolutions: 8 bits • Encode to 2 bits • Bonus: try to explain and optimal your algorithm to reduce distortions or noise. (need more analysis)
Reference • http://resource.intel.com/telecom/support/appnotes/adpcm.pdf • http://strawberry.resnet.mtu.edu/pub/Microchip/Dsk1/10/appnote/category/pic16/