summaryrefslogtreecommitdiffstats
path: root/firmware/target/hosted/pcm-alsa.c
AgeCommit message (Collapse)AuthorFilesLines
2021-08-12Eros Q Hosted: Apply DC Bias to PCM DataDana Conrad1-2/+7
Similar to the native port, the hosted port benefits from adding a -1 dc bias to the PCM data. This prevents almost all clicking artifacts. Change-Id: Ic6378716774b6d88df23c476e2ef54d49f33dc72
2021-07-25pcm: Remove unused function pcm_play_dma_get_peak_buffer()Aidan MacDonald1-7/+0
Change-Id: Ifd20fb14a22489cdb99154c01f69809a1e70d0c5
2021-04-08erosq: Switch to 32-bit PCM output, and do volume scaling in driverSolomon Peachy1-1/+1
Should improve audio output quality, especially at lower volumes. Change-Id: I31c38f05fe4b554b092511f0fe7aaad9f346f6c5
2021-04-08alsa: Fix an #ifdef typo in 54fcb907c1Solomon Peachy1-1/+1
HAE_ALSA_32BIT -> HAVE_ALSA_32BIT Change-Id: Icf375d42f6b20e8393b6ffe6d23b3ac96abb571b
2021-04-08alsa: instead of per-target tests, use HAVE_ALSA_32BITSolomon Peachy1-25/+29
Affects all Sony NWZ (linux) and the fiio m3k linux targets. Change-Id: I2fcf121bd026103d2b72332a5a52cc2b5e93949f
2020-11-18hosted: Improve buffer underrun handling in the ALSA driverSolomon Peachy1-12/+53
* Bump internal mix buffer size by 4x, to 1K frames (matching ALSA period) * Handle an underrun that occurs when filling the audio buffer * Log underruns and make them available in the debug info Change-Id: I28d56dd35d88851fa167ad92368a5882937a758f
2020-11-12pcm: Further cleanup of unused bits of the PCM ACPI:Solomon Peachy1-5/+0
* pcm_get_bytes_remaining() * pcm_calculate_peaks() * pcm_get_peak_buffer() Nothing in-tree uses these at all (except for the lua plugin wrapper) Change-Id: I971b7beed6760250c8b1ce58f401a601e1e2d585
2020-10-31nwz/alsa: various improvementsAmaury Pouly1-12/+6
Also audiohw driver to specific device name, rewrite alsa controls code to cache more data, thus making the code easier and use less stack. Avoid using short/long in pcm alsa code since it's the wrong size on 64-bit (simulator for example) Change-Id: Ibc1ec44396e37b6cbdedbcf37300878638e5d2d3
2020-10-31pcm: Get rid of pcm_play_pause() and associated APIsSolomon Peachy1-28/+4
Nothing in the core has used it for some time. It's exported to the plugin API but the last plugins to use it were switched to the mixer API back in 2011. This allows us to get rid of pcm_play_dma_pause() from all audio drivers Change-Id: Ic3fa02592316f84963e41d792d1cabb436d1ff6b
2020-10-25pcm-alsa: fix red.Solomon Peachy1-1/+1
Change-Id: Id8d5442b0b3eb4ce3c20d1c9d24f07b5378cc22f
2020-10-25hosted: alsa: Fix two bugs when recordingSolomon Peachy1-4/+6
Change-Id: Ib97857874676ea4aa8f04d44e048de8465a4da4f
2020-10-23ALSA: Further rework:Solomon Peachy1-192/+364
* Get rid of non-async (ie tick task) mode due to inherent brokenness * Get rid of nonblock mode; we never write if buffers aren't sufficient * Move driver init into pcm_open() instead of pcm_init() * Much better underrun handling * Better error handling in some situations * Add in recording functionality * Use smaller audio buffers to avoid glitching * Don't start audio buffer with silence * Allow device name to be overridden by target Recording portions based on work done by Lorenzo Miori in g#633 Change-Id: I0197bdc1749c28109eb79def1e6a3e1d62d8cef3
2020-10-21hosted: Allow ALSA driver to switch output device at runtimeSolomon Peachy1-19/+28
* Allow output device name to be specified * Set hw/swparams prior to actual playback start, not at init * If told to open a new device, cleanly close down old one. Change-Id: Ib97310ec23588136c031466ee9c22312ab0f9f5a
2020-10-12hosted: More PCM muting workSolomon Peachy1-7/+7
* Track mute state, only call hw if actual change is needed * Don't unmute in audiohw_postinit() * sample rate tracking fixes * erosq: Don't start up muted Change-Id: I004f787a4b7ea73c16b6ec9818ec29a12c89f46b
2020-10-12Hosted PCM: Rework auto-muting code a bitSolomon Peachy1-17/+25
* If AUDIOHW_MUTE_ON_PAUSE, no meaningful change * Unconditionally unmute on playback start * xduoox3ii: Mute on sample rate change * rocker/xduoo: Stay muted after startup This avoids the nasty "pop" on startup, without doing the full mute-on-pause stuff that causes unacceptable dropouts on the X3ii. Change-Id: I2e3ee0bb8094e288f37a0acada86a80016ce5cac
2020-10-03alsa: Refactor pcm_dma_apply_settings_nolock()Solomon Peachy1-14/+7
Change-Id: I32190e6987afca99b24197ca7ae2853053062d30
2020-10-03alsa: introduce AUDIOHW_MUTE_ON_PAUSE, and have rocker use it.Solomon Peachy1-7/+11
Change-Id: I1edbb8e71a9c73baaeecb01b66cbee6c3f7b5f8f
2020-10-03alsa: Explicitly mute the output when we stop playing, and unmute after ↵Solomon Peachy1-1/+14
playback starts Allows us to avoid hearing the codec powering on and off. Change-Id: Idaaff437932009952ed248be97eedf54cb4cf28e
2020-10-03alsa: Handle underruns when starting a new streamSolomon Peachy1-47/+69
Unsure why this is happening, but now we detect and recover errors at startup. Also clean up the mismash of printf(), DEBUGF(), etc in favor of panicf() for the really serious stuff and logf() for everything else. Change-Id: I9aaa620d55d556645c9a6d108541b987983b32a8
2020-10-02alsa: Use larger playback buffers for higher bitratesSolomon Peachy1-4/+16
(existing ones apply up to 48KHz, scale up linearly to 192KHz) Change-Id: Iac32d49b8073b63a5d40fd21f41437e6051cb8de
2020-10-01hosted pcm-alsa improvementsSolomon Peachy1-28/+64
* xduoo x3ii/x20: Better line out support * less granular volume settings (too many steps before) * Better handling of swiching sample rates * Log actual sample rate in debug menu Most credit goes to Roman Stolyarov Additional integration [re]work by myself Change-Id: I63af3740678cf2ed3170f61534e1029c81826bb6
2020-08-09Un-hardcode 44.1KHz settings from ALSA and iBasso PCM codeSolomon Peachy1-13/+11
Change-Id: I69a69dabc799f360b73b1cf252645bd4cde13715
2017-10-01sonynwza10/a20: enable pcm frequency selectionAmaury Pouly1-0/+4
Change-Id: I335fcdbb652253e777d0d7406545d0d44d98f4f0
2017-09-22Fix bug in pcm-alsa.cAmaury Pouly1-1/+1
I introduced the bug by mistake when adding support for 32-bit sample rate. Change-Id: I5ac53917c95327672284707b69c59bb98d1aecd7
2017-09-17fix red on ypr0/ypr1Amaury Pouly1-2/+0
Always compile in pcm_alsa_set_digital_volume, the linker will optimize it away on targets that don't use it. Change-Id: Ia21c3eaa8a64b75761ab5d056361e7ed1fcf949a
2017-09-05Initial commit for the Sony NWZ linux portAmaury Pouly1-17/+72
SUPPORTED SERIES: - NWZ-E450 - NWZ-E460 - NWZ-E470 - NWZ-E580 - NWZ-A10 NOTES: - bootloader makefile convert an extra font to be installed alongside the bootloader since sysfont is way too small - the toolsicon bitmap comes from the Oxygen iconset - touchscreen driver is untested TODO: - implement audio routing driver (pcm is handled by pcm-alsa) - fix playback: it crashes on illegal instruction in DEBUG builds - find out why the browser starts at / instead of /contents - implement radio support - implement return to OF for usb handling - calibrate battery curve (NB: of can report a battery level on a 0-5 scale but probabl don't want to use that ?) - implement simulator build (we need a nice image of the player) - figure out if we can detect jack removal POTENTIAL TODOS: - try to build a usb serial gadget and gdbserver Change-Id: Ic77d71e0651355d47cc4e423a40fb64a60c69a80
2012-03-04Tweak some PCM drivers for less typecasting with the data pointer.Michael Sevakis1-3/+3
Yeah, sizeof (void) here with GCC is 1. If something has a problem with that, we'll set it straight. Change-Id: I9ad3eee75dd440f6404a04a501d1533c8bc18ba9
2012-03-03Revise the PCM callback system after adding multichannel audio.Michael Sevakis1-3/+5
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>
2012-01-22ypr0: Work around warning introduced by buggy alsa headers.Thomas Martitz1-19/+28
Change-Id: I7c57ad5504db51d2f7563d2f26ff66f8d189b360
2012-01-21hosted/pcm/alsa: Use alternate signal stack for the async callback.Thomas Martitz1-0/+31
Signals are by default executed on the user stack, i.e. the stack of the currently active thread. This has two problems: 1) The stack size of the current stack is likely insufficient (unless using sigaltstack threads) because our stack sizes are normally below MINSIGSTKSIZE which is needed to deliver a signal. 2) Some of our asm code does nasty tricks with the stack pointer. When a signal comes in during this bad things can happen, e.g. random memory being overwritten or simply a crash. Using a well defined stack fixes this. This is comparable with the separate irq stack on native targets.
2011-12-24ypr0: Cleanup and simplify ascodec functions. Fix audiohw_{pre,post}init() ↵Thomas Martitz1-2/+5
not being called. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31423 a1c6a512-1295-4272-9138-f99709370657
2011-12-24Initial commit of the Samsung YP-R0 port.Thomas Martitz1-0/+518
This port is a hybrid native/RaaA port. It runs on a embedded linux system, but is the only application. It therefore can implement lots of stuff that native targets also implement, while leveraging the underlying linux kernel. The port is quite advanced. User interface, audio playback, plugins work mostly fine. Missing is e.g. power mangement and USB (see SamsungYPR0 wiki page). Included in utils/ypr0tools are scripts and programs required to generate a patched firmware. The patched firmware has the rootfs modified to load Rockbox. It includes a early/safe USB mode. This port needs a new toolchain, one that includes glibc headers and libraries. rockboxdev.sh can generate it, but e.g. codesourcey and distro packages may also work. Most of the initial effort is done by Lorenzo Miori and others (on ABI), including reverse engineering and patching of the original firmware, initial drivers, and more. Big thanks to you. Flyspray: FS#12348 Author: Lorenzo Miori, myself Merry christmas to ypr0 owners! :) git-svn-id: svn://svn.rockbox.org/rockbox/trunk@31415 a1c6a512-1295-4272-9138-f99709370657