Commit Graph

730 Commits (8cb46b4f15c1ac4bc61c6a29438a26f5906b6975)

Author SHA1 Message Date
Christopher Snowhill ee7b7dad5f VGMStream: Add a bodge for PSF files
For some incredibly dumb reason, PSF files get into FFmpeg 5.0, then
just sit there and lock up, reading them forever and ever, doing nothing
useful. Add a bodge to detect PSF files by signature and ignore them in
the VGMStream container parser, and all other parts of VGMStream in Cog.

Signed-off-by: Christopher Snowhill <kode54@gmail.com>
2022-01-26 15:40:44 -08:00
Christopher Snowhill fee7fcdb21 FFmpeg: Handle preroll skip manually 2022-01-24 06:07:09 -08:00
Christopher Snowhill d771a58e69 FFmpeg: Update to version 5.0, and add another patch for iTunes MP3 gapless info 2022-01-24 04:41:27 -08:00
Christopher Snowhill 6b8d300384 Opus input: Support switching gain modes based on player settings, since the Opus tag reader doesn't support Opus gain tags yet 2022-01-22 21:03:52 -08:00
Christopher Snowhill 72f1168498 TagLib: Support reading Apple SoundCheck tags from ID3v2 and MP4 2022-01-22 20:20:24 -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 2165d37144 Metadata: Now supports disc number field where possible 2022-01-21 21:49:17 -08:00
Christopher Snowhill 698798a6f4 CUE Sheet input: Seek function now returns correct time offset 2022-01-19 22:09:29 -08:00
Christopher Snowhill 244f896318 CUE Sheet input: Fix for regular cue sheets, and for existing URLs for embed supported tracks 2022-01-19 22:06:36 -08:00
Christopher Snowhill 684951bdc0 Change a bunch of NSArray declarations to const collection literals 2022-01-18 18:12:57 -08:00
Christopher Snowhill ba0fedf151 Add stub function to Silence Decoder 2022-01-18 17:30:07 -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 6684a8280f AdPlug: Plugin now loads its AdPlug database on startup 2022-01-17 21:48:35 -08:00
Christopher Snowhill a1522aeb6e CueSheet parser: Support quirky FLAC generated CueSheets that contain sample counts instead of frames 2022-01-14 22:45:45 -08:00
Christopher Snowhill 33f3b4f5a0 CueSheet processor: Support timestamps with one or two fields, as well as the standard three fields 2022-01-14 19:05:48 -08:00
Christopher Snowhill dac1dfee47 CueSheet input: Implement support for ReplayGain tags 2022-01-14 18:51:44 -08:00
Christopher Snowhill 2d32381bc1 Cue Sheet: Fix decoder priority level 2022-01-14 17:45:10 -08:00
Christopher Snowhill d24a01a637 Implemented basic embedded CueSheet support 2022-01-14 16:46:35 -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 ec0b343596 WavPack input: Decode DSD without letting WavPack library decimate it. The supplied filter was rather noisy. 2022-01-14 02:11:46 -08:00
Christopher Snowhill ca4a2efea1 FFmpeg input: Disable peak limiting for libfdk-aac decoder 2022-01-13 16:14:04 -08:00
Christopher Snowhill bfa178f4e2 FFmpeg input: Add support for libfdk-aac, which will be used to support USAC and AAC on 10.14.x and older 2022-01-13 04:13:58 -08:00
Christopher Snowhill e3df82cf70 VGMStream input: Improve file interface, to handle duplicate file requests in the same thread, and to handle archive paths 2022-01-12 16:45:50 -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 a1a85c502e FFmpeg input: Check for seeking errors and stop decoding when they happen 2022-01-09 03:37:45 -08:00
Christopher Snowhill b35d405e20 libvgm input: Correctly declare logging formatting strings 2022-01-07 19:07:46 -08:00
Christopher Snowhill 614517f813 FFmpeg input: Disable AudioToolbox codecs on macOS 10.14.x and older 2022-01-07 19:07:07 -08:00
Christopher Snowhill 7ee76f914a OpenMPT legacy: Correct header import paths so that the correct version of OpenMPT framework headers are used 2022-01-06 23:53:39 -08:00
Christopher Snowhill 1eb2270049 VGMStream: Rewrite file interface based on the VGMStream stdio interface, only using CogSource files 2022-01-06 22:12:34 -08:00
Christopher Snowhill 0e8f417e67 libvgm Player: Correctly report version number in codec field 2022-01-05 02:37:39 -08:00
Christopher Snowhill 888ee2fb38 Implemented new libvgm-based VGM, S98, DRO, and GYM player 2022-01-03 01:55:48 -08:00
Christopher Snowhill 8ad7e086a8 Update copyright year 2022-01-02 23:34:29 -08:00
Christopher Snowhill df9743c821 Consolidated Vorbis framework usage 2021-12-31 01:35:08 -08:00
Christopher Snowhill 98ead66851 Consolidate File_Extractor framework usage 2021-12-31 01:16:44 -08:00
Christopher Snowhill 2e76c56ba7 Switch FFmpeg libraries to dynamic builds, consolidate to a single copy in the main application framework folder 2021-12-31 01:07:05 -08:00
Christopher Snowhill 112a20132b OpenMPT: Add format info as codec string 2021-12-30 00:07:32 -08:00
Christopher Snowhill e4cbdb07f8 FFmpeg Decoder: Remove spurious debug logging 2021-12-29 22:56:53 -08:00
Christopher Snowhill fa20465271 FFmpeg Decoder: Fix seeking in files with preroll that happens to make the decoder return EAGAIN error, so they don't inadvertently skip actual audio data unnecessarily. Fixes seeking to the start of USAC files with preroll packets. 2021-12-29 22:55:31 -08:00
Christopher Snowhill cd8b728ca6 Removed plugin 2021-12-29 15:24:23 -08:00
Christopher Snowhill 27dbd609c9 OpenMPT: Change decode call slightly 2021-12-28 15:38:57 -08:00
Christopher Snowhill 73a356ad1d Ogg Vorbis/Opus: Use correct channel output order for surround files 2021-12-28 00:54:28 -08:00
Christopher Snowhill 120daf291a OpenMPT legacy: No longer need to reduce its priority level, since it's OS version gated to not load on OSes that support the newer plugin 2021-12-27 17:47:57 -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 106eb587b4 Updated libopenmpt to version 0.6.0, with major new changes. This new version requires macOS 10.15 to work, due to libc++ features required. A compatibility plugin has been duplicated from the existing plugin, which will now load libopenmpt 0.5.14, or whatever newer version may come out that still supports as old as macOS 10.12. 2021-12-26 03:29:43 -08:00
Christopher Snowhill fd75e1b260 HTTP source: Fix API abuse by calling completion handler as requested 2021-12-22 16:27:41 -08:00
Christopher Snowhill e207cdc022 Opus/FFmpeg: Add more streaming types to handle, now supports working Ogg Vorbis, Opus, and FLAC streaming 2021-12-22 16:23:54 -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 c2585f5567 FFMPEG input: Add more formats, reduce buffering so streams start faster, and fix seeking calculation so streams seek properly 2021-12-22 00:17:59 -08:00
Christopher Snowhill c47bd96d65 FFMPEG / vgmstream: Update dependencies for newer Matroska support 2021-12-22 00:15:19 -08:00
Christopher Snowhill 45ee8b01df HTTP reader: Keep track of task suspend/resume so we don't stall trying to resume an already running stream 2021-12-22 00:14:19 -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 caf4855b4e Syntrax/Jaytrax: Replace existing reverse engineered implementation with a different one that handles more songs correctly 2021-12-15 16:47:36 -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 5772662984 Cuesheet: Read and merge metadata from referenced audio files, no matter their format 2021-11-21 00:16:16 -08:00
Christopher Snowhill bce21b44d4 MIDI: Overhaul player completely, now Audio Unit support works properly, and the Sound Canvas VA hack is no longer needed. Now System Exclusive messages may be filtered for all plugins. 2021-11-02 19:52:12 -07:00
Christopher Snowhill ee6faec757 VGMStream: oops, coding error 2021-10-02 18:49:00 -07:00
Christopher Snowhill 6c8c807781 VGMStream: Clear sample buffer, just in case 2021-10-02 18:47:04 -07:00
Christopher Snowhill cbf20dab08 VGMStream: Correctly implement mixing support and output channel reporting for downmixes 2021-10-02 18:38:23 -07:00
Christopher Snowhill 0ec1ae4c47 Core Audio input: Added Codec info reporting 2021-10-01 20:22:26 -07:00
Christopher Snowhill cb70b066d7 Updated VGMStream to r1640-85-gfe316bb2 2021-10-01 20:21:50 -07:00
Christopher Snowhill fdae7eec21 File info: Implemented support for Album Artist and Codec fields 2021-10-01 19:18:42 -07:00
Christopher Snowhill cfeadad97f Reduce minimum OS to macOS 10.12 2021-09-18 01:08:49 -07:00
Christopher Snowhill 42a6738e8f Updated VGMStream to r1640-11-gdfa3779a 2021-09-06 09:28: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 3f6cb1bc1c VGMStream: Fix .txtp with option fragments in the filename 2021-08-11 17:33:02 -07:00
Christopher Snowhill 0891a20bba MIDI: Detect presence and compatibility of Sound Canvas VA before attempting to import it later. It currently does not work with arm64, only x86_64 native or Rosetta 2. 2021-08-10 17:35:15 -07:00
Christopher Snowhill 59a5a7687e MIDI: Fix Sound Canvas VA duplication function to support the 32 signed instances current versions ship 2021-08-10 17:35:14 -07:00
Christopher Snowhill 510c762921 TagLib plugin: Implement FLAC embedded art reading 2021-07-03 15:31:26 -07:00
Christopher Snowhill 75a4f1e722 VGMStream: Fix one shot files actually decoding to completion instead of getting stuck forever 2021-06-15 01:34:01 -07:00
Christopher Snowhill 668475c43a VGMStream: Correctly report ReplayGain tags from external M3U tags 2021-05-30 14:47:21 -07:00
Christopher Snowhill 8aa47584f1 FFmpeg: Fix seeking so it's sample exact, using packet timestamps. Fixes noticeable issues when using CUE sheets with APE, for instance. 2021-05-30 14:22:20 -07:00
Christopher Snowhill 466c1beb00 Added safety checks to VGMStream file interface, which should hopefully prevent a known crash deep in the library due to possibly trying to retrieve the file name from an invalid file handle 2021-05-17 22:43:27 -07:00
Christopher Snowhill 95a63327fa MIDI: Trimmed down FluidSynth libraries significantly, and should be compatible with 10.13 once again 2021-05-09 17:46:36 -07:00
Christopher Snowhill b2a6a67170 MIDI: FluidSynth is now configured to load samples dynamically instead of caching entire banks at once 2021-05-08 19:41:35 -07:00
Christopher Snowhill 17fd41fbbc Updated FluidSynth again, restoring SF3 support 2021-05-08 00:47:03 -07:00
Christopher Snowhill 5d29b741a0 Updated FluidSynth 2021-05-07 21:08:48 -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 37aa36f9f4 MIDI: Fix FluidSynth device-id setting, which requires unique settings objects 2021-05-06 19:02:25 -07:00
Christopher Snowhill 81aca83940 MIDI: Update FluidSynth to HEAD-9b671b2, with personal changes to implement reset messages to switch drum control and bank select mode 2021-05-06 19:01:50 -07:00
Christopher Snowhill f9d3a5f9eb MIDI: Fix FluidSynth SysEx code 2021-05-06 14:59:27 -07:00
Christopher Snowhill 1a95c234b2 Update FluidSynth code, changing default gain, and letting it handle SysEx messages on its own 2021-05-06 13:35:24 -07:00
Dzmitry Neviadomski 66efdfcf1e Roll libsidplayfp 2021-05-04 22:30:10 +03:00
Christopher Snowhill e8e2fc3164 MIDI: Add SF3 extension to FluidSynth loader 2021-05-03 19:18:55 -07:00
Christopher Snowhill 4cf76dd7e3 MIDI: Replaced BASSMIDI with FluidSynth 2021-05-03 19:18:55 -07:00
Dzmitry Neviadomski 1e6d0e16f0 Remove remaining signing ids. 2021-05-02 23:18:11 +03:00
Christopher Snowhill 1e97d02384 Cleaned up project files, also removed accidental and remaining team identifiers 2021-05-01 15:43:56 -07:00
Christopher Snowhill 13bd399b31 Clean up most warnings and update some dependencies 2021-04-29 18:16:24 -07:00
Christopher Snowhill 4d7a4ec29d MIDI: No longer call BASS_Free on shutdown, may have been possible to cause a hang on shutdown 2021-04-27 00:19:26 -07:00
Christopher Snowhill 7acfdf774d VGMStream: Fix length reporting and track termination when not looping forever 2021-04-22 23:53:59 -07:00
Christopher Snowhill 4ea289ba27 MIDI: Reject files with no event data 2021-04-11 17:23:55 -07:00
Christopher Snowhill 2c20205f8f Fix VGMStream info parser to remove anchors and URL percent encodings from filenames 2021-04-06 16:51:08 -07:00
Christopher Snowhill b32f9d4ac3 libsidplayfp: Fix stereo playback, and implement support for multi-file songs, and fix stereo blending so it applies to the entire output 2021-04-05 14:07:20 -07:00
Christopher Snowhill bdd02c76d3 PSF/PSF2: Set harsh compatibility mode, so emulator behaves more like actual hardware, which fixes a few PSF and PSF2 rips 2021-03-28 12:49:34 -07:00
Christopher Snowhill ba7aaec69c M3U and PLS playlist handlers now correctly handle macOS Classic line endings 2021-03-09 23:49:13 -08:00
Dzmitry Neviadomski 3a387c3a3f Update Copyright year to 2021 with regex. 2021-03-03 23:05:57 +03:00
Christopher Snowhill 483b8d6647 Don't load metadata for stream URLs 2021-02-28 18:48:21 -08:00
Dzmitry Neviadomski e4199694a8 Update FFMPEG plugin project settings. 2021-02-26 15:31:35 +03:00
Dzmitry Neviadomski 0aff2c9567 Add sidplayfp Xcode subproject as dep. 2021-02-25 18:37:39 +03:00
Dzmitry Neviadomski 72702ed1e1 Add libsidplayfp submodule and supporting files. 2021-02-25 18:36:04 +03: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
Dzmitry Neviadomski a6aaeafdca Re-apply patch for replay gain support 2021-02-07 06:50:28 +03:00
Dzmitry Neviadomski 15cbc97040 Adapt to new version of TagLib and read Vorbis Album art. 2021-02-07 04:48:49 +03:00
Dzmitry Neviadomski 1d84b7b682 Fix loading of cover art from same directory. 2021-02-07 03:54:31 +03:00
Christopher Snowhill dce400435e Fix #89 by encoding paths correctly I hope 2021-01-30 19:37:10 -08:00
Dzmitry Neviadomski 832fa6dbd0 Even more deprecations fixes. 2021-01-27 05:45:02 +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
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 58b6ea5881 Added HMQ extension for HMP format 2020-12-08 19:16:03 -08:00
Christopher Snowhill 91b1271ae2 Bump deployment target to 10.13 2020-11-24 15:26:26 -08:00
Christopher Snowhill 6646e01d8a Switched FFmpeg back to static libraries, now that I know I can make Universal static libraries 2020-11-23 23:50:50 -08:00
Dan Leehr 1d4a777018 Restore libFLAC plugin on macOS 10.13 and newer 2020-11-23 17:01:25 -05:00
Christopher Snowhill dedeb399a8 - Big Sur phase two
- Restructure main window a bit more
- Remove attempt at SF Symbols icons for now
- Add Now Playing popout to Stacks style main window, tooltip instructs to click to select the current track in playlist
- Disable libFLAC plugin on macOS 10.13 and newer, letting Core Audio handle it instead. Apparently, libFLAC is not really ready for Apple Silicon yet.
2020-11-22 18:16:34 -08:00
Christopher Snowhill 85907a48d9 Add .ogg extension to Opus plugin 2020-11-19 01:37:50 -08:00
Christopher Snowhill 4eb7a3eebf Update VGMStream plugin with new API changes a bit, and now force auto downmixing to 6ch 2020-09-21 22:33:18 -07:00
Christopher Snowhill dab78ed74f Updated libopenmpt to version 0.5.2 2020-09-21 21:54:24 -07: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 f5c7c4d49a Update midi_processing to latest version, fixing some severe MIDI file handling issues, including Standard MIDI file SysEx and SysEx continuation handling 2020-04-14 02:10:52 -07:00
Christopher Snowhill 53bfe785bb Disable remote file support for CoreAudio decoder 2020-04-11 00:31:22 -07:00
Christopher Snowhill 4aca4a9c77 - Increase HTTP buffer size to 256KB
- Support a different older flavor of ShoutCAST server
2020-04-11 00:30:27 -07:00
Christopher Snowhill b7596caa44 Fixed WavPack tag reading, by actually enabling it 2020-03-22 00:16:13 -07:00
Christopher Snowhill 9ca13ad471 Updated WavPack decoder to 5.2.0 2020-03-22 00:15:45 -07:00
Christopher Snowhill a43ae5fc81 - Redo HTTP buffering mechanism
- Handle HTTP errors better
- Fix handling ShoutCAST servers responding ICY headers
2020-03-10 01:56:59 -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 18acc7fdd2 Handle HTTP redirection, including preventing circular redirects 2020-03-08 20:13:46 -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 443aa05f88 Replace HTTPSource with a new reader based on NSURLSession, which actually does support HTTPS. This portion of the player now requires macOS 10.9. 2020-03-07 16:08:47 -08:00
Christopher Snowhill 8bc6396918 Fix local signing issues 2020-02-13 17:45:11 -08:00
Christopher Snowhill c2278b49be Remove unused variable from SID decoder 2020-02-13 14:42:57 -08:00
Christopher Snowhill 765cb5e890 Usual Xcode update mess 2020-02-13 01:41:21 -08:00
Christopher Snowhill 0e4694ba67 Updated libsidplayfp to version 2.0.1 2020-02-13 01:29:08 -08:00
Christopher Snowhill 37b75bf6e7 Fix resource leak with VGMStream container parser, and serialize metadata caching from there as well 2019-12-19 17:12:09 -08:00
Christopher Snowhill 8e9f8237e3 Fix potential error with SID decoder 2019-12-05 18:13:52 -08:00
Christopher Snowhill 86681e9726 Implemented support for VGMStream external !tags.m3u metadata playlists 2019-11-23 20:36:57 -08:00
Christopher Snowhill 5422338d58 Now supports reading playlists from remote paths 2019-11-17 14:44:47 -08:00
Christopher Snowhill fa6c02d3e8 Handle relative redirects without crashing, and fix URLs that require trailing slash on path 2019-11-16 15:25:01 -08:00
Christopher Snowhill 258a88464a Fix VGM metadata and properties reading 2019-11-08 15:05:21 -08:00
Christopher Snowhill cb8fb9ce87 Fix VGM parsing so it doesn't hit the other two registered VGM container handlers 2019-11-08 15:04:43 -08:00
Christopher Snowhill 5c85c2a1b9 Fix handling invalid archive paths 2019-11-08 15:03:45 -08:00
Jan Weiß 105b0f26bb Improve file encoding detection. 2019-10-22 18:19:15 +02:00
Jan Weiß f94226bcf2 Fix file encoding. 2019-10-22 18:19:15 +02:00
Christopher Snowhill 389a701553 Implemented new VGMStream properties and metadata caching, which keeps file smashing under control, which stops Hardened Runtime from crashing on us 2019-10-18 20:21:27 -07:00
Christopher Snowhill a1ec4dba40 Updated FFmpeg 2019-10-15 19:15:52 -07:00