summaryrefslogtreecommitdiff
path: root/firmware/export/pcm.h (follow)
Commit message (Collapse)AuthorAge
* Enable setting of global output samplerate on certain targets.Michael Sevakis2013-07-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replaces the NATIVE_FREQUENCY constant with a configurable frequency. The user may select 48000Hz if the hardware supports it. The default is still 44100Hz and the minimum is 44100Hz. The setting is located in the playback settings, under "Frequency". "Frequency" was duplicated in english.lang for now to avoid having to fix every .lang file for the moment and throwing everything out of sync because of the new play_frequency feature in features.txt. The next cleanup should combine it with the one included for recording and generalize the ID label. If the hardware doesn't support 48000Hz, no setting will be available. On particular hardware where very high rates are practical and desireable, the upper bound can be extended by patching. The PCM mixer can be configured to play at the full hardware frequency range. The DSP core can configure to the hardware minimum up to the maximum playback setting (some buffers must be reserved according to the maximum rate). If only 44100Hz is supported or possible on a given target for playback, using the DSP and mixer at other samperates is possible if the hardware offers them. Change-Id: I6023cf0c0baa8bc6292b6919b4dd3618a6a25622 Reviewed-on: http://gerrit.rockbox.org/479 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested-by: Michael Sevakis <jethead71@rockbox.org>
* Silly includes going haywire. Fix the errors/warnings (hopefully).Michael Sevakis2012-05-02
| | | | Change-Id: I7ec2b7e8fe56ad6d65ab757e8667b4951d00ee29
* Clean up peak calculating code.Michael Sevakis2012-05-02
| | | | | | | | | | | | | | Mixer needn't keep peak data around that will never be used. Just pass pcm_peaks structure to it instead of allocating for every channel. Plugin API becomes incompatible. vu_meter digital mode was still using global peak calculation; switch it to playback channel like the rest. Remove some accumulated soil peaks inside pcm.c and make it more generic. Change-Id: Ib4d268d80b6a9d09915eea1c91eab483c1a2c009
* Revise the PCM callback system after adding multichannel audio.Michael Sevakis2012-03-03
| | | | | | | | | | | | | | | | | | Additional status callback is added to pcm_play/rec_data instead of using a special function to set it. Status includes DMA error reporting to the status callback. Playback and recording callback become more alike except playback uses "const void **addr" (because the data should not be altered) and recording uses "void **addr". "const" is put in place throughout where appropriate. Most changes are fairly trivial. One that should be checked in particular because it isn't so much is telechips, if anyone cares to bother. PP5002 is not so trivial either but that tested as working. Change-Id: I4928d69b3b3be7fb93e259f81635232df9bd1df2 Reviewed-on: http://gerrit.rockbox.org/166 Reviewed-by: Michael Sevakis <jethead71@rockbox.org> Tested-by: Michael Sevakis <jethead71@rockbox.org>
* Add more INIT_ATTR and add config.h includes to header files with INIT_ATTR.Boris Gjenero2011-12-19
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31370 a1c6a512-1295-4272-9138-f99709370657
* Move the PCMREC_E/W_* defines back to pcm_record.h because they're part of ↵Michael Sevakis2011-12-08
| | | | | | the recording engine interface. Leave the low-level DMA error defines in pcm.h. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31184 a1c6a512-1295-4272-9138-f99709370657
* Shuffle some functions around so that interfacing with playback.c in ↵Michael Sevakis2011-09-01
| | | | | | particular isn't required. Though playback does finish the audio init, pcm doesn't care who does it. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30403 a1c6a512-1295-4272-9138-f99709370657
* Commit FS#12150 - Fully-functional audio mixer - and finally whip old ↵Michael Sevakis2011-06-29
| | | | | | limitations about playback of voice and other sounds when paused. Channels are independent in state and amplitude. Fade on stop/pause is handled by the channel's volume control rather than global volume which means it now works from anywhere. Opens up the possibility of plugin sounds during music playback by merely adding an additional channel enum. If any PCM drivers were not properly modified, see one of the last comments in the task for a description of the simple change that is expected. Some params are tunable in firmware/export/pcm-mixer.h as well. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@30097 a1c6a512-1295-4272-9138-f99709370657
* Damn. Remove another typo.Michael Sparmann2010-11-13
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28579 a1c6a512-1295-4272-9138-f99709370657
* Fix a typo in a commentMichael Sparmann2010-11-13
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28578 a1c6a512-1295-4272-9138-f99709370657
* e200v1/c200v1: Implement limited samplerate switching. Rates 24kHz and below ↵Michael Sevakis2010-06-26
| | | | | | are being a bear as far as minor crackling at higher amplitude-- leave them out for the time being since no solution is currently evident. 48, 44, 32 (rec rates 24, 22, 16) seem perfectly fine. I'm betting c200 is ok to include because it uses the same setup as e200. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27139 a1c6a512-1295-4272-9138-f99709370657
* Configure Gigabeat S with EABI compiler by default. Implement the INIT ↵Michael Sevakis2010-06-11
| | | | | | section that this enables (due to selective need for long calls). Remove pcm_postinit from INIT section since it's asynchronous. Disable strict aliasing on SPC codec for now just to shut it up. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26779 a1c6a512-1295-4272-9138-f99709370657
* mark some functions as init functions (discarded after init() has run)Rafaël Carré2010-05-27
| | | | | | | | | tick_start, fmradio_i2c_init, pcm_init, pcm_postinit, pcm_play_dma_init Also add some as3525 target specific functions Make as3525v2 use this attribute git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26328 a1c6a512-1295-4272-9138-f99709370657
* Make PCM->driver interface about as simple as it will get. Registered ↵Michael Sevakis2010-05-24
| | | | | | callback, zero data, alignment and stops are handled entirely inside pcm.c; driver merely calls fixed pcm.c callback. Remove pcm_record_more and do it just like playback; the original reason behind it isn't very practical in general. Everything checks out on supported targets. There wer some compat changes I can't check out on many unsupoorted but if there's a problem it will be a minor oops. Plugins become incompatible due to recording tweak-- full update. Sorted API. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26253 a1c6a512-1295-4272-9138-f99709370657
* fix a typo in commentRafaël Carré2010-05-13
| | | | git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25999 a1c6a512-1295-4272-9138-f99709370657
* PCM bottom layer simplification. pcm_rec_peak_addr variable no longer has to ↵Michael Sevakis2010-05-12
| | | | | | be handled there. Driver can just return current pointer for recording peaks. A new define, HAVE_PCM_REC_DMA_ADDRESS, specifies that physical addresses are being used for recording and translation is needed before starting a new block. The drivers need not worry about aligning start and size nor should care if either will be zero. All this will be checked in the logical layer first. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25970 a1c6a512-1295-4272-9138-f99709370657
* Move c/h files implementing/defining standard library stuff into a new libc ↵Thomas Martitz2010-05-06
| | | | | | | | directory, also standard'ify some parts of the code base (almost entirely #include fixes). This is to a) to cleanup firmware/common and firmware/include a bit, but also b) for Rockbox as an application which should use the host system's c library and headers, separating makes it easy to exclude our files from the build. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25850 a1c6a512-1295-4272-9138-f99709370657
* Remove pcm_mute() which has been unused since r19308Rafaël Carré2010-04-27
| | | | | | | Remove audiohw_mute from header as well, and make this function static to each driver (commented out when it was unused) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@25733 a1c6a512-1295-4272-9138-f99709370657
* New plugin: FFT, A frequency analyzer pluginFrank Gevaerts2010-02-10
| | | | | | | | | | | | | There is some more work needed: - Keymaps are definitely not perfect, touchscreen targets are disabled due to no keymap - There is no manual yet Author: Delyan Kratunov Flyspray: FS#10065 git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24587 a1c6a512-1295-4272-9138-f99709370657
* Gigabeat S: Implement an SDMA API and use it in the PCM driver. Some other ↵Michael Sevakis2009-02-08
| | | | | | miscellaneous adjustments to recording and PCM buffer to accomodate use of physical addresses and cache coherency. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19949 a1c6a512-1295-4272-9138-f99709370657
* Keyclick fixup take two. It is only 88 samples (2msec) long so keep a small ↵Michael Sevakis2008-12-13
| | | | | | static buffer around for beeps less than or equal to keyclick duration. This way it operates no matter the buffer state and still won't interfere with alternate PCM operations like recording or plugin playback. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19415 a1c6a512-1295-4272-9138-f99709370657
* Bring consistency to pcm implementation and samplerate handling. Less ↵Michael Sevakis2008-12-12
| | | | | | low-level duplication. A small test_sampr fix so it works on coldfire again. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19400 a1c6a512-1295-4272-9138-f99709370657
* Red build fix: Moved PCM #defines from pcm_record.h to pcm.h. Added ↵Björn Stenberg2008-10-14
| | | | | | necessary #includes to statusbar.c and s1a0903x01.c. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18808 a1c6a512-1295-4272-9138-f99709370657
* Updated our source code header to explicitly mention that we are GPL v2 orDaniel Stenberg2008-06-28
| | | | | | | | | later. We still need to hunt down snippets used that are not. 1324 modified files... http://www.rockbox.org/mail/archive/rockbox-dev-archive-2008-06/0060.shtml git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17847 a1c6a512-1295-4272-9138-f99709370657
* Unify PCM interface just above the hardware driver level for all targets ↵Michael Sevakis2007-10-06
including the sims. Perform lockout of audio callback when changing states. Weird new playback or recording trouble? Check before and after this revision first though things seem quite sound. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15006 a1c6a512-1295-4272-9138-f99709370657