Skip to content

Commit e6841ab

Browse files
committed
Core (LV::Audio): Fix 'restrict' violations using intermediate buffers.
1 parent 1a889fa commit e6841ab

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

libvisual/libvisual/lv_audio.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -232,12 +232,14 @@ namespace LV {
232232

233233
void Audio::get_spectrum (BufferPtr const& buffer, std::size_t samplelen, std::string const& channel_name, bool normalised, float multiplier)
234234
{
235-
get_spectrum (buffer, samplelen, channel_name, normalised);
235+
auto spectrum {Buffer::create (buffer->get_size ())};
236+
get_spectrum (spectrum, samplelen, channel_name, normalised);
236237

237-
auto data = static_cast<float*> (buffer->get_data ());
238-
std::size_t datasize = buffer->get_size () / sizeof (float);
238+
auto result_ptr {static_cast<float*> (buffer->get_data ())};
239+
auto spectrum_ptr {static_cast<float const*> (spectrum->get_data ())};
240+
auto count {buffer->get_size () / sizeof (float)};
239241

240-
visual_math_simd_mul_floats_float (data, data, multiplier, datasize);
242+
visual_math_simd_mul_floats_float (result_ptr, spectrum_ptr, multiplier, count);
241243
}
242244

243245
void Audio::get_spectrum_for_sample (BufferPtr const& buffer, BufferConstPtr const& sample, bool normalised)
@@ -255,12 +257,14 @@ namespace LV {
255257

256258
void Audio::get_spectrum_for_sample (BufferPtr const& buffer, BufferConstPtr const& sample, bool normalised, float multiplier)
257259
{
258-
get_spectrum_for_sample (buffer, sample, normalised);
260+
auto spectrum {Buffer::create (buffer->get_size ())};
261+
get_spectrum_for_sample (spectrum, sample, normalised);
259262

260-
auto data = static_cast<float*> (buffer->get_data ());
261-
std::size_t datasize = buffer->get_size () / sizeof (float);
263+
auto result_ptr {static_cast<float*> (buffer->get_data ())};
264+
auto spectrum_ptr {static_cast<float const*> (spectrum->get_data ())};
265+
auto count {buffer->get_size () / sizeof (float)};
262266

263-
visual_math_simd_mul_floats_float (data, data, multiplier, datasize);
267+
visual_math_simd_mul_floats_float (result_ptr, spectrum_ptr, multiplier, count);
264268
}
265269

266270
void Audio::normalise_spectrum (BufferPtr const& buffer)

0 commit comments

Comments
 (0)