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 | |
| parent | c27ea297a35b555b93a5e2be66297c1ba6cdbed4 (diff) | |
| download | rockbox-62d666df6f0e35b0619a7c0c04ec61609709e41a.zip rockbox-62d666df6f0e35b0619a7c0c04ec61609709e41a.tar.gz rockbox-62d666df6f0e35b0619a7c0c04ec61609709e41a.tar.bz2 rockbox-62d666df6f0e35b0619a7c0c04ec61609709e41a.tar.xz | |
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
| -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 1b22d48..a89a47d 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) } #endif /* CONFIG_CPU == AS3525 */ +#if CONFIG_CPU == AS3525v2 +/* scale microphone audio by 2 bits due to 14 bit ADC */ +static inline void scalevolume(int16_t *end, int size) +{ + if(audio_channels != 1) /* only for microphone */ + return; + + /* load pointer in a register and avoid updating it in each loop */ + register int16_t *samples = end; + + do { + *samples++ <<=2; + + } while(samples != end+size); + +} +#endif /* CONFIG_CPU == AS3525v2 */ + static void rec_dma_callback(void) { if(rec_dma_transfer_size) { + +#if CONFIG_CPU == AS3525v2 + scalevolume(AS3525_UNCACHED_ADDR((int16_t*)rec_dma_start_addr), rec_dma_transfer_size); +#endif rec_dma_size -= rec_dma_transfer_size; rec_dma_start_addr += rec_dma_transfer_size; |