Changeset 122630 in webkit
- Timestamp:
- Jul 13, 2012 2:10:37 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 4 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r122628 r122630 1 2012-07-13 Raymond Toy <rtoy@google.com> 2 3 DelayNode doesn't work if delayTime.value == delayTime.maxValue 4 https://bugs.webkit.org/show_bug.cgi?id=90357 5 6 Reviewed by Kenneth Russell. 7 8 New tests to test the case when the delay node delay equals the 9 maximum allowed delay. Add one test for the default maximum delay 10 and a second test with a user-set maximum delay. 11 12 * webaudio/delaynode-max-default-delay-expected.txt: Added. 13 * webaudio/delaynode-max-default-delay.html: Added. 14 * webaudio/delaynode-max-nondefault-delay-expected.txt: Added. 15 * webaudio/delaynode-max-nondefault-delay.html: Added. 16 1 17 2012-07-13 Vineet Chaudhary <rgf748@motorola.com> 2 18 -
trunk/Source/WebCore/ChangeLog
r122629 r122630 1 2012-07-13 Raymond Toy <rtoy@google.com> 2 3 DelayNode doesn't work if delayTime.value == delayTime.maxValue 4 https://bugs.webkit.org/show_bug.cgi?id=90357 5 6 Reviewed by Kenneth Russell. 7 8 Increase delay buffer size slightly so that the read and write 9 pointers don't become equal when the delay and the max delay are 10 the same. 11 12 Tests: webaudio/delaynode-max-default-delay.html 13 webaudio/delaynode-max-nondefault-delay.html 14 15 * Modules/webaudio/DelayDSPKernel.cpp: 16 (WebCore): Moved SmoothingTimeConstant to WebCore namespace. 17 (WebCore::DelayDSPKernel::DelayDSPKernel): Add some additional checks to prevent crashes; use bufferLengthForDelay to compute buffer length. 18 (WebCore::DelayDSPKernel::bufferLengthForDelay): New function to compute buffer length. 19 * Modules/webaudio/DelayDSPKernel.h: 20 (DelayDSPKernel): Declare bufferLengthForDelay. 21 1 22 2012-07-13 Benjamin Poulain <bpoulain@apple.com> 2 23 -
trunk/Source/WebCore/Modules/webaudio/DelayDSPKernel.cpp
r111474 r122630 34 34 using namespace std; 35 35 36 namespace WebCore { 37 36 38 const float SmoothingTimeConstant = 0.020f; // 20ms 37 38 namespace WebCore {39 39 40 40 DelayDSPKernel::DelayDSPKernel(DelayProcessor* processor) … … 44 44 { 45 45 ASSERT(processor && processor->sampleRate() > 0); 46 if (! processor)46 if (!(processor && processor->sampleRate() > 0)) 47 47 return; 48 48 49 49 m_maxDelayTime = processor->maxDelayTime(); 50 m_buffer.allocate(static_cast<size_t>(processor->sampleRate() * m_maxDelayTime)); 50 ASSERT(m_maxDelayTime >= 0); 51 if (m_maxDelayTime < 0) 52 return; 53 54 m_buffer.allocate(bufferLengthForDelay(m_maxDelayTime, processor->sampleRate())); 51 55 m_buffer.zero(); 52 56 … … 64 68 return; 65 69 66 size_t bufferLength = static_cast<size_t>(sampleRate * maxDelayTime);70 size_t bufferLength = bufferLengthForDelay(maxDelayTime, sampleRate); 67 71 ASSERT(bufferLength); 68 72 if (!bufferLength) … … 73 77 74 78 m_smoothingRate = AudioUtilities::discreteTimeConstantForSampleRate(SmoothingTimeConstant, sampleRate); 79 } 80 81 size_t DelayDSPKernel::bufferLengthForDelay(double maxDelayTime, double sampleRate) const 82 { 83 // Compute the length of the buffer needed to handle a max delay of |maxDelayTime|. One is 84 // added to handle the case where the actual delay equals the maximum delay. 85 return 1 + AudioUtilities::timeToSampleFrame(maxDelayTime, sampleRate); 75 86 } 76 87 -
trunk/Source/WebCore/Modules/webaudio/DelayDSPKernel.h
r111474 r122630 59 59 60 60 DelayProcessor* delayProcessor() { return static_cast<DelayProcessor*>(processor()); } 61 size_t bufferLengthForDelay(double delayTime, double sampleRate) const; 61 62 }; 62 63
Note: See TracChangeset
for help on using the changeset viewer.