advertisement
dBpoweramp CD Ripper
CD ripping taken seriously
Secure Ripping from the inventors of AccurateRip, fast & bit-perfect CD ripping
foobar2000 SDK change log
2024-08-07
-
Windows: Reverted x86 compiler to VS2019, as VS2022 emits AVX opcodes when configured not to.
-
Mac: Lowest supported system is now Mac OS 11 / Big Sur.
-
PFC: filetimetools fixed loss of millisecond part of the value on non-Windows.
-
PFC: pathUtils respect NAME_MAX on non-Windows.
-
PFC: Addressed various MS code analysis complaints.
-
PFC: Added uni_char_* methods specialized for different character types, for easier templating of code for different text encodings.
-
PFC: Added sort string operations (previously part of foobar2000 SDK project), abstract interface to platform specific string sort routines.
-
PFC: Added event_std, subset-functionality drop-in replacement for pfc::event using std::condition_variable; considerably more efficient on non-Windows platforms.
-
libPPUI: CEditWithButtons WM_NEXTDLGCTL behavior bug fix.
-
libPPUI: Dark mode horrible listview shim LVM_SETITEM crash bug fixed.
-
libPPUI: Dark mode listview shim send LVN_KEYDOWN notifications.
-
libPPUI: Block dark mode use on Wine, too much reliance of MS quirks, can't possibly work.
-
libPPUI: CListControl amended drag&drop begin criteria.
-
libPPUI: PaintUtils trackbar rendering helper removed pointless gdiplus use causing heavy CPU usage rendering seekbars.
-
libPPUI: CTreeMultiSel hide focus item when using mouse navigation.
-
Helpers: create_directory_helper mitigation for Google Drive filesystem bug.
-
Helpers: Added DISCNUMBER & TOTALDISCS cuesheet fields.
-
Helpers: CWavWriter added RF64 writing capability.
-
Helpers: input_helper exclude apparent internet playlist files from being used with read-ahead.
-
Helpers: file_decodedaudio support float32/float64, not only native audio_sample.
-
Helpers: CRethrow use std::exception_ptr instead of lambda, it's 2024 and C++11 can be relied on.
-
SDK: fb2k::callLater() bug fix + made #ifdef'd out when targetting old foobar2000.
-
SDK: Separate titleformat_object.h with just titleformat_object class declaration, more commonly used than other titleformat.h declarations.
-
SDK: Abortable fb2k::inMainThread().
-
SDK: Updated tag_processor spec, suppress exception throws on non-failures.
-
SDK: Made help.foobar2000.org links use HTTPS.
-
SDK: New playlistColumnProvider flags.
-
SDK: playlist_loader stack overflow mitigation.
-
SDK: Output API extensions for less copying of audio data (output_v6, process_samples_v2).
-
SDK: output_v4::is_progressing() is MANDATORY. Ugly things happen if you don't implement it.
-
SDK: New input_flag_* values, work in progress.
-
SDK: info_lookup_handler_v3 with prettier interface to multiple info providers returned via one API.
-
SDK: fb2k::configStore2, allow accessing configuration variables bypassing cache, to prevent memory usage creep if using lots of uniquely named variables.
-
SDK: Fixed erratic audio_chunk::g_guess_channel_config() behavior for exotic channel counts.
-
SDK: Various documentation updates.
-
SDK: Added fb2k::filename() & fb2k::filename_ext() family of functions, which retrieve filename portion of path/URL using proper context-sensive methods.
-
SDK: dsp_chunk_list_impl reimplemented using std containers instead of pfc.
-
SDK: dsp_chain_config new helper methods added.
-
SDK: audio_chunk new methods to avoid malloc trashing.
-
SDK: Added file_info::is_encoding_lossless().
-
SDK: Cache filesystem objects - new much faster filesystem::get() avoids walking all of them, resulting in much better peformance of specific methods hammering filesystem methods per track.
-
SDK: Added album_art_ids::by_name().
-
SDK: New advconfig flags, unfortunately not yet utilized.
2023-09-23
-
PFC: Allow debugging to resume after PFC_ASSERT failure
-
PFC: New helper methods: stringEqualsI_ascii_ex(), is_identity()
-
PFC: Additional string constructors to control pre-allocation behavior.
-
Mac: Added uGetCurrentDirectory() + uSetCurrentDirectory() wrappers
-
Mac: Complex mitigation for Objective-C class name slashing. Use foobar2000-mac-class-suffix.h to suffix common helper classes with a suffix specific to your component, such as the name of your component.
-
SDK: Added replaygain_info::for_each() method, which presents the struct contents as key-value text pairs.
-
SDK: Workarounds for some mundane filesystem methods using significant % of CPU time during search ops.
-
SDK: Removed questionably useful TRACK_CALL scopes in frequently called methods.
2023-09-13
-
Added spec for user_interface API on Mac OS.
-
Fixed contextmenu_item_lambda sort priority bug.
-
Fixed wrong SDK version #define & targetting fb2k 2.0+ by default in previous SDK.
2023-09-06
-
Support for making Mac foobar2000 components.
-
Most of foo_sample ported to Mac OS.
-
Included shared.dll source - some of it is required for Mac components to work.
-
SDK: Various documentation errors/typos fixed.
-
SDK: tag_processor::read_id3v2_trailing() disregard empty ID3v2 properly.
-
SDK: output_impl end-of-stream bugs fixed.
-
libPPUI: Dark Mode code update, fixed multi line checkbox rendering.
-
libPPUI: CDialogResizeHelper doc update.
-
libPPUI: CEditWithButtons recalculate layout on font change.
-
libPPUI: CListControl apply dark mode to tooltips.
-
libPPUI: Added HyperLinkCtrl.h, with one-line methods for creating WTL CHyperLink from a static text control.
-
PFC: Added filetimetools (moved functionality from foobar2000 SDK helpers).
-
PFC: Added sysNaturalSortCompare(), a wrapper to system-provided natural sort method.
2023-05-10
-
libPPUI: Edit box shims updated, added ctrl+delete handler.
-
libPPUI: Dark Mode code update, updated documentation, made IsSupportedSystem() check for Win10 1809 / Server 2019 or later.
-
libPPUI: CListControl added helper methods for mitigating scrollbar context menu takeover.
-
SDK: Various filesystem helper methods added.
-
SDK: Removed filesystem_transacted, was only implemented in foobar2000 v1.4 series and was dropped in 1.5.
-
SDK: Updated search_index & library_index documentation. Please do not use library_index, no longer works as intended, call search_index methods instead.
-
Helpers: Added file_win32_helpers::querySeekPenalty() method for testing if the device appears to be a solid state drive or spinning hard drive.
-
Removed configuration files for WTL NuGet package as they caused more trouble than benefit.
2023-04-18
-
Made compatible with C++20.
-
PFC: Made possible to compile for ARM32.
-
PFC: Added PFC_CPU_ARCH macro.
-
PFC: format_window(), format_windowStyle() debug helpers.
-
SDK: Documentation updates.
-
SDK: Cleaned up app_close_blocking_task_impl, made possible to use as member of your object instead of as base class.
-
SDK: Added file_info::info_set_bitspersample(), a standard way to pass bit depth + int/float info.
-
SDK: fb2k::inMainThreadSynchronous2() / main_thread_callback_manager_v2, specifically meant for recovering from method-called-in-wrong-thread scenarios.
-
SDK: Added lots of asserts on is_main_thread(), to make it easier to spot API misuse.
-
SDK: Added metadb_pre_update_callback.
-
libPPUI: Dark Mode bug fixes (status bar, check box).
-
libPPUI: Fixed CListControl drag&drop not always triggering automatic scrolling of the list.
-
Moved rarely-used legacy main_thread_callback helpers from SDK to helpers.
-
Helpers: Added DPI-safe cfgWindowPosition.
-
Added configuration files for WTL NuGet package.
2023-03-14 [internal]
-
Improved FOOBAR2000_SUPPORT_CFG_VAR_DOWNGRADE for advconfig vars.
-
Non-FOOBAR2020 mode now accepts configStore names in advconfig constructors to allow FOOBAR2000_SUPPORT_CFG_VAR_DOWNGRADE to work.
2023-03-13 [internal]
-
Added FOOBAR2000_SUPPORT_CFG_VAR_DOWNGRADE to allow going back from foobar2000 v2.0 style cfg_vars to old. Intended for specific components only, do not use unless you know what you are doing.
-
Dark mode bug fixes (listbox).
-
PFC: PFC_DEBUG_PRINT(), send format text to OutputDebugString only in debug build, no-op in release build.
-
PFC: Debug helpers: format_index(), format_permutation(), format_mask()
-
libPPUI: CListControl group layout bug fixes.
-
libPPUI: ListBox dark mode scrollbars fixed.
-
libPPUI: New EditBoxFixes module with one-line methods to install edit box shims.
-
libPPUI: Improved ctrl+backspace editbox shim.
-
SDK: Added playlistColumnProvider documentation.
-
SDK: Added metadb_io_hint_list_v4, intended for specific components only.
2023-02-22
-
PFC: Clarified pfc::remove_if_t<>().
-
Helpers: Fixed bad behavior of cfg_objList<> when targetting foobar2000 v2.0+, related to pfc::remove_if_t<>().
-
SDK: playlist_loader helpers hardened against odd conditions causing a stack overflow.
-
SDK: Updated fb2k::configStore documentation for recently changed behaviors.
-
SDK: Additional audio_chunk channel mask definitions.
-
libPPUI: Dark Mode implementation updated: fixed tri-state checkboxes, added WTL CHyperLink replacement.
-
libPPUI: Removed CStaticThemed & CStaticMainInstruction, they're incompatible with Dark Mode.
2023-01-18
-
SDK: Added fb2k::mainAborter(), returning reference to shared abort_callback that becomes set in late app shutdown; wraps async_task_manager method.
-
SDK: New advanced preferences branch GUIDs
-
SDK: Added audio_chunk::g_channelMaskName() helper returning user-friendly name of channel mask.
-
SDK: Various audio_chunk methods cleaned up.
-
SDK: FB2K_DECLARE_CONTEXT_MENU_ITEM() for declaring simple context menu items with one line.
-
SDK: fb2k::isLowMemModeActive() for detecting low-memory mode introduced in foobar2000 v2.0 32-bit.
-
SDK: Added file_info::meta_enumerate(), cleaned up various internals.
-
SDK: FB2K_RUN_ON_INIT_QUIT(), FB2K_RUN_ON_INIT(), FB2K_RUN_ON_QUIT(), FB2K_ON_INIT_STAGE() for easily setting up functions to be called on app init/shutdown events.
-
SDK: Callback merit system; allows control of order in which callbacks get called, so certain special-purpose callbacks can be guarnteed called before others.
-
SDK: playback_stream_capture_v2 with interval controls, so you can create a realtime visualisation that reliably processes all played audio.
-
SDK: search_index, introduced in late foobar2000 v2.0 beta, replacing library_index functionality (library_index is now wrapped to search_index). Allows faster library & playlist search using prebuilt index.
-
SDK, PFC: Removed 16-bit and 24-bit float maniuplation helpers, for lack of test material or specifications.
-
Helpers: cfg_window_placement cleanup + documentation update.
-
Helpers: ThreadUtils removed outdated comments.
-
Helpers: fb2k::readWriteLock - read/write lock class, similar to win32 SRW lock, but respecting abort_callback& when acquiring.
-
Helpers: AAC audioSpecificConfig tools updated.
-
Helpers: metadb_handle_set cleanup.
-
Helpers: file_win32_wrapper updated with mitigation for unreliable GetFileInformationByHandle() with certain network shares.
-
Helpers: fb2k::workerTool harderning against shutdown race condition crash due to referenced objects firing main thread callbacks.
-
Helpers: Callback merit sorting helper (for core use only really).
-
PFC: Substring search tools update
-
libPPUI: CListControl fixed horrible bug breaking screen readers in 64-bit build.
-
libPPUI: CListControl added greedy layout toggle. Old CListControl versions, from foobar2000 1.x SDK, always used greedy layout; old foobar2000 v2.0 betas didn't; now greedy layout is opt-out.