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 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 size_t bufferSize = 1 << static_cast<unsigned>(log2(4 * hardwareBufferSize)
+ 0.5); | 49 size_t bufferSize = 1 << static_cast<unsigned>(log2(4 * hardwareBufferSize)
+ 0.5); |
50 | 50 |
51 if (bufferSize < 256) | 51 if (bufferSize < 256) |
52 return 256; | 52 return 256; |
53 if (bufferSize > 16384) | 53 if (bufferSize > 16384) |
54 return 16384; | 54 return 16384; |
55 | 55 |
56 return bufferSize; | 56 return bufferSize; |
57 } | 57 } |
58 | 58 |
59 PassRefPtr<ScriptProcessorNode> ScriptProcessorNode::create(AudioContext* contex
t, float sampleRate, size_t bufferSize, unsigned numberOfInputChannels, unsigned
numberOfOutputChannels) | 59 PassRefPtrWillBeRawPtr<ScriptProcessorNode> ScriptProcessorNode::create(AudioCon
text* context, float sampleRate, size_t bufferSize, unsigned numberOfInputChanne
ls, unsigned numberOfOutputChannels) |
60 { | 60 { |
61 // Check for valid buffer size. | 61 // Check for valid buffer size. |
62 switch (bufferSize) { | 62 switch (bufferSize) { |
63 case 0: | 63 case 0: |
64 bufferSize = chooseBufferSize(); | 64 bufferSize = chooseBufferSize(); |
65 break; | 65 break; |
66 case 256: | 66 case 256: |
67 case 512: | 67 case 512: |
68 case 1024: | 68 case 1024: |
69 case 2048: | 69 case 2048: |
70 case 4096: | 70 case 4096: |
71 case 8192: | 71 case 8192: |
72 case 16384: | 72 case 16384: |
73 break; | 73 break; |
74 default: | 74 default: |
75 return nullptr; | 75 return nullptr; |
76 } | 76 } |
77 | 77 |
78 if (!numberOfInputChannels && !numberOfOutputChannels) | 78 if (!numberOfInputChannels && !numberOfOutputChannels) |
79 return nullptr; | 79 return nullptr; |
80 | 80 |
81 if (numberOfInputChannels > AudioContext::maxNumberOfChannels()) | 81 if (numberOfInputChannels > AudioContext::maxNumberOfChannels()) |
82 return nullptr; | 82 return nullptr; |
83 | 83 |
84 if (numberOfOutputChannels > AudioContext::maxNumberOfChannels()) | 84 if (numberOfOutputChannels > AudioContext::maxNumberOfChannels()) |
85 return nullptr; | 85 return nullptr; |
86 | 86 |
87 return adoptRef(new ScriptProcessorNode(context, sampleRate, bufferSize, num
berOfInputChannels, numberOfOutputChannels)); | 87 return adoptRefWillBeNoop(new ScriptProcessorNode(context, sampleRate, buffe
rSize, numberOfInputChannels, numberOfOutputChannels)); |
88 } | 88 } |
89 | 89 |
90 ScriptProcessorNode::ScriptProcessorNode(AudioContext* context, float sampleRate
, size_t bufferSize, unsigned numberOfInputChannels, unsigned numberOfOutputChan
nels) | 90 ScriptProcessorNode::ScriptProcessorNode(AudioContext* context, float sampleRate
, size_t bufferSize, unsigned numberOfInputChannels, unsigned numberOfOutputChan
nels) |
91 : AudioNode(context, sampleRate) | 91 : AudioNode(context, sampleRate) |
92 , m_doubleBufferIndex(0) | 92 , m_doubleBufferIndex(0) |
93 , m_doubleBufferIndexForEvent(0) | 93 , m_doubleBufferIndexForEvent(0) |
94 , m_bufferSize(bufferSize) | 94 , m_bufferSize(bufferSize) |
95 , m_bufferReadWriteIndex(0) | 95 , m_bufferReadWriteIndex(0) |
96 , m_isRequestOutstanding(false) | 96 , m_isRequestOutstanding(false) |
97 , m_numberOfInputChannels(numberOfInputChannels) | 97 , m_numberOfInputChannels(numberOfInputChannels) |
(...skipping 23 matching lines...) Expand all Loading... |
121 void ScriptProcessorNode::initialize() | 121 void ScriptProcessorNode::initialize() |
122 { | 122 { |
123 if (isInitialized()) | 123 if (isInitialized()) |
124 return; | 124 return; |
125 | 125 |
126 float sampleRate = context()->sampleRate(); | 126 float sampleRate = context()->sampleRate(); |
127 | 127 |
128 // Create double buffers on both the input and output sides. | 128 // Create double buffers on both the input and output sides. |
129 // These AudioBuffers will be directly accessed in the main thread by JavaSc
ript. | 129 // These AudioBuffers will be directly accessed in the main thread by JavaSc
ript. |
130 for (unsigned i = 0; i < 2; ++i) { | 130 for (unsigned i = 0; i < 2; ++i) { |
131 RefPtr<AudioBuffer> inputBuffer = m_numberOfInputChannels ? AudioBuffer:
:create(m_numberOfInputChannels, bufferSize(), sampleRate) : nullptr; | 131 RefPtrWillBeRawPtr<AudioBuffer> inputBuffer = m_numberOfInputChannels ?
AudioBuffer::create(m_numberOfInputChannels, bufferSize(), sampleRate) : nullptr
; |
132 RefPtr<AudioBuffer> outputBuffer = m_numberOfOutputChannels ? AudioBuffe
r::create(m_numberOfOutputChannels, bufferSize(), sampleRate) : nullptr; | 132 RefPtrWillBeRawPtr<AudioBuffer> outputBuffer = m_numberOfOutputChannels
? AudioBuffer::create(m_numberOfOutputChannels, bufferSize(), sampleRate) : null
ptr; |
133 | 133 |
134 m_inputBuffers.append(inputBuffer); | 134 m_inputBuffers.append(inputBuffer); |
135 m_outputBuffers.append(outputBuffer); | 135 m_outputBuffers.append(outputBuffer); |
136 } | 136 } |
137 | 137 |
138 AudioNode::initialize(); | 138 AudioNode::initialize(); |
139 } | 139 } |
140 | 140 |
141 void ScriptProcessorNode::uninitialize() | 141 void ScriptProcessorNode::uninitialize() |
142 { | 142 { |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 } | 276 } |
277 | 277 |
278 double ScriptProcessorNode::latencyTime() const | 278 double ScriptProcessorNode::latencyTime() const |
279 { | 279 { |
280 return std::numeric_limits<double>::infinity(); | 280 return std::numeric_limits<double>::infinity(); |
281 } | 281 } |
282 | 282 |
283 } // namespace WebCore | 283 } // namespace WebCore |
284 | 284 |
285 #endif // ENABLE(WEB_AUDIO) | 285 #endif // ENABLE(WEB_AUDIO) |
OLD | NEW |