summaryrefslogtreecommitdiff
path: root/apps/dsp.c
AgeCommit message (Collapse)Author
2007-02-07Fix resampling clicking as much as possible at the moment. 1) Upsampling ↵Michael Sevakis
clicked because of size inaccuracies returned by DSP. Fix by simplifying audio system to use per-channel sample count from codec to pcm buffer. 2) Downsampling affected by 1) and was often starting passed the end of the data when not enough was available to generate an output sample. Fix by clamping input range to last sample in buffer and using the last sample value in the buffer. A perfect fix will require a double buffering scheme on the resampler to sufficient data during small data transients on both ends at all times of the down ratio on input and the up ratio on output. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12218 a1c6a512-1295-4272-9138-f99709370657
2007-02-05Optimise EQ coef calculation routines for both speed and size. Move now ↵Thom Johansen
unneeded fsqrt function to plugin fixed point library in case it'll be needed. Move all fixed point helper macros to dsp.h. Added FRACMUL_SHL macro to facilitate high-precision shifting of 64 bit multiplies and remove rounding from macsr in main thread to make this work as intended. Tested quite thorougly, but as always, be careful with your ears. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12203 a1c6a512-1295-4272-9138-f99709370657
2006-12-12More static'ing, and a few fixes resulting from that.Jens Arnold
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11737 a1c6a512-1295-4272-9138-f99709370657
2006-11-29Fixed FS#6389 - Sound disappears after pitch change and jump to the start of ↵Michael Sevakis
the song. Forgot to reinit the resampler delta when adding DSP_FLUSH on my last change. Bah. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11621 a1c6a512-1295-4272-9138-f99709370657
2006-11-26SWCODEC: Stop clicks between tracks when resampler is active by only ↵Michael Sevakis
switching the DSP frequency and not resetting the resampler at track boundaries. Will make sure DSP is correctly flushed at dicontinuities but don't hear any problems currently. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11600 a1c6a512-1295-4272-9138-f99709370657
2006-11-25Fixed bug in dither_init that was causing the AIFF playback at sample rates ↵Michael Sevakis
other than 44.1kHz to not procede. It created a dependency of setting sample depth before frequency and aiff.codec does it the other way. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11595 a1c6a512-1295-4272-9138-f99709370657
2006-11-15Make the updated %rg tag match playback behaviour (fall back to track gain ↵Magnus Holmgren
if album gain requested but not available). Share the mode decision logic with playback code and simplify the %rg tag handling. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11532 a1c6a512-1295-4272-9138-f99709370657
2006-10-27Re-enable the currently unused and broken dithering and noise shaping code ↵Thom Johansen
already in Rockbox, and make it a user option instead of a codec-controlled option. The majority of people probably will not even hear any difference with this enabled, but feedback is welcome. Save your settings! git-svn-id: svn://svn.rockbox.org/rockbox/trunk@11368 a1c6a512-1295-4272-9138-f99709370657
2006-04-17Fix the use of equalizer pre-cut in combination with replaygain.Magnus Holmgren
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9711 a1c6a512-1295-4272-9138-f99709370657
2006-04-17Fix/add some comments and remove some old leftover crossfeed code.Thom Johansen
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9705 a1c6a512-1295-4272-9138-f99709370657
2006-04-11New crossfeed complete with no volume reducing bugs. Feedback on all theThom Johansen
new options is appreciated. Thanks to Dan Everton for the settings/GUI code. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9609 a1c6a512-1295-4272-9138-f99709370657
2006-04-02Prevent two division by zeros and one problem causing a crash in theMiika Pekkarinen
mp3 metadata parser. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9438 a1c6a512-1295-4272-9138-f99709370657
2006-03-28Update equalizer precut value as it's adjusted.Dan Everton
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9332 a1c6a512-1295-4272-9138-f99709370657
2006-03-27Add precut setting for the equalizer and add some more comments to the eq ↵Dan Everton
menu code. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9298 a1c6a512-1295-4272-9138-f99709370657
2006-03-26Fixed potential sample overflow in variable stereo width > 100% and karaoke ↵Jens Arnold
mode, both hwcodec and swcodec. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9263 a1c6a512-1295-4272-9138-f99709370657
2006-03-24Slightly clearer code in dsp_eq_update_data.Dan Everton
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9231 a1c6a512-1295-4272-9138-f99709370657
2006-03-23Keep assembler versions of DSP routines in dsp_arch.S files. This alsoThom Johansen
solves the annoying register allocator problem when not using -fomit-frame-pointer for the Coldfire assembler optimised crossfeed routine. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9215 a1c6a512-1295-4272-9138-f99709370657
2006-03-22Use size-correct casts. Fixes some AMD64 sim warnings.Thom Johansen
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9192 a1c6a512-1295-4272-9138-f99709370657
2006-03-21Enabled channel configuration and stereo width option on software codecThom Johansen
platforms. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9173 a1c6a512-1295-4272-9138-f99709370657
2006-03-19Samples should always be 32 bit on all platforms, so change mostThom Johansen
occurences of long to int32_t to enable working sounds also on 64 bit sims. Note that some codecs (MP3 and Wavpack) still have other 64 bit related problems. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@9120 a1c6a512-1295-4272-9138-f99709370657
2006-03-04Added a couple inline assembly functions for ARM targets. This just aboutDave Bryant
doubles the speed of crossfeed and makes a more modest improvement to the replaygain loop. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8904 a1c6a512-1295-4272-9138-f99709370657
2006-02-20Speed dsp gain up slightly mostly with better code orderBrandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8758 a1c6a512-1295-4272-9138-f99709370657
2006-02-17Reduce CPU usage while changing EQ by only updating the coefficients of the ↵Dan Everton
band being modified. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8718 a1c6a512-1295-4272-9138-f99709370657
2006-02-10Use EMAC rounding mode in EQ coef calc for better precision.Thom Johansen
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8655 a1c6a512-1295-4272-9138-f99709370657
2006-02-08Quick fix for crossfeed on iPod. Still needs optimization, but at least noDave Bryant
more unpleasant surprises! git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8618 a1c6a512-1295-4272-9138-f99709370657
2006-02-07Rework PCM bufferBrandon Low
* Linked list instead of static array buffer pointers * Variable sized chunks * Improved mix handling * Reduction in duplicated code * Reduced IRAM usage w/o sacrificing performance * Converted to almost entirely unsigned math * Add pause function to reduce pcm_* exposure to playback. This WILL break playback on the iPod until linuxstb makes a followup commit. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8612 a1c6a512-1295-4272-9138-f99709370657
2006-02-07Add Equalizer configuration to Sound Settings menu.Dan Everton
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8606 a1c6a512-1295-4272-9138-f99709370657
2006-02-04Committed a little too muchLinus Nielsen Feltzing
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8569 a1c6a512-1295-4272-9138-f99709370657
2006-02-04The simulator should use the keypad period key, not the regular oneLinus Nielsen Feltzing
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8568 a1c6a512-1295-4272-9138-f99709370657
2006-02-02No need for different name members in eq_data struct.Thom Johansen
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8534 a1c6a512-1295-4272-9138-f99709370657
2006-01-29Recommit reverted changes and add the missing file...Thom Johansen
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8484 a1c6a512-1295-4272-9138-f99709370657
2006-01-29Backout part of the last change to fix builds for nowBrandon Low
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8479 a1c6a512-1295-4272-9138-f99709370657
2006-01-29Initial multi-band EQ support for software codec platforms. Now go startThom Johansen
making that user interface! git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8478 a1c6a512-1295-4272-9138-f99709370657
2005-12-15This wont work after all. Someone please introduce -fomit-frame-pointer for ↵Thom Johansen
debug builds, we don't need the frame pointer anyway. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8243 a1c6a512-1295-4272-9138-f99709370657
2005-12-15Fix typo and disable crossfeed assembler version for DEBUG builds, which ↵Thom Johansen
obviously tend to need the frame pointer which i use. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8242 a1c6a512-1295-4272-9138-f99709370657
2005-11-30Playback speed commit broke mono resampling, this fixes it again.Thom Johansen
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8111 a1c6a512-1295-4272-9138-f99709370657
2005-11-28Enabled playback speed adjustment support for H1x0. Modified the resampler ↵Thom Johansen
to do both channels in one pass. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8099 a1c6a512-1295-4272-9138-f99709370657
2005-11-23Replaygain support uses the accumulator extension bytss, so disable ↵Thom Johansen
rounding. Fix some typos. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8051 a1c6a512-1295-4272-9138-f99709370657
2005-11-15Added Coldfire ASM optimised crossfeed function. Have not measured speed ↵Thom Johansen
improvement, but it is faster. Also moved activation check for crossfeed out of function to avoid a function call if it's not activated. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7891 a1c6a512-1295-4272-9138-f99709370657
2005-11-15fix crossfeed on non-coldfire platforms and the simulatorMarcoen Hirschberg
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7888 a1c6a512-1295-4272-9138-f99709370657
2005-11-14add crossfeed dsp effect. Makes some music more enjoyable with headphones.Marcoen Hirschberg
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7884 a1c6a512-1295-4272-9138-f99709370657
2005-11-02Automatically set clipping limits based on sample precision.Thom Johansen
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7719 a1c6a512-1295-4272-9138-f99709370657
2005-10-19Two new sections for IRAM usage: .irodata (selectable with the ICONST_ATTR ↵Jens Arnold
attribute macro), allowing to put 'const' data into IRAM without causing a section type conflict, and .ibss (selectable with the IBSS_ATTR attribute macro) for uninitialised data. * Rockbox core: Adjusted the linker scripts and init code to not include the .ibss section in the binary, it is cleared instead. Saves ~500 bytes on archos and ~30KB on iriver. Codecs and plugins don't handle .ibss in a special way yet. * The init code properly handles empty sections now (except .stack, which should never be empty). * Unified the init code for SH1 and coldfire a bit. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7644 a1c6a512-1295-4272-9138-f99709370657
2005-09-24Iriver: Added new ReplayGain type: track gain if shuffle mode is active, ↵Magnus Holmgren
album gain otherwise. Properly apply ReplayGain settings on config file load. Bumped config version, so save your settings. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7558 a1c6a512-1295-4272-9138-f99709370657
2005-09-07Adapted codecs and DSP system to having MACSR saved in thread context.Thom Johansen
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7485 a1c6a512-1295-4272-9138-f99709370657
2005-08-20Initial voice ui support for software codec platforms. Added also aMiika Pekkarinen
beep when changing tracks. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7360 a1c6a512-1295-4272-9138-f99709370657
2005-08-18iriver: slightly faster replaygain processing and clipping.Magnus Holmgren
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7353 a1c6a512-1295-4272-9138-f99709370657
2005-08-17iriver: Do correct ReplayGain calculation. Fixes distortion problems (and ↵Magnus Holmgren
lowers playback volume). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7343 a1c6a512-1295-4272-9138-f99709370657
2005-08-11Added pre-amp setting for files with ReplayGain information.Magnus Holmgren
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7303 a1c6a512-1295-4272-9138-f99709370657
2005-08-10patch #1255805 by Frederic Devernay - fix to buffer overflow in dsp.cLinus Nielsen Feltzing
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7301 a1c6a512-1295-4272-9138-f99709370657