summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/webaudio/constant_source_node.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/webaudio/constant_source_node.cc')
-rw-r--r--chromium/third_party/blink/renderer/modules/webaudio/constant_source_node.cc31
1 files changed, 17 insertions, 14 deletions
diff --git a/chromium/third_party/blink/renderer/modules/webaudio/constant_source_node.cc b/chromium/third_party/blink/renderer/modules/webaudio/constant_source_node.cc
index 77e91a7f98b..075b2802a57 100644
--- a/chromium/third_party/blink/renderer/modules/webaudio/constant_source_node.cc
+++ b/chromium/third_party/blink/renderer/modules/webaudio/constant_source_node.cc
@@ -6,8 +6,8 @@
#include <algorithm>
+#include "third_party/blink/renderer/bindings/modules/v8/v8_constant_source_options.h"
#include "third_party/blink/renderer/modules/webaudio/audio_node_output.h"
-#include "third_party/blink/renderer/modules/webaudio/constant_source_options.h"
#include "third_party/blink/renderer/platform/audio/audio_utilities.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/wtf/math_extras.h"
@@ -70,7 +70,9 @@ void ConstantSourceHandler::Process(uint32_t frames_to_process) {
return;
}
- if (offset_->HasSampleAccurateValues()) {
+ bool is_sample_accurate = offset_->HasSampleAccurateValuesTimeline();
+
+ if (is_sample_accurate && offset_->IsAudioRate()) {
DCHECK_LE(frames_to_process, sample_accurate_values_.size());
float* offsets = sample_accurate_values_.Data();
offset_->CalculateSampleAccurateValues(offsets, frames_to_process);
@@ -82,19 +84,20 @@ void ConstantSourceHandler::Process(uint32_t frames_to_process) {
} else {
output_bus->Zero();
}
- } else {
- float value = offset_->Value();
- if (value == 0) {
- output_bus->Zero();
- } else {
- float* dest = output_bus->Channel(0)->MutableData();
- dest += quantum_frame_offset;
- for (unsigned k = 0; k < non_silent_frames_to_process; ++k) {
- dest[k] = value;
- }
- output_bus->ClearSilentFlag();
+ return;
+ }
+
+ float value = is_sample_accurate ? offset_->FinalValue() : offset_->Value();
+ if (value == 0) {
+ output_bus->Zero();
+ } else {
+ float* dest = output_bus->Channel(0)->MutableData();
+ dest += quantum_frame_offset;
+ for (unsigned k = 0; k < non_silent_frames_to_process; ++k) {
+ dest[k] = value;
}
+ output_bus->ClearSilentFlag();
}
}
@@ -153,7 +156,7 @@ ConstantSourceNode* ConstantSourceNode::Create(
return node;
}
-void ConstantSourceNode::Trace(blink::Visitor* visitor) {
+void ConstantSourceNode::Trace(Visitor* visitor) {
visitor->Trace(offset_);
AudioScheduledSourceNode::Trace(visitor);
}