Now using Accelerate methods to calculate and multiply ramps per channel
and add the remainder if necessary.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
If the current track has played for more than 5 seconds, previous track
now restarts the current track, instead of jumping back to the previous
track.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
This code did not check the number of samples in a packet before adding
it to the output buffer, which apparently had the potential to cause the
output code to emit up to 512 samples of silence between tracks. This,
as one can guess, is a bad thing, and causes noticeable gapping between
tracks.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Output logging, a debugging feature that is only enabled at build time
if I need to chase down some audio mixing or output bug, was not logging
anything at all. Change to use Cocoa file writing methods, and actually
implement the output writer function again.
This code is left disabled 99% of the time anyway, and especially in
release builds. Like the node logging code elsewhere, it has the
potential to be very noisy and consume massive amounts of disk space.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
This should be included, for safety purposes, in case the rounding up to
the nearest multiple of 256 samples doesn't bump the buffer size enough.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
The streaming support was breaking because initial packet detection was
failing due to bit reservoir errors. Instead, detect consecutive sync
frames in the initial read buffer, then attempt to sync to a decodable
frame in the first block of data, otherwise give up.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Add missing HLS MIME type: audio/mpegurl
Update FFmpeg to version 7.1.1, carrying the same patches, and one new
patch: Implementing support for HLS ID3 tags changing mid-stream.
We cannot do away with fdk-aac yet, because the USAC codec is missing
features that fdk-aac implements already.
Fixes#428
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Move minimp3 packet decoder state into the decoder_ex state structure,
instead of using the redundant duplicate structure. Also reduce input
buffer size for streams to 16KiB, and actually use the defined macro in
the header file to declare the streaming buffer size.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Seeking should clear the sample buffer if it contains anything, and non-
seekable files should return an error on an attempt to seek.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
There were several issues which broke debug and possibly release
signing, and broke VGMStream in debug situations. Not sure if it was
also broken in release.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
The double members should be ordered first so they are aligned to an 8
byte boundary. The rest are fine as-is.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
libMAD had memory safety issues, possibly with corrupt files. Hopefully,
this will fix the problem.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
These two visualization components, SceneKit and Core Graphics based,
only use the FFT data. So now make the request drop the PCM data.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
The Visualization Manager PCM/FFT copy function was already observing
these parameters for null input and only returning output to the ones
which were not null. This just makes it clear that they are both
optional parameters. This is useful for future visualization adventures,
allowing PCM copy without invoking the FFT processing, or requesting FFT
without also having to keep the PCM.
This is mostly only a compile time change, and has no noticeable effect
on the current runtime behavior, as the only consumers of the Visualizer
data currently request both PCM and FFT.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
This affects User Defaults, but only has any effect on ChunkLists which
are being used for conversion, and only if they're processing DSD source
material. Thus, the observer should only be added on the one stream that
is converting DSD, and should definitely be removed when the object is
deallocated.
This fixes a serious crash bug that mostly appears to only affect Intel
Macs, and has no major side effects on Apple Silicon that I can tell.
It's a good thing I still own an Intel Mac or two to test on, even if
they are both trapped on older releases of macOS.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Apparently I somehow didn't notice this situation because I still had
Rubber Band enabled, and existing users kept it enabled ever since I
introduced it.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Move this commonly used string decoding helper to the CogAudio framework
and import it in every plugin that uses it.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Apparently, stringWithUTF8String: just returns nil when the encoding is
not UTF-8, rather than throwing an exception.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Xcode really wants to add focusRingType="none" to everything now upon
opening with the editor, for some reason.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Now it handles multiple attached pictures and tries to pick out the one
which may be the front cover picture, or otherwise picks the first one.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Operation blocks cannot expect their out of scope variables to be
present when the block executes, so design the block operation to pull
inputs from a queue array one at a time, like the rest of the blocks do.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Clearly, NSUserDefaults bindings were not really meant to be used in
practice at all, as they do nothing but crash the app.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
Change hotkey storage system, hopefully this will fix the stability
issues that have been plaguing it for a while now.
Signed-off-by: Christopher Snowhill <kode54@gmail.com>