Commit Graph

309 Commits (7bf4c4445dce8130548326267b68c2e31287eea8)

Author SHA1 Message Date
Christopher Snowhill 7d4841b1c6 Core Audio output: Don't upmix unless output device requests it by default 2022-01-11 18:18:38 -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 4dd46a1b5b Core Audio output: Fix output stopping properly 2022-01-11 07:52:44 -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 841481599e Audio Player: Minor change 2021-12-28 21:04:46 -08:00
Christopher Snowhill c1c21ec84f Hopefully fix glitching on seeking 2021-12-28 16:04:16 -08:00
Christopher Snowhill 486352ea72 Core Audio output: Enforce some minimum quality settings 2021-12-28 15:41:31 -08:00
Christopher Snowhill ba3746fcff Remove blank line 2021-12-28 15:40:53 -08:00
Christopher Snowhill 476dd913b2 Audio player: Attempt to fix queue issues. There are still remaining issues if a single short track queues repeatedly and the user changes tracks manually. 2021-12-28 15:40:26 -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 ad3058c4f3 Audio Queue: Better handle a lot of short files playing in a row, so files don't get skipped, and so the player doesn't get overburdened starting new files 2021-12-27 23:21:48 -08:00
Christopher Snowhill e2bca8f93b OpenMPT: Correctly OS version gate the OpenMPT plugins, and add an interface for any other plugin to use, should it ever become necessary 2021-12-27 17:46:09 -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 8e895c88c0 Core Audio output: Properly apply or remove default device change listener when switching preferences between the 'System Default Device' setting and manually setting the device to the current default 2021-12-26 21:33:28 -08:00
Christopher Snowhill 8435416cd7 Core Audio output: Default device setting now tracks system device changes, and output assigns a speaker mapping depending on the channel count 2021-12-26 21:27:26 -08:00
Christopher Snowhill 378aaf23ae Clean up several CFStringRef leaks 2021-12-26 18:08:53 -08:00
Christopher Snowhill d2e480ace5 Core Audio output: Properly support switching output devices 2021-12-26 17:16:16 -08:00
Christopher Snowhill 917b7457b6 Made resume playback on startup so that seeking operation is entirely atomic with starting playback, so the new seeking behavior doesn't have the potential to crash the player 2021-12-26 04:35:54 -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 8d7cd6cc93 Multi Input plugin: Correctly forward register and remove observer callbacks to the actual decoder in use 2021-12-26 02:01:53 -08:00
Christopher Snowhill dfeca7aa97 Seeking now takes the true nuclear approach to output, and should no longer have glitches 2021-12-26 02:01:02 -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 c6b112f512 CoreAudio output: Fix buffer underruns on output that could result in buffer looping in CoreAudio, by feeding silence from the callback instead of returning incomplete or possibly empty buffers 2021-12-25 19:43:10 -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
Christopher Snowhill 2445cc94a9 - Retrieve profile paths properly instead of hard coding
- Display playlist total duration in units up to weeks and down to just seconds, and only pluralize units as necessary
- Major change: Implemented a SQLite disk backed playlist, track data, and queue storage system, which will be synchronized from the player in real time, and will hopefully survive system or app crashes. Existing plist playlist will be imported on first run, and removed on shutdown.
2021-12-24 01:01:21 -08:00
Christopher Snowhill 4ff38268ae Plugins: Support multiple handlers per MIME type for streams 2021-12-22 16:22:49 -08:00
Christopher Snowhill 9566a36815 Error handler: Better handle errors and increase silence generator to 10 seconds at a time 2021-12-22 16:22:05 -08:00
Christopher Snowhill 44b813d2bf Audio queue: Better handle queues of lots of short files 2021-12-11 00:22:54 -08:00
Christopher Snowhill 00f1e0957c FLAC: Move libFLAC decoder to higher priority than any potential system decoder, support arbitrary sample bit depths 2021-12-11 00:22:19 -08:00
Christopher Snowhill ed8a5763ab Output: Add System Default Output option, rather than adjusting the listing to display the current system default only the first time 2021-12-05 22:49:56 -08:00
Christopher Snowhill ceb2e3f7dd Fix warning due to incorrect delegate function prototype 2021-09-25 13:17:00 -07:00
Christopher Snowhill cfeadad97f Reduce minimum OS to macOS 10.12 2021-09-18 01:08:49 -07:00
Christopher Snowhill da96d2c21e Core Audio Output: Add a check that should prevent it from attempting to output data through the callback during or after destruction 2021-09-17 19:09:34 -07:00
Christopher Snowhill 13bd399b31 Clean up most warnings and update some dependencies 2021-04-29 18:16:24 -07:00
Christopher Snowhill 483b8d6647 Don't load metadata for stream URLs 2021-02-28 18:48:21 -08:00
Dzmitry Neviadomski 9840d87127 Convert CogStatus enum to NS_ENUM 2021-02-07 00:22:19 +03:00
Dzmitry Neviadomski 70a22e9611 Fix some more warnings. 2021-01-27 05:12:07 +03:00
Dzmitry Neviadomski 64b9764b2e Inhibit ThirdParty libraries build errors.
This helps as to actually see warnings of our code.
2021-01-27 04:31:43 +03:00
Christopher Snowhill 97fee7e486 Add a bodge so playback status bar doesn't pop in and out repeatedly on manual track changes 2021-01-06 00:39:12 -08:00
Jan Weiß 63ed28919b Second attempt to fix build with other than maintainer’s TeamIDs. Worked for me with Xcode 12.3. 2021-01-05 17:25:12 +01:00
Christopher Snowhill dbc51d76f9 Revert PR #60 - Nope, that breaks hardened runtime and signing it myself 2020-12-22 02:11:50 -08:00
Jan Weiß c305a5f949 Fix build with other than maintainer’s TeamIDs.
This commit removes development team and code signing key/value pairs that slipped through when Xcode applied code signing changes.
2020-12-13 12:01:48 +01:00
Christopher Snowhill 91b1271ae2 Bump deployment target to 10.13 2020-11-24 15:26:26 -08:00
Dan Leehr 850fe390ca Fixes FLAC playback crash on Apple Silicon
- Avoid creating an NSDictionary with NULL context object (https://github.com/kode54/Cog/blob/master/Audio/Chain/InputNode.m#L81 passes NULL as context, so this must be handled in NSDictionary creation
- When calling addObserver, downgrade options from NSNumber * to NSKeyValueObservingOptions (aka NSUInteger)

Not sure why this would be specific to Apple Silicon...
2020-11-23 17:01:25 -05:00
Christopher Snowhill 0001bd581b Phase one of Big Sur 2020-06-30 01:04:55 -07:00
Christopher Snowhill 3b628c3989 Touched by Xcode 2020-06-07 19:57:15 -07:00
Christopher Snowhill 6c7b7f7213 Maximum volume increased to 800% 2020-04-06 23:30:07 -07:00
Christopher Snowhill b7487e2ad2 Clean up audio output code just a bit 2020-03-23 01:46:41 -07:00
Christopher Snowhill 117ab53343 Fix multi-plugin cascade to handle non-seeking readers, where disposing of some data while finding an input is okay 2020-03-08 20:04:10 -07:00
Christopher Snowhill 6d0166e69b Fix multi-plugin cascade when using non-seeking readers 2020-03-07 16:09:26 -08:00
Christopher Snowhill 7308aa5f7b Fall back on non-container file parsing, since VGMStream is too greedy with its extension list 2020-02-17 19:50:32 -08:00
Jan Weiß da775ce8a6 Clean up output device code. 2020-02-17 18:20:48 +01:00
Christopher Snowhill 765cb5e890 Usual Xcode update mess 2020-02-13 01:41:21 -08:00
Jan Weiß b22c5964e4 Improve output handling, 2.
Fix issues with above.
2020-02-01 14:44:07 +01:00
Jan Weiß 97ed738846 Improve output handling. 2020-02-01 14:00:41 +01:00
Christopher Snowhill fd7ab684c2 Updates for modern Xcode 2019-10-05 00:12:36 -07:00
Christopher Snowhill 050eef7225 Updated to latest Xcode 2019-07-02 16:37:17 -07:00
Christopher Snowhill 67495009ff Updates for new build system. 2018-06-28 04:03:37 -07:00
Christopher Snowhill bcf839efd1 Apply Xcode's suggested changes to project files. 2018-06-04 00:13:55 -07:00
Chris Moeller 9e8fd61d8c Update xcschemes. 2017-12-05 19:10:41 -08:00
Christopher Snowhill 913287665d Update project files to current recommendations. 2017-09-26 16:12:33 -07:00
Christopher Snowhill 039347f36f Made all scheme configurations shared, imported. 2017-09-17 18:40:02 -07:00
Christopher Snowhill 8ad0b7e8e3 Updated projects to Xcode recommendations. 2016-11-03 22:42:21 -07:00
Christopher Snowhill 7bb116a33b Added a fix so that a rapid succession of sub-10 second files do not get queued up until the player eventually crashes. 2016-09-17 20:59:58 -07:00
Christopher Snowhill a95280626f Fix Projects. Fix a major deadlock introduced by previous commit. Introduce new mGBA based GSF player. 2016-09-04 12:49:43 -07:00
Christopher Snowhill 899cfd6b42 Update project files. 2016-09-01 18:50:33 -07:00
Chris Moeller aaf320a96c Add autorelease pools to various info loading functions, so that adding massive amounts of tracks to the playlist will not run out of file handles. 2016-06-29 22:14:13 -07:00
Chris Moeller 17272ce43c Clean up lots of warnings and minor issues. 2016-06-29 22:10:29 -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 ce2303ef24 Update project files for new Xcode 2015-11-12 21:31:10 -08:00
Chris Moeller 52362e4341 Workaround bugs in the 10.11 SDK by using the 10.10 SDK instead 2015-08-05 17:03:12 -07:00
Chris Moeller 897c9b069e Work around compilation issue with Xcode 7 beta targeting systems older than El Capitan 2015-08-03 18:09:46 -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 a6b6369a6d Added class priority levels to metadata readers, properties readers, and containers, all so sidplay can be downvoted for mishandling id MUS format when trying to read its own MUS format 2015-04-13 00:39:24 -07:00
Chris Moeller 5677527ffd Changed code signing procedures, removed unnecessary Plugin.h copies from numerous PlugIn bundles, and re-signed Growl.framework with a valid signature 2015-03-18 21:45:32 -07:00
Chris Moeller b50ed67591 Fixed Repeat None correctly this time 2015-02-10 21:42:36 -08:00
Chris Moeller f55eb1d3bf Added a silence decoder, and fall back all decoder open failures on one second of silence 2015-02-08 18:15:02 -08:00
Chris Moeller 7d4df7e1f2 Fixed code signing issues 2014-08-01 03:46:25 -07:00
Chris Moeller 9d5a1fc32e Handled FLAC seeking to the end of file, and stopping on seek errors in general 2014-03-26 02:46:36 -07:00
Chris Moeller 7af4e94b03 Removed signature application from individual projects and added --deep option to the main app project 2013-10-22 18:41:57 -07:00
Chris Moeller ad9a949c26 Turned on code signing 2013-10-21 18:28:53 -07:00
Chris Moeller 9c660b593a Whoops, fixed observer handling 2013-10-21 11:24:48 -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 755147b48a Through a bit of ugliness and interface exposure, the InputNode will now pause the OutputNode while it is making the decoder seek, which prevents cases of the output continuing to run for seconds at a time during a slow seek operation by decoders such as HighlyComplete 2013-10-20 22:04:09 -07:00
Chris Moeller 5b13ee3f97 Fixed Ogg chained streams which I broke with the previous commit 2013-10-18 05:56:41 -07:00
Chris Moeller 8c80981827 Minor changes that may or may not have any impact on gaplessness 2013-10-18 05:33:38 -07:00
Chris Moeller b9ce8462c4 Corrected gaplessness with my new converter setup 2013-10-18 05:33:20 -07:00
Chris Moeller 39f4c60f19 Enabled DEBUG=1 macro in debug builds of several older projects 2013-10-17 23:39:26 -07:00
Chris Moeller 70e571fed9 Now handling a race condition where the buffer is emptied between where it is read and where it is told how much has been read from it 2013-10-13 05:59:19 -07:00
Chris Moeller a52c54a12c Initialize some pointers properly, and redesign to reallocate the converter buffer instead of freeing it every time 2013-10-13 05:14:57 -07:00
Chris Moeller b9a014ab16 Upgraded a couple of projects, raised the minimum OS version to 10.7, and removed libstdc++ setting from any projects that needed it 2013-10-12 19:18:46 -07:00
Chris Moeller 759aeab4fb Implemented pause on startup 2013-10-12 19:16:47 -07:00
Chris Moeller 26cf87a62e Oops, ChainQueue items should not be removed twice 2013-10-12 16:03:59 -07:00
Chris Moeller c088011fd5 mamburu: Some more fixes 2013-10-12 14:01:21 -07:00
Chris Moeller 1b818bcaa7 mamburu: Fixed InputNode's thread not being stopped at all 2013-10-12 13:59:34 -07:00
Chris Moeller 56848daad6 mamburu: Fixed crashes when seeking near the end of stream 2013-10-12 13:52:58 -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 c29583ec42 Fixed ConverterNode listener 2013-10-10 20:02:02 -07:00
Chris Moeller dda7bf994d Whoops, forgot to enable generating debugging symbols for the release targets in those projects 2013-10-10 04:52:15 -07:00
Chris Moeller 0ca7c2ee2f Enabled DWARF with dSYM for release target on all projects 2013-10-10 04:41:25 -07:00
Chris Moeller 5ade3931d3 Corrected bundle identifiers 2013-10-10 04:28:04 -07:00
Chris Moeller 3e057adf56 Replaced every instance of NSEnumerator with for/in loops 2013-10-10 01:44:45 -07:00
Chris Moeller bbb5549873 Added MPEG Audio support to FFMPEG plugin, which also supports proper seeking in VBR files; Fixed decoding of files which contain multiple streams 2013-10-08 23:57:58 -07:00
Chris Moeller 1123dc6b91 Whoops, forgot to remove the volume scaling option observer when cleaning up ConverterNode 2013-10-07 20:21:34 -07:00
Chris Moeller cdafef8a9c Fixed handling ReplayGain info on automatic track changes 2013-10-07 13:03:34 -07:00
Chris Moeller 2837b12d32 Fix unsigned reporting, and can't match unsigned type declaration exactly 2013-10-07 11:26:23 -07:00
Chris Moeller 15c545b10d Fixed input to float conversion and made it mandatory, so I could move volume scaling to the converter node 2013-10-07 03:59:04 -07:00
Chris Moeller 8aa01894ee Added downmixing of surround for stereo output devices 2013-10-07 00:24:26 -07:00
Chris Moeller 167524b6f2 Added basic output device channel mapping support 2013-10-07 00:24:00 -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 52c947db10 Changed all sub-component projects to skip install, since copy steps bundle them all into the target app 2013-10-04 13:11:32 -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
Chris Moeller 5a4a450dea Changed all projects to use latest SDK and build 32/64 bit Universal, and target for deployment on 10.6 2013-10-02 14:59:22 -07:00
Chris Moeller 4c0cf34250 More ReplayGain support, now with metadata handling, but only if the metadata is already loaded 2013-10-02 02:30:04 -07:00
Chris Moeller 6ea103b1c3 Implemented ReplayGain support, so far only in the HighlyComplete component. 2013-10-01 23:00:16 -07:00
Chris Moeller fa6b5d4290 Changed debug target to 32-bit so I can debug with the 10.6 SDK target 2013-09-29 17:25:22 -07:00
Chris Moeller 17682d4397 Updated DUMB 2013-09-27 20:24:23 -07:00
vspader 288c5cbee5 Misc leaks fixes. 2009-09-01 21:14:07 -07:00
vspader a531e31d42 Force stereo output. Ugly hack, but it's unlikely non-stereo was working properly anyways. 2009-06-28 11:57:48 -07:00
vspader 170c8cb2f3 Fixed bug where audio device was set after the format. 2009-06-28 10:51:30 -07:00
vspader bf7b2c0a2b Added timeout and chillout logic to the HTTP source so it doesn't freak out when there's no data available. 2009-03-06 21:58:50 -08:00
vspader 4bd8f6142c Moved growl/scrobbler notifications into PlaybackEventController. 2009-03-05 09:03:30 -08:00
vspader 87c0109773 Corrected logic for resetting streams. 2009-02-28 22:02:26 -08:00
vspader d7ddda160e Modified plugin logic so one class can be multiple plugin types. 2009-02-28 20:12:47 -08:00
vspader b5b5b45eda Fixed thread leak when next streams are reset. 2009-02-28 19:14:52 -08:00
vspader 1fcf3bb2ff Fixed up fading logic. 2009-02-28 13:19:26 -08:00
vspader 384911beb6 Playback continues as expected when you moved a song that was at the end of the playlist. 2009-02-28 11:11:22 -08:00
vspader 85630c836a Fixed bug when you changed the playlist without having a next song queued up. 2009-02-28 11:01:49 -08:00
vspader fda5d50712 If you change the playlist near the end of a song, it should now play the correct song. 2009-02-28 10:57:21 -08:00
vspader c9e542f570 Added better tooltip feedback. 2009-02-09 05:53:38 +00:00
lmsilva 6c4f9c7745 2008-12-15 10:34:45 +00:00
lmsilva dda74d0608 fixed seek slider from becoming active & disabling it when STOP occurs 2008-11-21 15:14:23 +00:00
vspader c78a553532 Bug fix for cue sheet changes. 2008-05-01 23:34:23 +00:00
vspader dd89208ee0 Removed singleton nonsense. 2008-03-03 02:18:27 +00:00
matthewleon a0cdf1a03e Fixed CogAudio bool bug. 2008-03-01 15:32:28 +00:00
matthewleon 6b35fee9e3 Cleaning CogAudio code. 2008-03-01 15:28:17 +00:00
matthewleon 666d803897 Code cleanup. 2008-03-01 15:04:46 +00:00
vspader 3ab720427e Made stop update synchronous since there were issues when moving on to the next song. 2008-02-22 03:46:04 +00:00
vspader c6dc1fd141 Fixed #70. 2008-02-22 03:09:03 +00:00
areff 567711e85e Fixed Trac bug 65: Doesn't show correct position after 203:50 mins - caused by an unsigned long overflow. 2008-02-18 11:37:33 +00:00
areff 1b83061c49 Moved volume controls into AudioPlayer, logarithmic helper functions now have their own file, fixed broken seekbar resize 2008-02-17 18:44:11 +00:00
areff 5228709d0f Fixed fadeout code so it sounds a bit better (timer fires faster, steady drop in volume rather than incremental) 2008-02-16 15:28:39 +00:00
vspader 03b0abb92f Fixed memory leak in previous commit caused by anal retentive retention. 2008-02-16 02:52:49 +00:00