Commit Graph

38 Commits (ddbc38c7fecd41c07468bcf6725469454867b30a)

Author SHA1 Message Date
Christopher Snowhill 3c351f6968 [Input API] Change input readAudio method
readAudio now returns an AudioChunk object directly, and all inputs have
been changed to accomodate this. Also, input and converter processing
have been altered to better work with this.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-07-10 15:14:47 -07:00
Christopher Snowhill 39f4d09c1a Use NSNumber Literals as much as possible
Replaced a bunch of [NSNumber numberWith...] with NSNumber Literals.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-06-17 06:39:02 -07:00
Christopher Snowhill 7cea254f4c Implement framework for dynamic metadata updates
Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-08 21:21:53 -08:00
Christopher Snowhill b927f4c02b Replace more NSDictionary use with literals
Use literals to initialize fixed NSDictionary objects in various places.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-08 19:56:04 -08:00
Christopher Snowhill 477feaab1d Now properly supports sample format changing
Sample format can now change dynamically at play time, and the player
will resample it as necessary, extrapolating edges between changes to
reduce the potential for gaps.

Currently supported formats for this:

- FLAC
- Ogg Vorbis
- Any format supported by FFmpeg, such as MP3 or AAC

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-07 19:18:45 -08:00
Christopher Snowhill b2177fccbc Core Audio input: Fix channel config, and a leak
Channel config should not contain duplicate channels, or unsupported
channels. Also fix a memory leak from not freeing the AudioChannelLayout
structure allocated previously.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-07 02:47:32 -08:00
Christopher Snowhill 22d8b8c132 Implement channel config fields for inputs
This implements channel masks for inputs where applicable, namely the
CoreAudio decoder, FFmpeg, FLAC, and WavPack. All others will still use
guessing from the channel number.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-02-07 02:06:51 -08:00
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 2e41e7c525 FFmpeg Input: Enable networking and HLS support...
... also disable use of AudioToolbox codecs, and use only bundled codecs
and libfdk-aac for AAC input. This is required for HLS at least, as
Apple's system codecs didn't really like the network streams that were
provided by HLS streaming stations.

Also reshuffle the input priorities between Core Audio input and FFmpeg
input, so that they were the way they were before I messed with things a
while back. This puts FFmpeg back at the top, using bundled codecs where
supported.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-01-27 00:11:14 -08:00
Christopher Snowhill 058614b6a0 Core Audio / FFmpeg inputs: Change to correctly discern most lossy/lossless codecs 2022-01-21 23:09:35 -08:00
Christopher Snowhill 0c4d5002f6 Metadata: Now supports storing cuesheet tags and encoding quality status properties 2022-01-21 22:38:54 -08:00
Christopher Snowhill 1540b84b09 Clean up association names 2022-01-18 03:20:07 -08:00
Christopher Snowhill 39a5ee8ab7 Utility: Add stubs to regenerate Info.plist with file type associations 2022-01-18 03:07:32 -08:00
Christopher Snowhill c8301a9868 CoreAudio input takes priority over FFmpeg on 10.14.x and older 2022-01-09 17:05:10 -08:00
Christopher Snowhill bb1f9dcb33 CoreAudio / FFmpeg: Swap decoder priorities so FFmpeg takes priority over Core Audio 2021-12-21 22:26:50 -08:00
Christopher Snowhill 0ec1ae4c47 Core Audio input: Added Codec info reporting 2021-10-01 20:22:26 -07:00
Christopher Snowhill 6395684001 CoreAudio input: Fixed new case where lossy inputs report file bit depth as unsupported field, causing some or possibly all lossy files to fail to decode 2021-08-25 01:57:59 -07:00
Christopher Snowhill 5b73336cb0 CoreAudio input: Optimized file size reporting to cache the file size on open, so file input isn't seeking as much 2021-08-25 01:57:05 -07:00
Christopher Snowhill 79d12e9fc7 CoreAudio: Don't try closing resources that aren't opened 2021-05-07 15:33:20 -07:00
Christopher Snowhill 04074f5d74 Fix Core Audio input to report and decode format native bits per sample, and report file bitrate 2021-02-22 20:48:23 -08:00
Christopher Snowhill b16d2114eb
Change Core Audio file handler priority
Now it should take priority for all supported formats, including MP3, so that reported broken file should play properly now. Not fixing FFmpeg outside of FFmpeg, someone can report the file to FFmpeg if they want to.
2021-02-09 18:43:39 -08:00
Christopher Snowhill 53bfe785bb Disable remote file support for CoreAudio decoder 2020-04-11 00:31:22 -07:00
Christopher Snowhill b37a6f0f0d Attempt to add rewinding to CoreAudio for streamed source files, but it doesn't work, it still fails to play anything from a stream 2020-03-09 00:23:58 -07:00
Christopher Snowhill 25a030a46c Implement custom reader support in CoreAudio decoder, now supports archives and possibly streams 2020-03-08 20:05:03 -07:00
Christopher Snowhill c1a45135b3 Remove unnecessary cleanup code that impeded cases where multiple decoders could handle a single file type. 2019-07-07 00:37:56 -07:00
Chris Moeller 03b825ced3 Hopefully fix the last of the Automatic Reference Counting issues that remained. 2016-06-19 12:57:18 -07:00
Chris Moeller 0e3644177e Updated everything else to ARC, and plugged a release cycle. 2016-05-05 13:05:39 -07:00
Chris Moeller 63fba5930e Implemented support for multiple decoders per file name extension, with a floating point priority control per interface. In the event that more than one input is registered to a given extension, and we match that extension, it will be passed off to an instance of the multi-decoder wrapper, which will try opening the file with all of the decoders in order of priority, until either one of them accepts it, or all of them have failed. This paves the way for adding a VGMSTREAM input, so I can give it a very low priority, since it has several formats that are verified by file name extension only. All current inputs have been given a priority of 1.0, except for CoreAudio, which was given a priority of 0.5, because it contains an MP3 and AC3 decoders that I'd rather not use if I don't have to. 2013-10-21 10:54:11 -07:00
Chris Moeller e5a648578b mamburu: Logging improved, no more excessive logging in release builds 2013-10-11 05:03:55 -07:00
Chris Moeller 74b6188772 Implemented floating point sample format support into CogAudio and all relevant plug-ins 2013-10-05 14:15:09 -07:00
Chris Moeller ec0e45381e Cleaned up most of the warnings, eliminated use of deprecated APIs, and fixed the hotkeys crashing. 2013-10-03 01:00:58 -07:00
vspader 5715522470 Moved to frame-based reading/seeking instead of byte/second based. Some formats have still not been updated and are broken.
Added icons for other formats.
2007-11-24 20:16:27 +00:00
vspader 5084b555cb Removed nonexistent framework search paths. 2007-10-14 19:18:20 +00:00
vspader d5919bc93e Further cleanup and memory leak fixes. 2007-10-13 07:51:42 +00:00
vspader 78a908274b Fixed bug where unseekable songs still allowed the user to move the slider and updated the time. 2007-05-27 15:11:30 +00:00
vspader 5798532fed Might as well close the source if you aren't going to use it. 2007-03-04 04:37:36 +00:00
vspader eb96a75a1f Modified CoreAudioDecoder to use new source based system. It just ignores the source and uses its own, since the ExtAudioFile API is absolutely hopeless when it comes to streaming. 2007-03-04 04:36:10 +00:00
vspader 927b65a4a5 Merged with cog-audio-framework branch. Cog now uses plugins. 2007-02-24 20:36:27 +00:00