| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 NOTREACHED(); | 141 NOTREACHED(); |
| 142 return "UnknownNode.unknownAudioParam"; | 142 return "UnknownNode.unknownAudioParam"; |
| 143 } | 143 } |
| 144 | 144 |
| 145 float AudioParamHandler::value() | 145 float AudioParamHandler::value() |
| 146 { | 146 { |
| 147 // Update value for timeline. | 147 // Update value for timeline. |
| 148 float v = intrinsicValue(); | 148 float v = intrinsicValue(); |
| 149 if (deferredTaskHandler().isAudioThread()) { | 149 if (deferredTaskHandler().isAudioThread()) { |
| 150 bool hasValue; | 150 bool hasValue; |
| 151 float timelineValue = m_timeline.valueForContextTime(destinationHandler(
), v, hasValue); | 151 float timelineValue = m_timeline.valueForContextTime(destinationHandler(
), v, hasValue, minValue(), maxValue()); |
| 152 | 152 |
| 153 if (hasValue) | 153 if (hasValue) |
| 154 v = timelineValue; | 154 v = timelineValue; |
| 155 } | 155 } |
| 156 | 156 |
| 157 setIntrinsicValue(v); | 157 setIntrinsicValue(v); |
| 158 return v; | 158 return v; |
| 159 } | 159 } |
| 160 | 160 |
| 161 void AudioParamHandler::setIntrinsicValue(float newValue) | 161 void AudioParamHandler::setIntrinsicValue(float newValue) |
| (...skipping 11 matching lines...) Expand all Loading... |
| 173 float AudioParamHandler::smoothedValue() | 173 float AudioParamHandler::smoothedValue() |
| 174 { | 174 { |
| 175 return m_smoothedValue; | 175 return m_smoothedValue; |
| 176 } | 176 } |
| 177 | 177 |
| 178 bool AudioParamHandler::smooth() | 178 bool AudioParamHandler::smooth() |
| 179 { | 179 { |
| 180 // If values have been explicitly scheduled on the timeline, then use the ex
act value. | 180 // If values have been explicitly scheduled on the timeline, then use the ex
act value. |
| 181 // Smoothing effectively is performed by the timeline. | 181 // Smoothing effectively is performed by the timeline. |
| 182 bool useTimelineValue = false; | 182 bool useTimelineValue = false; |
| 183 float value = m_timeline.valueForContextTime(destinationHandler(), intrinsic
Value(), useTimelineValue); | 183 float value = m_timeline.valueForContextTime(destinationHandler(), intrinsic
Value(), useTimelineValue, minValue(), maxValue()); |
| 184 | 184 |
| 185 if (m_smoothedValue == value) { | 185 if (m_smoothedValue == value) { |
| 186 // Smoothed value has already approached and snapped to value. | 186 // Smoothed value has already approached and snapped to value. |
| 187 setIntrinsicValue(value); | 187 setIntrinsicValue(value); |
| 188 return true; | 188 return true; |
| 189 } | 189 } |
| 190 | 190 |
| 191 if (useTimelineValue) { | 191 if (useTimelineValue) { |
| 192 m_smoothedValue = value; | 192 m_smoothedValue = value; |
| 193 } else { | 193 } else { |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 | 231 |
| 232 // The calculated result will be the "intrinsic" value summed with all audio
-rate connections. | 232 // The calculated result will be the "intrinsic" value summed with all audio
-rate connections. |
| 233 | 233 |
| 234 if (sampleAccurate) { | 234 if (sampleAccurate) { |
| 235 // Calculate sample-accurate (a-rate) intrinsic values. | 235 // Calculate sample-accurate (a-rate) intrinsic values. |
| 236 calculateTimelineValues(values, numberOfValues); | 236 calculateTimelineValues(values, numberOfValues); |
| 237 } else { | 237 } else { |
| 238 // Calculate control-rate (k-rate) intrinsic value. | 238 // Calculate control-rate (k-rate) intrinsic value. |
| 239 bool hasValue; | 239 bool hasValue; |
| 240 float value = intrinsicValue(); | 240 float value = intrinsicValue(); |
| 241 float timelineValue = m_timeline.valueForContextTime(destinationHandler(
), value, hasValue); | 241 float timelineValue = m_timeline.valueForContextTime(destinationHandler(
), value, hasValue, minValue(), maxValue()); |
| 242 | 242 |
| 243 if (hasValue) | 243 if (hasValue) |
| 244 value = timelineValue; | 244 value = timelineValue; |
| 245 | 245 |
| 246 values[0] = value; | 246 values[0] = value; |
| 247 setIntrinsicValue(value); | 247 setIntrinsicValue(value); |
| 248 } | 248 } |
| 249 | 249 |
| 250 // Now sum all of the audio-rate connections together (unity-gain summing ju
nction). | 250 // Now sum all of the audio-rate connections together (unity-gain summing ju
nction). |
| 251 // Note that connections would normally be mono, but we mix down to mono if
necessary. | 251 // Note that connections would normally be mono, but we mix down to mono if
necessary. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 267 void AudioParamHandler::calculateTimelineValues(float* values, unsigned numberOf
Values) | 267 void AudioParamHandler::calculateTimelineValues(float* values, unsigned numberOf
Values) |
| 268 { | 268 { |
| 269 // Calculate values for this render quantum. Normally numberOfValues will | 269 // Calculate values for this render quantum. Normally numberOfValues will |
| 270 // equal to AudioHandler::ProcessingSizeInFrames (the render quantum size). | 270 // equal to AudioHandler::ProcessingSizeInFrames (the render quantum size). |
| 271 double sampleRate = destinationHandler().sampleRate(); | 271 double sampleRate = destinationHandler().sampleRate(); |
| 272 size_t startFrame = destinationHandler().currentSampleFrame(); | 272 size_t startFrame = destinationHandler().currentSampleFrame(); |
| 273 size_t endFrame = startFrame + numberOfValues; | 273 size_t endFrame = startFrame + numberOfValues; |
| 274 | 274 |
| 275 // Note we're running control rate at the sample-rate. | 275 // Note we're running control rate at the sample-rate. |
| 276 // Pass in the current value as default value. | 276 // Pass in the current value as default value. |
| 277 setIntrinsicValue(m_timeline.valuesForFrameRange(startFrame, endFrame, intri
nsicValue(), values, numberOfValues, sampleRate, sampleRate)); | 277 setIntrinsicValue(m_timeline.valuesForFrameRange(startFrame, endFrame, intri
nsicValue(), values, numberOfValues, sampleRate, sampleRate, minValue(), maxValu
e())); |
| 278 } | 278 } |
| 279 | 279 |
| 280 void AudioParamHandler::connect(AudioNodeOutput& output) | 280 void AudioParamHandler::connect(AudioNodeOutput& output) |
| 281 { | 281 { |
| 282 ASSERT(deferredTaskHandler().isGraphOwner()); | 282 ASSERT(deferredTaskHandler().isGraphOwner()); |
| 283 | 283 |
| 284 if (m_outputs.contains(&output)) | 284 if (m_outputs.contains(&output)) |
| 285 return; | 285 return; |
| 286 | 286 |
| 287 output.addParam(*this); | 287 output.addParam(*this); |
| (...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 } | 496 } |
| 497 | 497 |
| 498 AudioParam* AudioParam::cancelScheduledValues(double startTime, ExceptionState&
exceptionState) | 498 AudioParam* AudioParam::cancelScheduledValues(double startTime, ExceptionState&
exceptionState) |
| 499 { | 499 { |
| 500 handler().timeline().cancelScheduledValues(startTime, exceptionState); | 500 handler().timeline().cancelScheduledValues(startTime, exceptionState); |
| 501 return this; | 501 return this; |
| 502 } | 502 } |
| 503 | 503 |
| 504 } // namespace blink | 504 } // namespace blink |
| 505 | 505 |
| OLD | NEW |