OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ppapi/shared_impl/ppb_audio_shared.h" | 5 #include "ppapi/shared_impl/ppb_audio_shared.h" |
6 | 6 |
| 7 #include "base/debug/trace_event.h" |
7 #include "base/logging.h" | 8 #include "base/logging.h" |
8 #include "ppapi/nacl_irt/public/irt_ppapi.h" | 9 #include "ppapi/nacl_irt/public/irt_ppapi.h" |
9 #include "ppapi/shared_impl/ppapi_globals.h" | 10 #include "ppapi/shared_impl/ppapi_globals.h" |
10 #include "ppapi/shared_impl/ppb_audio_config_shared.h" | 11 #include "ppapi/shared_impl/ppb_audio_config_shared.h" |
11 #include "ppapi/shared_impl/proxy_lock.h" | 12 #include "ppapi/shared_impl/proxy_lock.h" |
12 | 13 |
13 namespace ppapi { | 14 namespace ppapi { |
14 | 15 |
15 namespace { | 16 namespace { |
16 bool g_nacl_mode = false; | 17 bool g_nacl_mode = false; |
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 void PPB_Audio_Shared::Run() { | 206 void PPB_Audio_Shared::Run() { |
206 int pending_data = 0; | 207 int pending_data = 0; |
207 while (sizeof(pending_data) == | 208 while (sizeof(pending_data) == |
208 socket_->Receive(&pending_data, sizeof(pending_data))) { | 209 socket_->Receive(&pending_data, sizeof(pending_data))) { |
209 // |buffer_index_| must track the number of Receive() calls. See the Send() | 210 // |buffer_index_| must track the number of Receive() calls. See the Send() |
210 // call below for why this is important. | 211 // call below for why this is important. |
211 ++buffer_index_; | 212 ++buffer_index_; |
212 if (pending_data < 0) | 213 if (pending_data < 0) |
213 break; | 214 break; |
214 | 215 |
215 PP_TimeDelta latency = | 216 { |
216 static_cast<double>(pending_data) / bytes_per_second_; | 217 TRACE_EVENT0("audio", "PPB_Audio_Shared::FireRenderCallback"); |
217 callback_.Run( | 218 PP_TimeDelta latency = |
218 client_buffer_.get(), client_buffer_size_bytes_, latency, user_data_); | 219 static_cast<double>(pending_data) / bytes_per_second_; |
| 220 callback_.Run( |
| 221 client_buffer_.get(), client_buffer_size_bytes_, latency, user_data_); |
| 222 } |
219 | 223 |
220 // Deinterleave the audio data into the shared memory as floats. | 224 // Deinterleave the audio data into the shared memory as floats. |
221 audio_bus_->FromInterleaved(client_buffer_.get(), | 225 audio_bus_->FromInterleaved(client_buffer_.get(), |
222 audio_bus_->frames(), | 226 audio_bus_->frames(), |
223 kBitsPerAudioOutputSample / 8); | 227 kBitsPerAudioOutputSample / 8); |
224 | 228 |
225 // Let the other end know which buffer we just filled. The buffer index is | 229 // Let the other end know which buffer we just filled. The buffer index is |
226 // used to ensure the other end is getting the buffer it expects. For more | 230 // used to ensure the other end is getting the buffer it expects. For more |
227 // details on how this works see AudioSyncReader::WaitUntilDataIsReady(). | 231 // details on how this works see AudioSyncReader::WaitUntilDataIsReady(). |
228 size_t bytes_sent = socket_->Send(&buffer_index_, sizeof(buffer_index_)); | 232 size_t bytes_sent = socket_->Send(&buffer_index_, sizeof(buffer_index_)); |
229 if (bytes_sent != sizeof(buffer_index_)) | 233 if (bytes_sent != sizeof(buffer_index_)) |
230 break; | 234 break; |
231 } | 235 } |
232 } | 236 } |
233 | 237 |
234 } // namespace ppapi | 238 } // namespace ppapi |
OLD | NEW |