{"id":13812862,"url":"https://github.com/lsp-plugins/lsp-dsp-lib","last_synced_at":"2026-06-12T03:01:29.496Z","repository":{"id":49348346,"uuid":"251557605","full_name":"lsp-plugins/lsp-dsp-lib","owner":"lsp-plugins","description":"DSP library for signal processing","archived":false,"fork":false,"pushed_at":"2025-12-20T11:22:34.000Z","size":4057,"stargazers_count":88,"open_issues_count":0,"forks_count":20,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-12-22T16:07:10.684Z","etag":null,"topics":["aarch64","algorithms","architectures","armv7","assembly","convolution-algorithms","dsp","dsp-library","fft","fma3","lsp-dsp-lib","processing-algorithms","simd","simd-instructions","simd-library","x86-32","x86-64"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lsp-plugins.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":".github/FUNDING.yml","license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"liberapay":"sadko4u","patreon":"sadko4u","custom":["https://www.blockchain.com/btc/address/15X3AfDRF3EshSLBoK8UfHAsFr2TQsH8pk","https://etherscan.io/address/0x079b24da78d78302cd3cfbb80c728cd554606cc6","https://www.bountysource.com/teams/lsp-plugins","https://paypal.me/sadko4u"]}},"created_at":"2020-03-31T09:29:30.000Z","updated_at":"2025-12-20T11:22:39.000Z","dependencies_parsed_at":"2023-01-29T23:01:32.759Z","dependency_job_id":"df013db5-e1a3-4db1-96c4-7352fb0d2f40","html_url":"https://github.com/lsp-plugins/lsp-dsp-lib","commit_stats":null,"previous_names":[],"tags_count":58,"template":false,"template_full_name":null,"purl":"pkg:github/lsp-plugins/lsp-dsp-lib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsp-plugins%2Flsp-dsp-lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsp-plugins%2Flsp-dsp-lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsp-plugins%2Flsp-dsp-lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsp-plugins%2Flsp-dsp-lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lsp-plugins","download_url":"https://codeload.github.com/lsp-plugins/lsp-dsp-lib/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lsp-plugins%2Flsp-dsp-lib/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30406401,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T22:36:59.286Z","status":"ssl_error","status_checked_at":"2026-03-11T22:36:57.544Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aarch64","algorithms","architectures","armv7","assembly","convolution-algorithms","dsp","dsp-library","fft","fma3","lsp-dsp-lib","processing-algorithms","simd","simd-instructions","simd-library","x86-32","x86-64"],"created_at":"2024-08-04T04:00:56.768Z","updated_at":"2026-06-12T03:01:29.490Z","avatar_url":"https://github.com/lsp-plugins.png","language":"C++","funding_links":["https://liberapay.com/sadko4u","https://patreon.com/sadko4u","https://www.blockchain.com/btc/address/15X3AfDRF3EshSLBoK8UfHAsFr2TQsH8pk","https://etherscan.io/address/0x079b24da78d78302cd3cfbb80c728cd554606cc6","https://www.bountysource.com/teams/lsp-plugins","https://paypal.me/sadko4u"],"categories":["Data processing"],"sub_categories":["DSP and Filtering"],"readme":"# lsp-dsp-lib\n\nDSP library for digital signal processing (and more)\n\nThis library provides set of functions that perform SIMD-optimized\ncomputing on several hardware architectures.\n\nCurrently supported set of SIMD extensions:\n  * i586 architecture (32-bit): SSE, SSE2, SSE3, AVX, AVX2, FMA3 and partial support of AVX512;\n  * x86_64 architecture (64-bit): SSE, SSE2, SSE3, AVX, AVX2, FMA3 and partial support of AVX512;\n  * armv7 architecture (32-bit): NEON;\n  * AArch64 architecture (64-bit): ASIMD.\n\nAll functions currently operate on IEEE-754 single-precision floating-point numbers.\n\nCurrent set of functions provided:\n  * Functions that gather system information and optimize CPU for better computing;\n  * Cooley-Tukey 1-dimensional FFT algorithms with unpacked complex numbers;\n  * Cooley-Tukey 1-dimensional FFT algorithms with packed complex numbers;\n  * Direct convolution algorithm;\n  * Fast convolution functions that enhance performance of FFT-based convolution algorithms;\n  * Biquad static filter transform and processing algorithms;\n  * Biquad dynamic filter transform and processing algorithms;\n  * Floating-point operations: copying, moving, protection from NaNs and denormals;\n  * Parallel arithmetics functions on long vectors including fused multiply operations;\n  * Basic unpacked complex number arithmetics;\n  * Basic packed complex number arithmetics;\n  * Some functions that operate on RGB and HSL colors and their conversions;\n  * Mid/Side matrix functions for converting Stereo channel to Mid/Side and back;\n  * Functions for searching minimums and maximums;\n  * Resampling functions based on Lanczos filter;\n  * Interpolation functions;\n  * Some set of function to work with 3D mathematics.\n\n## Supported platforms\n\nThe build and correct unit test execution has been confirmed for following platforms:\n* FreeBSD\n* GNU/Linux\n* Haiku\n* MacOS (ARM-based)\n* Windows 32-bit\n* Windows 64-bit\n\n## Supported architectures\n\nThe support of following list of hardware architectures has been implemented:\n* i386 (32-bit) - full support (SSE1-SSE3, AVX, AVX2, partial support for AVX-512).\n* x86_64 (64-bit) - full support (SSE1-SSE3, AVX, AVX2, partial support for AVX-512).\n* ARMv6A - full support.\n* ARMv7A - full support.\n* AArch64 - full support.\n\nFor all other architectures the generic implementation of algorithms is used, without any\narchitecture-specific optimizations. \n\n## Requirements\n\nThe following packages need to be installed for building:\n\n* gcc \u003e= 4.9\n* make \u003e= 4.0\n\n## Building\n\nTo build the library, perform the following commands:\n\n```bash\nmake config # Configure the build\nmake fetch # Fetch dependencies from Git repository\nmake\nsudo make install\n```\n\nTo get more build options, run:\n\n```bash\nmake help\n```\n\nTo uninstall library, simply issue:\n\n```bash\nmake uninstall\n```\n\nTo clean all binary files, run:\n\n```bash\nmake clean\n```\n\nTo clean the whole project tree including configuration files, run:\n\n```bash\nmake prune\n```\n\nTo fetch all possible dependencies and make the source code tree portable between\ndifferent architectures and platforms, run:\n\n```bash\nmake tree\n```\n\nTo build source code archive with all possible dependencies, run:\n\n```bash\nmake distsrc\n```\n\n## Usage\n\n\nHere's the code snippet of how the library can be initialized and used in C++:\n\n```C++\n#include \u003clsp-plug.in/dsp/dsp.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n\nint main(int argc, const char **argv)\n{\n    // Initialize DSP\n    lsp::dsp::init();\n\n    // Optionally: output information about the system\n    lsp::dsp::info_t *info = lsp::dsp::info();\n    if (info != NULL)\n    {\n        printf(\"Architecture:   %s\\n\", info-\u003earch);\n        printf(\"Processor:      %s\\n\", info-\u003ecpu);\n        printf(\"Model:          %s\\n\", info-\u003emodel);\n        printf(\"Features:       %s\\n\", info-\u003efeatures);\n\n        ::free(info);\n    }\n    \n    // For faster computing we can tune CPU by updating thread context.\n    // This will enable Flush-to-Zero and Denormals-are-Zero flags on\n    // CPUs that support them. This is thread-local change and should\n    // be called in each individual processing thread\n    lsp::dsp::context_t ctx;\n    lsp::dsp::start(\u0026ctx);\n    \n    // Here we call some dsp functions, for example dsp::fill_zero\n    float v[0x1000];\n    lsp::dsp::fill_zero(v, sizeof(v)/sizeof(float));\n    \n    // At the end, we need to restore the context and reset CPU settings to defaults\n    lsp::dsp::finish(\u0026ctx);\n    \n    return 0;\n}\n\n\n```\n\nAlso all functions can be accessed from pure C with ```lsp_dsp_``` prefix in the funcion and type names:\n\n```C\n#include \u003clsp-plug.in/dsp/dsp.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n\nint main(int argc, const char **argv)\n{\n    // Initialize DSP\n    lsp_dsp_init();\n\n    // Optionally: output information about the system\n    lsp_dsp_info_t *info = lsp_dsp_info();\n    if (info != NULL)\n    {\n        printf(\"Architecture:   %s\\n\", info-\u003earch);\n        printf(\"Processor:      %s\\n\", info-\u003ecpu);\n        printf(\"Model:          %s\\n\", info-\u003emodel);\n        printf(\"Features:       %s\\n\", info-\u003efeatures);\n\n        free(info);\n    }\n    \n    // For faster computing we can tune CPU by updating thread context.\n    // This will enable Flush-to-Zero and Denormals-are-Zero flags on\n    // CPUs that support them. This is thread-local change and should\n    // be called in each individual processing thread\n    lsp_dsp_context_t ctx;\n    lsp_dsp_start(\u0026ctx);\n    \n    // Here we call some dsp functions, for example lsp_dsp_fill_zero\n    float v[0x1000];\n    lsp_dsp_fill_zero(v, sizeof(v)/sizeof(float));\n    \n    // At the end, we need to restore the context and reset CPU settings to defaults\n    lsp_dsp_finish(\u0026ctx);\n    \n    return 0;\n}\n\n\n```\n\n## SAST Tools\n\n* [PVS-Studio](https://pvs-studio.com/en/pvs-studio/?utm_source=website\u0026utm_medium=github\u0026utm_campaign=open_source) - static analyzer for C, C++, C#, and Java code.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flsp-plugins%2Flsp-dsp-lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flsp-plugins%2Flsp-dsp-lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flsp-plugins%2Flsp-dsp-lib/lists"}