| 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 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 | 167 |
| 168 bool channels_are_good = | 168 bool channels_are_good = |
| 169 (number_of_input_channels == number_of_input_channels_) && | 169 (number_of_input_channels == number_of_input_channels_) && |
| 170 (number_of_output_channels == number_of_output_channels_); | 170 (number_of_output_channels == number_of_output_channels_); |
| 171 DCHECK(channels_are_good); | 171 DCHECK(channels_are_good); |
| 172 if (!channels_are_good) | 172 if (!channels_are_good) |
| 173 return; | 173 return; |
| 174 | 174 |
| 175 for (unsigned i = 0; i < number_of_input_channels; ++i) | 175 for (unsigned i = 0; i < number_of_input_channels; ++i) |
| 176 internal_input_bus_->SetChannelMemory( | 176 internal_input_bus_->SetChannelMemory( |
| 177 i, | 177 i, input_buffer->getChannelData(i)->Data() + buffer_read_write_index_, |
| 178 input_buffer->getChannelData(i).View()->Data() + | |
| 179 buffer_read_write_index_, | |
| 180 frames_to_process); | 178 frames_to_process); |
| 181 | 179 |
| 182 if (number_of_input_channels) | 180 if (number_of_input_channels) |
| 183 internal_input_bus_->CopyFrom(*input_bus); | 181 internal_input_bus_->CopyFrom(*input_bus); |
| 184 | 182 |
| 185 // Copy from the output buffer to the output. | 183 // Copy from the output buffer to the output. |
| 186 for (unsigned i = 0; i < number_of_output_channels; ++i) { | 184 for (unsigned i = 0; i < number_of_output_channels; ++i) |
| 187 memcpy(output_bus->Channel(i)->MutableData(), | 185 memcpy(output_bus->Channel(i)->MutableData(), |
| 188 output_buffer->getChannelData(i).View()->Data() + | 186 output_buffer->getChannelData(i)->Data() + buffer_read_write_index_, |
| 189 buffer_read_write_index_, | |
| 190 sizeof(float) * frames_to_process); | 187 sizeof(float) * frames_to_process); |
| 191 } | |
| 192 | 188 |
| 193 // Update the buffering index. | 189 // Update the buffering index. |
| 194 buffer_read_write_index_ = | 190 buffer_read_write_index_ = |
| 195 (buffer_read_write_index_ + frames_to_process) % BufferSize(); | 191 (buffer_read_write_index_ + frames_to_process) % BufferSize(); |
| 196 | 192 |
| 197 // m_bufferReadWriteIndex will wrap back around to 0 when the current input | 193 // m_bufferReadWriteIndex will wrap back around to 0 when the current input |
| 198 // and output buffers are full. | 194 // and output buffers are full. |
| 199 // When this happens, fire an event and swap buffers. | 195 // When this happens, fire an event and swap buffers. |
| 200 if (!buffer_read_write_index_) { | 196 if (!buffer_read_write_index_) { |
| 201 // Avoid building up requests on the main thread to fire process events when | 197 // Avoid building up requests on the main thread to fire process events when |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 | 488 |
| 493 // If |onaudioprocess| event handler is defined, the node should not be | 489 // If |onaudioprocess| event handler is defined, the node should not be |
| 494 // GCed even if it is out of scope. | 490 // GCed even if it is out of scope. |
| 495 if (HasEventListeners(EventTypeNames::audioprocess)) | 491 if (HasEventListeners(EventTypeNames::audioprocess)) |
| 496 return true; | 492 return true; |
| 497 | 493 |
| 498 return false; | 494 return false; |
| 499 } | 495 } |
| 500 | 496 |
| 501 } // namespace blink | 497 } // namespace blink |
| OLD | NEW |