Christopher Snowhill
85c7073649
Reformat my own source code with clang-format
...
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-06 21:49:27 -08:00
Christopher Snowhill
62edb39761
Cog Audio: Major rewrite of audio buffering
...
Rewrite attempt number two. Now using array lists of audio chunks, with
each chunk having its format and optionally losslessness stashed along
with it. This replaces the old virtual ring buffer method. As a result
of this, the HRIR toggle now works instantaneously.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-06 03:08:34 -08:00
Christopher Snowhill
0131f7c925
Revert "Core Audio output: Rewrote major portions"
...
This reverts commit 637ea4efe1
.
2022-02-05 04:14:03 -08:00
Christopher Snowhill
4cdca2f5f8
Converter: Fix DSD gaplessness
...
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-05 04:03:40 -08:00
Christopher Snowhill
637ea4efe1
Core Audio output: Rewrote major portions
...
After all this rewriting, down or upmixing the audio is now handled with
the lowest latency possible, meaning that toggling the HRIR option now
takes effect immediately.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-05 03:45:02 -08:00
Christopher Snowhill
39cc33cac4
Converter: Remove no longer necessary includes
...
These were only needed when I wasn't using Accelerate framework.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-04 19:53:17 -08:00
Christopher Snowhill
074e4115dd
sox resampler: Perform post file flush
...
Flush the resampler when the source file terminates, so that it outputs
delayed samples properly. This fixes gapless decoding of resampled
files.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-01 22:47:11 -08:00
Christopher Snowhill
d4990de7f3
Adopt the sox resampler instead of RetroArch
...
Removing RetroArch code from my project.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-01 18:55:39 -08:00
Christopher Snowhill
61a30c959c
Bundled resources: Use NSBundle interface
...
These methods should use NSBundle, rather than CF* C functions
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-01 14:40:02 -08:00
Christopher Snowhill
708c7dc721
Headphone Virtualization: Implement customization
...
Implement the ability to configure and select an HRIR preset to use with
the HRIR filter, or remove the preset. It will validate the file's
usefulness before setting it for the player to use.
Also, fixed back center channel filtering for 7.0 format audio.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-01-25 21:30:33 -08:00
Christopher Snowhill
e7b78085ca
New feature: Implemented headphone virtualization
...
This new virtualizer uses the Accelerate framework to process samples.
I've bundled a HeSuVi impulse for now, and will add an option to select
an impulse in the future. It will validate the selection before sending
it to the actual filter, which outright fails if it receives invalid
input. Impulses will be supported in any arbitrary format that Cog
supports, but let's not go too hog wild, it requires HeSuVi 14 channel
presets.
2022-01-25 16:50:42 -08:00
Christopher Snowhill
9d1fd08574
HDCD Decoder: Only process lossless tracks
2022-01-21 22:47:11 -08:00
Christopher Snowhill
6f0a737123
Cog Audio: Implement HDCD decoding
2022-01-19 02:08:57 -08:00
Christopher Snowhill
de193b70e2
Converter: Improve extrapolation for resampler, and also pad decimated DSD, even if not resampling it
2022-01-19 00:40:40 -08:00
Christopher Snowhill
c4c29be35a
Output converter: Limit extrapolation to only be trained on twice as many samples as the extrapolation order
2022-01-18 16:43:10 -08:00
Christopher Snowhill
71b2f7a4f2
Implement graphic equalizer
2022-01-16 07:32:47 -08:00
Christopher Snowhill
c640481c25
Add SIMD optimized volume scaling
2022-01-16 00:46:21 -08:00
Christopher Snowhill
72453ba05a
Cog Audio: Converter now rounds up sample counts affected by resamlping ratio
2022-01-15 23:41:31 -08:00
Christopher Snowhill
fbef034903
Cog Audio: Further overhaul output buffering and track queue code
2022-01-15 02:09:26 -08:00
Christopher Snowhill
6315377eaf
Cog Audio: Fix extrapolator to use signed type for sample delta
2022-01-14 11:37:52 -08:00
Christopher Snowhill
af6677cf34
Cog Audio: Keep track of last resampler quality used so we don't reinitialize when not necessary, and also keep track of DSD decimated sample rate separately, so the input format remains unmodified
2022-01-14 11:18:50 -08:00
Christopher Snowhill
3ce3edde88
Cog Audio: Fix track end extrapolator used by resampler
2022-01-14 07:39:55 -08:00
Christopher Snowhill
748891f285
Cog Audio / WavPack input: Add DSD decimation to converter, and change WavPack input to emit only raw DSD
2022-01-14 06:26:09 -08:00
Christopher Snowhill
903b457a28
Cog Audio: Make it possible to play obscene sample rate files without major failures
2022-01-14 02:00:32 -08:00
Christopher Snowhill
c8d2864862
Cog Audio: Enhance playback queue handler, so it always halts buffering when there are at least 30 seconds worth of buffers filled, possibly spanning multiple files. Also improve the chain reset function so that playlist changes and playback order control reset the queue properly when the queue refill function is currently entered in another thread.
2022-01-13 23:05:32 -08:00
Christopher Snowhill
7cc89c9f92
Cog Audio: Enhance track end extrapolator so it will always have a reasonable amount of buffered data for extrapolation
2022-01-13 23:03:53 -08:00
Christopher Snowhill
92d29e7acf
Cog Audio: Now preserves already resampled output when switching output formats
2022-01-13 19:43:18 -08:00
Christopher Snowhill
cc134ce293
Cog Audio: Converter node actually pauses when it is being reconfigured, and resets its buffer when the output format is changed
2022-01-12 23:13:00 -08:00
Christopher Snowhill
9feaffc92d
Cog Audio: Made RetroArch resampler safer
2022-01-12 18:45:43 -08:00
Christopher Snowhill
f1d70aaa54
Cog Audio: Add explanatory comment to source code
2022-01-12 03:36:27 -08:00
Christopher Snowhill
84d445cffe
Cog Audio: Fix converter so that seeking on startup playback position resume works properly
2022-01-12 03:01:55 -08:00
Christopher Snowhill
91c3feac2e
Cog Audio converter: Fix handling signed versus unsigned for 8 bit samples
2022-01-11 19:37:47 -08:00
Christopher Snowhill
f44e4e793b
Cog Audio converter: Fix end of track flush and extrapolation
2022-01-11 19:37:17 -08:00
Christopher Snowhill
ed882e25cb
Cog Audio: Resampler now extrapolates into latency padding for better gapless playback
2022-01-11 18:19:30 -08:00
Christopher Snowhill
ee05fe9e44
Core Audio output: Add sanity checking for supported formats, and support 64 bit float input data, in case anything actually uses that
2022-01-11 17:09:06 -08:00
Christopher Snowhill
72210c67e4
Replaced AudioQueue output with AUAudioUnit
2022-01-11 07:06:40 -08:00
Christopher Snowhill
c4c9a741ef
Replaced AudioToolbox converter process with homebrew solution, using the RetroArch sinc resampler
2022-01-11 04:09:19 -08:00
Christopher Snowhill
dfe92ffedc
Audio Player: Fix so ReplayGain isn't reset on seek
2021-12-28 21:05:25 -08:00
Christopher Snowhill
38c530043d
Output converter: Add more upmixing modes
2021-12-28 15:39:23 -08:00
Christopher Snowhill
b13235ec5f
Fix 6.1 stereo downmix mapping
2021-12-28 00:10:44 -08:00
Christopher Snowhill
258a56a276
Audio Output: Implement more upmixing modes, and correct some upmixing behavior
2021-12-28 00:09:57 -08:00
Christopher Snowhill
25a43a9083
Audio Output: Fix converter to always emit trailing samples on end of track
2021-12-27 17:04:16 -08:00
Christopher Snowhill
1cc34ea7d4
Audio Output: Made converter cleanup atomic, to wait on any threads that are still running
2021-12-26 04:34:33 -08:00
Christopher Snowhill
d22ee14a36
Audio Output: Take a more nuclear approach to output resetting when seeking
2021-12-25 23:41:45 -08:00
Christopher Snowhill
1278b64afd
Audio Output: Fixed converter so it won't loop endlessly when it either reaches the end of a stream or is otherwise supposed to terminate
2021-12-25 22:47:17 -08:00
Christopher Snowhill
5246731189
Core Audio: Overhauled audio output to use AudioQueue instead of AudioUnit, fixed downmixing to mono, and implemented upmixing mono or other formats to more channels if the device requests them
2021-12-25 22:32:43 -08:00
Christopher Snowhill
9c9d71cd9c
Overhaul CoreAudio output code: Downmix properly from 8 channels, redo converter process, and no longer crash when forced to output to a low quality device. Switchover to stereo from mono isn't perfect, however.
2021-12-25 15:02:13 -08:00
Chris Moeller
0e3644177e
Updated everything else to ARC, and plugged a release cycle.
2016-05-05 13:05:39 -07:00
Chris Moeller
06d0f1834c
Added slight sleep delay to retry cycle of input decoder chain
2015-08-02 00:18:22 -07:00
Chris Moeller
b9ce8462c4
Corrected gaplessness with my new converter setup
2013-10-18 05:33:20 -07:00