Skip to content

Commit

Permalink
Release 1.0.10
Browse files Browse the repository at this point in the history
* ARM NEON-optimized code compiles now only for at least ARMv6 architecture.
* Implemented linear ramping lramp_* functions optimized for
  i686, x86_64, ARM-32 and AArch64 architectures.
* Fixed avx::dyn_biquad_process_x8_fma3 function implementation.
* Slight optimizations of avx::biquad_process_x4_fma3 and avx::dyn_biquad_process_x4_fma3.
* Added test build for Windows using MSYS2.
* Updated build scripts.
* Updated module versions in dependencies.
  • Loading branch information
sadko4u committed Mar 19, 2023
2 parents 483d141 + 66079bb commit d3d7f16
Show file tree
Hide file tree
Showing 41 changed files with 6,258 additions and 70 deletions.
29 changes: 29 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -133,3 +133,32 @@ jobs:
echo "***** MEMCHECK $test *****"; \
valgrind ${{env.VALGRIND_ARGS}} .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 --nofork --debug $test; \
done
windows_mingw64:
runs-on: windows-2022
defaults:
run:
shell: msys2 {0}
steps:
- name: Setup MSYS2 and install dependencies
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
release: false
update: false
install: >-
base-devel
git
mingw-w64-x86_64-gcc
- uses: actions/checkout@v3
- name: Configure project
shell: msys2 {0}
run: make config TEST=1
- name: Fetch project dependencies
shell: msys2 {0}
run: make fetch
- name: Build project
shell: msys2 {0}
run: make VERBOSE=1
- name: Run unit tests
shell: msys2 {0}
run: .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test.exe utest --verbose --jobs 1
10 changes: 10 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,16 @@
* RECENT CHANGES
*******************************************************************************

=== 1.0.10 ===
* ARM NEON-optimized code compiles now only for at least ARMv6 architecture.
* Implemented linear ramping lramp_* functions optimized for
i686, x86_64, ARM-32 and AArch64 architectures.
* Fixed avx::dyn_biquad_process_x8_fma3 function implementation.
* Slight optimizations of avx::biquad_process_x4_fma3 and avx::dyn_biquad_process_x4_fma3.
* Added test build for Windows using MSYS2.
* Updated build scripts.
* Updated module versions in dependencies.

=== 1.0.9 ===
* Added Clang build for the CI.

Expand Down
1 change: 1 addition & 0 deletions include/lsp-plug.in/dsp/common/pmath.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include <lsp-plug.in/dsp/common/pmath/fmop_kx.h>
#include <lsp-plug.in/dsp/common/pmath/fmop_vv.h>
#include <lsp-plug.in/dsp/common/pmath/log.h>
#include <lsp-plug.in/dsp/common/pmath/lramp.h>
#include <lsp-plug.in/dsp/common/pmath/minmax.h>
#include <lsp-plug.in/dsp/common/pmath/normalize.h>
#include <lsp-plug.in/dsp/common/pmath/op_kx.h>
Expand Down
133 changes: 133 additions & 0 deletions include/lsp-plug.in/dsp/common/pmath/lramp.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
/*
* Copyright (C) 2023 Linux Studio Plugins Project <https://lsp-plug.in/>
* (C) 2023 Vladimir Sadovnikov <sadko4u@gmail.com>
*
* This file is part of lsp-dsp-lib
* Created on: 1 февр. 2023 г.
*
* lsp-dsp-lib is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* lsp-dsp-lib is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with lsp-dsp-lib. If not, see <https://www.gnu.org/licenses/>.
*/

#ifndef LSP_PLUG_IN_DSP_COMMON_PMATH_LRAMP_H_
#define LSP_PLUG_IN_DSP_COMMON_PMATH_LRAMP_H_


/** Calculate linear ramping envelope: dst[i] = v1 + ((v2-v1)*i) / count
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp_set1, float *dst, float v1, float v2, size_t count);

/** Apply linear ramping envelope: dst[i] = dst[i] * (v1 + ((v2-v1)*i) / count)
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp1, float *dst, float v1, float v2, size_t count);

/** Apply linear ramping envelope: dst[i] = src[i] * (v1 + ((v2-v1)*i) / count)
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp2, float *dst, const float *src, float v1, float v2, size_t count);


/** Apply linear ramping envelope: dst[i] = dst[i] + src[i] * (v1 + ((v2-v1)*i) / count)
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp_add2, float *dst, const float *src, float v1, float v2, size_t count);

/** Apply linear ramping envelope: dst[i] = dst[i] - src[i] * (v1 + ((v2-v1)*i) / count)
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp_sub2, float *dst, const float *src, float v1, float v2, size_t count);

/** Apply linear ramping envelope: dst[i] = src[i] * (v1 + ((v2-v1)*i) / count) - dst[i]
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp_rsub2, float *dst, const float *src, float v1, float v2, size_t count);

/** Apply linear ramping envelope: dst[i] = dst[i] * src[i] * (v1 + ((v2-v1)*i) / count)
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp_mul2, float *dst, const float *src, float v1, float v2, size_t count);

/** Apply linear ramping envelope: dst[i] = dst[i] / (src[i] * (v1 + ((v2-v1)*i) / count))
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp_div2, float *dst, const float *src, float v1, float v2, size_t count);

/** Apply linear ramping envelope: dst[i] = (src[i] * (v1 + ((v2-v1)*i) / count)) / dst[i]
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp_rdiv2, float *dst, const float *src, float v1, float v2, size_t count);


/** Apply linear ramping envelope: dst[i] = a[i] + b[i] * (v1 + ((v2-v1)*i) / count)
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp_add3, float *dst, const float *a, const float *b, float v1, float v2, size_t count);

/** Apply linear ramping envelope: dst[i] = a[i] - b[i] * (v1 + ((v2-v1)*i) / count)
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp_sub3, float *dst, const float *a, const float *b, float v1, float v2, size_t count);

/** Apply linear ramping envelope: dst[i] = b[i] * (v1 + ((v2-v1)*i) / count) - a[i]
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp_rsub3, float *dst, const float *a, const float *b, float v1, float v2, size_t count);

/** Apply linear ramping envelope: dst[i] = a[i] * b[i] * (v1 + ((v2-v1)*i) / count)
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp_mul3, float *dst, const float *a, const float *b, float v1, float v2, size_t count);

/** Apply linear ramping envelope: dst[i] = a[i] / (b[i] * (v1 + ((v2-v1)*i) / count))
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp_div3, float *dst, const float *a, const float *b, float v1, float v2, size_t count);

/** Apply linear ramping envelope: dst[i] = (b[i] * (v1 + ((v2-v1)*i) / count)) / a[i]
*
* @param dst destination vector
* @param count number of elements
*/
LSP_DSP_LIB_SYMBOL(void, lramp_rdiv3, float *dst, const float *a, const float *b, float v1, float v2, size_t count);

#endif /* LSP_PLUG_IN_DSP_COMMON_PMATH_LRAMP_H_ */
2 changes: 1 addition & 1 deletion include/lsp-plug.in/dsp/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
// Define version of headers
#define LSP_DSP_LIB_MAJOR 1
#define LSP_DSP_LIB_MINOR 0
#define LSP_DSP_LIB_MICRO 9
#define LSP_DSP_LIB_MICRO 10

#if defined(__WINDOWS__) || defined(__WIN32__) || defined(__WIN64__) || defined(_WIN64) || defined(_WIN32) || defined(__WINNT) || defined(__WINNT__)
#define LSP_DSP_LIB_EXPORT_MODIFIER __declspec(dllexport)
Expand Down
Loading

0 comments on commit d3d7f16

Please sign in to comment.