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-12-03
-
Many compiler warning fixes all over the place.
-
Added noexcept to many methods. It's recommended to make your overrides of virtual callback methods noexcept if they are not meant to throw exceptions, to reliably turn exceptions into crash reports.
-
PFC: audio_math updates, added int24 operations, improved rounding consistency
-
PFC: Fixed alignedAlloc() missing nullptr check / false failure (wasn't actually used anywhere).
-
PFC: Documented string fix_eol(), truncate_eol(), limit_length() behaviors.
-
PFC: Fixed string indexOfAnyChar() base parameter not being respected.
-
PFC: Fixed incorrect output of format_mask() debug helper function.
-
PFC: fileTimeNow() use clock_gettime() on non-Windows, never use inaccurate time().
-
libPPUI: CListControl fixes to deal with extremely wide views.
-
libPPUI: CListControlSimple added column header click sorting capability.
-
SDK: crashOnException() removed Apple specific hacks, use noexcept to reliably die from an exception.
-
SDK: abort_callback::waitForEvent() made const.
-
SDK: abort_callback added nonthrowing methods (bool retval instead of exception_aborted).
-
SDK: console_manager clarified behavior (some methods are internal/obsolete/reserved).
-
SDK: Documented decode_postprocessor better.
-
SDK: Added dsp_chain_config::add_items().
-
SDK: Added file_info::meta_get_title(), mainly meant for debugging.
-
SDK: More thorough abort_callback polling in helper code.
-
SDK: Made filesystem::get_display_name_short_() not throw exceptions if fed nonsense.
-
SDK: nixMakeFileStats2() amended to handle objects that are neither files nor directories.
-
SDK: Added helper code to capitalize menu items differently depending on platform being compiled on, see FB2K_MENU_CAPS macro and fb2k::capitalizeMenuLabel().
-
SDK: Added metadb_handle_list::format_total_size()
-
SDK: Added output_v7 (2.25 functionality draft).
-
SDK: playback_control.h added standalone helper functions for accessing & manipulating playback state.
-
SDK: Added ui_element_mac, separate interface for creating panels in Mac OS version.
-
Mac helpers: Because special rules apply to Objective-C classes used in components, some helper classes/categories have been converted to standalone functions to avoid breakage. Category methods have been prefixed to prevent name collisions.
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.