Skip to content

Commit d3d7f16

Browse files
committed
Release 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.
2 parents 483d141 + 66079bb commit d3d7f16

File tree

41 files changed

+6258
-70
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+6258
-70
lines changed

.github/workflows/build.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,3 +133,32 @@ jobs:
133133
echo "***** MEMCHECK $test *****"; \
134134
valgrind ${{env.VALGRIND_ARGS}} .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 --nofork --debug $test; \
135135
done
136+
windows_mingw64:
137+
runs-on: windows-2022
138+
defaults:
139+
run:
140+
shell: msys2 {0}
141+
steps:
142+
- name: Setup MSYS2 and install dependencies
143+
uses: msys2/setup-msys2@v2
144+
with:
145+
msystem: MINGW64
146+
release: false
147+
update: false
148+
install: >-
149+
base-devel
150+
git
151+
mingw-w64-x86_64-gcc
152+
- uses: actions/checkout@v3
153+
- name: Configure project
154+
shell: msys2 {0}
155+
run: make config TEST=1
156+
- name: Fetch project dependencies
157+
shell: msys2 {0}
158+
run: make fetch
159+
- name: Build project
160+
shell: msys2 {0}
161+
run: make VERBOSE=1
162+
- name: Run unit tests
163+
shell: msys2 {0}
164+
run: .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test.exe utest --verbose --jobs 1

CHANGELOG

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,16 @@
22
* RECENT CHANGES
33
*******************************************************************************
44

5+
=== 1.0.10 ===
6+
* ARM NEON-optimized code compiles now only for at least ARMv6 architecture.
7+
* Implemented linear ramping lramp_* functions optimized for
8+
i686, x86_64, ARM-32 and AArch64 architectures.
9+
* Fixed avx::dyn_biquad_process_x8_fma3 function implementation.
10+
* Slight optimizations of avx::biquad_process_x4_fma3 and avx::dyn_biquad_process_x4_fma3.
11+
* Added test build for Windows using MSYS2.
12+
* Updated build scripts.
13+
* Updated module versions in dependencies.
14+
515
=== 1.0.9 ===
616
* Added Clang build for the CI.
717

include/lsp-plug.in/dsp/common/pmath.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include <lsp-plug.in/dsp/common/pmath/fmop_kx.h>
3030
#include <lsp-plug.in/dsp/common/pmath/fmop_vv.h>
3131
#include <lsp-plug.in/dsp/common/pmath/log.h>
32+
#include <lsp-plug.in/dsp/common/pmath/lramp.h>
3233
#include <lsp-plug.in/dsp/common/pmath/minmax.h>
3334
#include <lsp-plug.in/dsp/common/pmath/normalize.h>
3435
#include <lsp-plug.in/dsp/common/pmath/op_kx.h>
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
/*
2+
* Copyright (C) 2023 Linux Studio Plugins Project <https://lsp-plug.in/>
3+
* (C) 2023 Vladimir Sadovnikov <[email protected]>
4+
*
5+
* This file is part of lsp-dsp-lib
6+
* Created on: 1 февр. 2023 г.
7+
*
8+
* lsp-dsp-lib is free software: you can redistribute it and/or modify
9+
* it under the terms of the GNU Lesser General Public License as published by
10+
* the Free Software Foundation, either version 3 of the License, or
11+
* any later version.
12+
*
13+
* lsp-dsp-lib is distributed in the hope that it will be useful,
14+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16+
* GNU Lesser General Public License for more details.
17+
*
18+
* You should have received a copy of the GNU Lesser General Public License
19+
* along with lsp-dsp-lib. If not, see <https://www.gnu.org/licenses/>.
20+
*/
21+
22+
#ifndef LSP_PLUG_IN_DSP_COMMON_PMATH_LRAMP_H_
23+
#define LSP_PLUG_IN_DSP_COMMON_PMATH_LRAMP_H_
24+
25+
26+
/** Calculate linear ramping envelope: dst[i] = v1 + ((v2-v1)*i) / count
27+
*
28+
* @param dst destination vector
29+
* @param count number of elements
30+
*/
31+
LSP_DSP_LIB_SYMBOL(void, lramp_set1, float *dst, float v1, float v2, size_t count);
32+
33+
/** Apply linear ramping envelope: dst[i] = dst[i] * (v1 + ((v2-v1)*i) / count)
34+
*
35+
* @param dst destination vector
36+
* @param count number of elements
37+
*/
38+
LSP_DSP_LIB_SYMBOL(void, lramp1, float *dst, float v1, float v2, size_t count);
39+
40+
/** Apply linear ramping envelope: dst[i] = src[i] * (v1 + ((v2-v1)*i) / count)
41+
*
42+
* @param dst destination vector
43+
* @param count number of elements
44+
*/
45+
LSP_DSP_LIB_SYMBOL(void, lramp2, float *dst, const float *src, float v1, float v2, size_t count);
46+
47+
48+
/** Apply linear ramping envelope: dst[i] = dst[i] + src[i] * (v1 + ((v2-v1)*i) / count)
49+
*
50+
* @param dst destination vector
51+
* @param count number of elements
52+
*/
53+
LSP_DSP_LIB_SYMBOL(void, lramp_add2, float *dst, const float *src, float v1, float v2, size_t count);
54+
55+
/** Apply linear ramping envelope: dst[i] = dst[i] - src[i] * (v1 + ((v2-v1)*i) / count)
56+
*
57+
* @param dst destination vector
58+
* @param count number of elements
59+
*/
60+
LSP_DSP_LIB_SYMBOL(void, lramp_sub2, float *dst, const float *src, float v1, float v2, size_t count);
61+
62+
/** Apply linear ramping envelope: dst[i] = src[i] * (v1 + ((v2-v1)*i) / count) - dst[i]
63+
*
64+
* @param dst destination vector
65+
* @param count number of elements
66+
*/
67+
LSP_DSP_LIB_SYMBOL(void, lramp_rsub2, float *dst, const float *src, float v1, float v2, size_t count);
68+
69+
/** Apply linear ramping envelope: dst[i] = dst[i] * src[i] * (v1 + ((v2-v1)*i) / count)
70+
*
71+
* @param dst destination vector
72+
* @param count number of elements
73+
*/
74+
LSP_DSP_LIB_SYMBOL(void, lramp_mul2, float *dst, const float *src, float v1, float v2, size_t count);
75+
76+
/** Apply linear ramping envelope: dst[i] = dst[i] / (src[i] * (v1 + ((v2-v1)*i) / count))
77+
*
78+
* @param dst destination vector
79+
* @param count number of elements
80+
*/
81+
LSP_DSP_LIB_SYMBOL(void, lramp_div2, float *dst, const float *src, float v1, float v2, size_t count);
82+
83+
/** Apply linear ramping envelope: dst[i] = (src[i] * (v1 + ((v2-v1)*i) / count)) / dst[i]
84+
*
85+
* @param dst destination vector
86+
* @param count number of elements
87+
*/
88+
LSP_DSP_LIB_SYMBOL(void, lramp_rdiv2, float *dst, const float *src, float v1, float v2, size_t count);
89+
90+
91+
/** Apply linear ramping envelope: dst[i] = a[i] + b[i] * (v1 + ((v2-v1)*i) / count)
92+
*
93+
* @param dst destination vector
94+
* @param count number of elements
95+
*/
96+
LSP_DSP_LIB_SYMBOL(void, lramp_add3, float *dst, const float *a, const float *b, float v1, float v2, size_t count);
97+
98+
/** Apply linear ramping envelope: dst[i] = a[i] - b[i] * (v1 + ((v2-v1)*i) / count)
99+
*
100+
* @param dst destination vector
101+
* @param count number of elements
102+
*/
103+
LSP_DSP_LIB_SYMBOL(void, lramp_sub3, float *dst, const float *a, const float *b, float v1, float v2, size_t count);
104+
105+
/** Apply linear ramping envelope: dst[i] = b[i] * (v1 + ((v2-v1)*i) / count) - a[i]
106+
*
107+
* @param dst destination vector
108+
* @param count number of elements
109+
*/
110+
LSP_DSP_LIB_SYMBOL(void, lramp_rsub3, float *dst, const float *a, const float *b, float v1, float v2, size_t count);
111+
112+
/** Apply linear ramping envelope: dst[i] = a[i] * b[i] * (v1 + ((v2-v1)*i) / count)
113+
*
114+
* @param dst destination vector
115+
* @param count number of elements
116+
*/
117+
LSP_DSP_LIB_SYMBOL(void, lramp_mul3, float *dst, const float *a, const float *b, float v1, float v2, size_t count);
118+
119+
/** Apply linear ramping envelope: dst[i] = a[i] / (b[i] * (v1 + ((v2-v1)*i) / count))
120+
*
121+
* @param dst destination vector
122+
* @param count number of elements
123+
*/
124+
LSP_DSP_LIB_SYMBOL(void, lramp_div3, float *dst, const float *a, const float *b, float v1, float v2, size_t count);
125+
126+
/** Apply linear ramping envelope: dst[i] = (b[i] * (v1 + ((v2-v1)*i) / count)) / a[i]
127+
*
128+
* @param dst destination vector
129+
* @param count number of elements
130+
*/
131+
LSP_DSP_LIB_SYMBOL(void, lramp_rdiv3, float *dst, const float *a, const float *b, float v1, float v2, size_t count);
132+
133+
#endif /* LSP_PLUG_IN_DSP_COMMON_PMATH_LRAMP_H_ */

include/lsp-plug.in/dsp/version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
// Define version of headers
2626
#define LSP_DSP_LIB_MAJOR 1
2727
#define LSP_DSP_LIB_MINOR 0
28-
#define LSP_DSP_LIB_MICRO 9
28+
#define LSP_DSP_LIB_MICRO 10
2929

3030
#if defined(__WINDOWS__) || defined(__WIN32__) || defined(__WIN64__) || defined(_WIN64) || defined(_WIN32) || defined(__WINNT) || defined(__WINNT__)
3131
#define LSP_DSP_LIB_EXPORT_MODIFIER __declspec(dllexport)

0 commit comments

Comments
 (0)