diff options
author | Michael Giacomelli <giac2000@hotmail.com> | 2011-07-25 01:00:15 +0000 |
---|---|---|
committer | Michael Giacomelli <giac2000@hotmail.com> | 2011-07-25 01:00:15 +0000 |
commit | 62d666df6f0e35b0619a7c0c04ec61609709e41a (patch) | |
tree | ce422d069cf6dfcd71d6f9199c4f2d872827432f /firmware/target | |
parent | c27ea297a35b555b93a5e2be66297c1ba6cdbed4 (diff) | |
download | rockbox-62d666df6f0e35b0619a7c0c04ec61609709e41a.tar.gz rockbox-62d666df6f0e35b0619a7c0c04ec61609709e41a.zip |
Convert AMSv2 microphone samples from 14 to 16 bit before storing them.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30209 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target')
-rw-r--r-- | firmware/target/arm/as3525/pcm-as3525.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/firmware/target/arm/as3525/pcm-as3525.c b/firmware/target/arm/as3525/pcm-as3525.c index 1b22d48f7f..a89a47d400 100644 --- a/firmware/target/arm/as3525/pcm-as3525.c +++ b/firmware/target/arm/as3525/pcm-as3525.c | |||
@@ -337,10 +337,32 @@ static inline void mono2stereo(int16_t *end) | |||
337 | } | 337 | } |
338 | #endif /* CONFIG_CPU == AS3525 */ | 338 | #endif /* CONFIG_CPU == AS3525 */ |
339 | 339 | ||
340 | #if CONFIG_CPU == AS3525v2 | ||
341 | /* scale microphone audio by 2 bits due to 14 bit ADC */ | ||
342 | static inline void scalevolume(int16_t *end, int size) | ||
343 | { | ||
344 | if(audio_channels != 1) /* only for microphone */ | ||
345 | return; | ||
346 | |||
347 | /* load pointer in a register and avoid updating it in each loop */ | ||
348 | register int16_t *samples = end; | ||
349 | |||
350 | do { | ||
351 | *samples++ <<=2; | ||
352 | |||
353 | } while(samples != end+size); | ||
354 | |||
355 | } | ||
356 | #endif /* CONFIG_CPU == AS3525v2 */ | ||
357 | |||
340 | static void rec_dma_callback(void) | 358 | static void rec_dma_callback(void) |
341 | { | 359 | { |
342 | if(rec_dma_transfer_size) | 360 | if(rec_dma_transfer_size) |
343 | { | 361 | { |
362 | |||
363 | #if CONFIG_CPU == AS3525v2 | ||
364 | scalevolume(AS3525_UNCACHED_ADDR((int16_t*)rec_dma_start_addr), rec_dma_transfer_size); | ||
365 | #endif | ||
344 | rec_dma_size -= rec_dma_transfer_size; | 366 | rec_dma_size -= rec_dma_transfer_size; |
345 | rec_dma_start_addr += rec_dma_transfer_size; | 367 | rec_dma_start_addr += rec_dma_transfer_size; |
346 | 368 | ||