diff --git a/chromium_src/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/chromium_src/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc index e4a12790e80..06b7116ff90 100644 --- a/chromium_src/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc +++ b/chromium_src/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc @@ -3,33 +3,35 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ -#define BRAVE_REALTIMEANALYSER_CONVERTFLOATTODB \ - if (audio_farbling_helper_) { \ - audio_farbling_helper_->FarbleConvertFloatToDb(source, destination, len); \ - return; \ +#define BRAVE_REALTIMEANALYSER_CONVERTFLOATTODB \ + if (audio_farbling_helper_) { \ + audio_farbling_helper_->FarbleConvertFloatToDb(magnitude_buffer_, \ + destination, len); \ + return; \ } -#define BRAVE_REALTIMEANALYSER_CONVERTTOBYTEDATA \ - if (audio_farbling_helper_) { \ - audio_farbling_helper_->FarbleConvertToByteData( \ - source, destination, len, min_decibels, range_scale_factor); \ - return; \ +#define BRAVE_REALTIMEANALYSER_CONVERTTOBYTEDATA \ + if (audio_farbling_helper_) { \ + audio_farbling_helper_->FarbleConvertToByteData( \ + magnitude_buffer_, destination, len, min_decibels, \ + range_scale_factor); \ + return; \ } -#define BRAVE_REALTIMEANALYSER_GETFLOATTIMEDOMAINDATA \ - if (audio_farbling_helper_) { \ - audio_farbling_helper_->FarbleFloatTimeDomainData( \ - input_buffer, destination, len, write_index, fft_size, \ - kInputBufferSize); \ - return; \ +#define BRAVE_REALTIMEANALYSER_GETFLOATTIMEDOMAINDATA \ + if (audio_farbling_helper_) { \ + audio_farbling_helper_->FarbleFloatTimeDomainData( \ + input_buffer_, destination, len, write_index, fft_size, \ + kInputBufferSize); \ + return; \ } -#define BRAVE_REALTIMEANALYSER_GETBYTETIMEDOMAINDATA \ - if (audio_farbling_helper_) { \ - audio_farbling_helper_->FarbleByteTimeDomainData( \ - input_buffer, destination, len, write_index, fft_size, \ - kInputBufferSize); \ - return; \ +#define BRAVE_REALTIMEANALYSER_GETBYTETIMEDOMAINDATA \ + if (audio_farbling_helper_) { \ + audio_farbling_helper_->FarbleByteTimeDomainData( \ + input_buffer_, destination, len, write_index, fft_size, \ + kInputBufferSize); \ + return; \ } #include diff --git a/patches/third_party-blink-renderer-modules-webaudio-realtime_analyser.cc.patch b/patches/third_party-blink-renderer-modules-webaudio-realtime_analyser.cc.patch index 3b84762e92d..113963ec4de 100644 --- a/patches/third_party-blink-renderer-modules-webaudio-realtime_analyser.cc.patch +++ b/patches/third_party-blink-renderer-modules-webaudio-realtime_analyser.cc.patch @@ -1,36 +1,36 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc -index bd241b08b215e8b86938fd802d7fa6185bc9fc60..2efde07579c6818f0b367315089fd31fa4d1c3ad 100644 +index 9f2c3f443f4188f40c7562a98ffc536b55ba040b..a1a60bb1c5275517e61f2d56a710daf2e9da6b6d 100644 --- a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc +++ b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc -@@ -115,6 +115,7 @@ void RealtimeAnalyser::GetFloatFrequencyData(DOMFloat32Array* destination_array, - const float* source = magnitude_buffer_.Data(); - float* destination = destination_array->Data(); - +@@ -114,6 +114,7 @@ void RealtimeAnalyser::GetFloatFrequencyData(DOMFloat32Array* destination_array, + const size_t len = std::min(source_length, destination_array->length()); + if (len > 0) { + base::span destination = destination_array->AsSpan(); + BRAVE_REALTIMEANALYSER_CONVERTFLOATTODB for (unsigned i = 0; i < len; ++i) { - const float linear_value = UNSAFE_TODO(source[i]); + const float linear_value = magnitude_buffer_[i]; const double db_mag = audio_utilities::LinearToDecibels(linear_value); -@@ -150,6 +151,7 @@ void RealtimeAnalyser::GetByteFrequencyData(DOMUint8Array* destination_array, - const float* source = magnitude_buffer_.Data(); - unsigned char* destination = destination_array->Data(); +@@ -147,6 +148,7 @@ void RealtimeAnalyser::GetByteFrequencyData(DOMUint8Array* destination_array, + const double min_decibels = min_decibels_; + base::span destination = destination_array->AsSpan(); + BRAVE_REALTIMEANALYSER_CONVERTTOBYTEDATA for (unsigned i = 0; i < len; ++i) { - const float linear_value = UNSAFE_TODO(source[i]); + const float linear_value = magnitude_buffer_[i]; const double db_mag = audio_utilities::LinearToDecibels(linear_value); -@@ -183,6 +185,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData( - +@@ -178,6 +180,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData( const unsigned write_index = GetWriteIndex(); + base::span destination = destination_array->AsSpan(); + BRAVE_REALTIMEANALYSER_GETFLOATTIMEDOMAINDATA for (unsigned i = 0; i < len; ++i) { // Buffer access is protected due to modulo operation. - float value = UNSAFE_TODO( -@@ -210,6 +213,7 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { - + float value = +@@ -203,6 +206,7 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { const unsigned write_index = GetWriteIndex(); + base::span destination = destination_array->AsSpan(); + BRAVE_REALTIMEANALYSER_GETBYTETIMEDOMAINDATA for (unsigned i = 0; i < len; ++i) { // Buffer access is protected due to modulo operation. - const float value = UNSAFE_TODO( + const float value = diff --git a/third_party/blink/renderer/platform/brave_audio_farbling_helper.cc b/third_party/blink/renderer/platform/brave_audio_farbling_helper.cc index bbe47f36fb7..4dcc02c4fbd 100644 --- a/third_party/blink/renderer/platform/brave_audio_farbling_helper.cc +++ b/third_party/blink/renderer/platform/brave_audio_farbling_helper.cc @@ -45,8 +45,8 @@ void BraveAudioFarblingHelper::FarbleAudioChannel(base::span dst) const { // Calculate values for RealtimeAnalyser::GetFloatTimeDomainData void BraveAudioFarblingHelper::FarbleFloatTimeDomainData( - const float* input_buffer, - float* destination, + const AudioFloatArray& input_buffer, + base::span& destination, size_t len, unsigned write_index, unsigned fft_size, @@ -56,26 +56,25 @@ void BraveAudioFarblingHelper::FarbleFloatTimeDomainData( for (size_t i = 0; i < len; ++i) { v = lfsr_next(v); float value = (v / maxUInt64AsDouble) / 10; - UNSAFE_TODO(destination[i]) = value; + destination[i] = value; } } else { for (size_t i = 0; i < len; ++i) { // Buffer access is protected due to modulo operation. float value = fudge_factor_ * - UNSAFE_TODO( - input_buffer[(i + write_index - fft_size + input_buffer_size) % - input_buffer_size]); + input_buffer[(i + write_index - fft_size + input_buffer_size) % + input_buffer_size]; - UNSAFE_TODO(destination[i]) = value; + destination[i] = value; } } } // Calculate values for RealtimeAnalyser::GetByteTimeDomainData void BraveAudioFarblingHelper::FarbleByteTimeDomainData( - const float* input_buffer, - unsigned char* destination, + const AudioFloatArray& input_buffer, + base::span& destination, size_t len, unsigned write_index, unsigned fft_size, @@ -97,16 +96,15 @@ void BraveAudioFarblingHelper::FarbleByteTimeDomainData( scaled_value = UCHAR_MAX; } - UNSAFE_TODO(destination[i]) = static_cast(scaled_value); + destination[i] = static_cast(scaled_value); } } else { for (size_t i = 0; i < len; ++i) { // Buffer access is protected due to modulo operation. float value = fudge_factor_ * - UNSAFE_TODO( - input_buffer[(i + write_index - fft_size + input_buffer_size) % - input_buffer_size]); + input_buffer[(i + write_index - fft_size + input_buffer_size) % + input_buffer_size]; // Scale from nominal -1 -> +1 to unsigned byte. double scaled_value = 128 * (value + 1); @@ -119,15 +117,15 @@ void BraveAudioFarblingHelper::FarbleByteTimeDomainData( scaled_value = UCHAR_MAX; } - UNSAFE_TODO(destination[i]) = static_cast(scaled_value); + destination[i] = static_cast(scaled_value); } } } // Calculate values for RealtimeAnalyser::ConvertToByteData void BraveAudioFarblingHelper::FarbleConvertToByteData( - const float* source, - unsigned char* destination, + const AudioFloatArray& source, + base::span& destination, size_t len, double min_decibels, double range_scale_factor) const { @@ -151,11 +149,11 @@ void BraveAudioFarblingHelper::FarbleConvertToByteData( scaled_value = UCHAR_MAX; } - UNSAFE_TODO(destination[i]) = static_cast(scaled_value); + destination[i] = static_cast(scaled_value); } } else { for (size_t i = 0; i < len; ++i) { - float linear_value = fudge_factor_ * UNSAFE_TODO(source[i]); + float linear_value = fudge_factor_ * source[i]; double db_mag = audio_utilities::LinearToDecibels(linear_value); // The range m_minDecibels to m_maxDecibels will be scaled to byte values @@ -171,28 +169,29 @@ void BraveAudioFarblingHelper::FarbleConvertToByteData( scaled_value = UCHAR_MAX; } - UNSAFE_TODO(destination[i]) = static_cast(scaled_value); + destination[i] = static_cast(scaled_value); } } } // Calculate values for RealtimeAnalyser::ConvertFloatToDb -void BraveAudioFarblingHelper::FarbleConvertFloatToDb(const float* source, - float* destination, - size_t len) const { +void BraveAudioFarblingHelper::FarbleConvertFloatToDb( + const AudioFloatArray& source, + base::span& destination, + size_t len) const { if (max_) { uint64_t v = seed_; for (size_t i = 0; i < len; ++i) { v = lfsr_next(v); float linear_value = (v / maxUInt64AsDouble) / 10; double db_mag = audio_utilities::LinearToDecibels(linear_value); - UNSAFE_TODO(destination[i]) = static_cast(db_mag); + destination[i] = static_cast(db_mag); } } else { for (size_t i = 0; i < len; ++i) { - float linear_value = fudge_factor_ * UNSAFE_TODO(source[i]); + float linear_value = fudge_factor_ * source[i]; double db_mag = audio_utilities::LinearToDecibels(linear_value); - UNSAFE_TODO(destination[i]) = static_cast(db_mag); + destination[i] = static_cast(db_mag); } } } diff --git a/third_party/blink/renderer/platform/brave_audio_farbling_helper.h b/third_party/blink/renderer/platform/brave_audio_farbling_helper.h index 320cbc4f6da..1e0f15c9bbe 100644 --- a/third_party/blink/renderer/platform/brave_audio_farbling_helper.h +++ b/third_party/blink/renderer/platform/brave_audio_farbling_helper.h @@ -10,6 +10,7 @@ #include #include "base/containers/span.h" +#include "third_party/blink/renderer/platform/audio/audio_array.h" #include "third_party/blink/renderer/platform/platform_export.h" namespace blink { @@ -20,25 +21,25 @@ class PLATFORM_EXPORT BraveAudioFarblingHelper final { ~BraveAudioFarblingHelper(); void FarbleAudioChannel(base::span dst) const; - void FarbleFloatTimeDomainData(const float* input_buffer, - float* destination, + void FarbleFloatTimeDomainData(const AudioFloatArray& input_buffer, + base::span& destination, size_t len, unsigned write_index, unsigned fft_size, unsigned input_buffer_size) const; - void FarbleByteTimeDomainData(const float* input_buffer, - unsigned char* destination, + void FarbleByteTimeDomainData(const AudioFloatArray& input_buffer, + base::span& destination, size_t len, unsigned write_index, unsigned fft_size, unsigned input_buffer_size) const; - void FarbleConvertToByteData(const float* source, - unsigned char* destination, + void FarbleConvertToByteData(const AudioFloatArray& source, + base::span& destination, size_t len, double min_decibels, double range_scale_factor) const; - void FarbleConvertFloatToDb(const float* source, - float* destination, + void FarbleConvertFloatToDb(const AudioFloatArray& source, + base::span& destination, size_t len) const; private: