| 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 "media/audio/audio_output_device.h" | 5 #include "media/audio/audio_output_device.h" |
| 6 | 6 |
| 7 #include "base/threading/thread_restrictions.h" | 7 #include "base/threading/thread_restrictions.h" |
| 8 #include "base/time/time.h" | 8 #include "base/time/time.h" |
| 9 #include "base/trace_event/trace_event.h" | 9 #include "base/trace_event/trace_event.h" |
| 10 #include "media/audio/audio_output_controller.h" | 10 #include "media/audio/audio_output_controller.h" |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 audio_callback_.reset(); | 172 audio_callback_.reset(); |
| 173 stopping_hack_ = false; | 173 stopping_hack_ = false; |
| 174 } | 174 } |
| 175 | 175 |
| 176 void AudioOutputDevice::SetVolumeOnIOThread(double volume) { | 176 void AudioOutputDevice::SetVolumeOnIOThread(double volume) { |
| 177 DCHECK(task_runner()->BelongsToCurrentThread()); | 177 DCHECK(task_runner()->BelongsToCurrentThread()); |
| 178 if (state_ >= CREATING_STREAM) | 178 if (state_ >= CREATING_STREAM) |
| 179 ipc_->SetVolume(volume); | 179 ipc_->SetVolume(volume); |
| 180 } | 180 } |
| 181 | 181 |
| 182 void AudioOutputDevice::OnStateChanged(AudioOutputIPCDelegate::State state) { | 182 void AudioOutputDevice::OnStateChanged(AudioOutputIPCDelegateState state) { |
| 183 DCHECK(task_runner()->BelongsToCurrentThread()); | 183 DCHECK(task_runner()->BelongsToCurrentThread()); |
| 184 | 184 |
| 185 // Do nothing if the stream has been closed. | 185 // Do nothing if the stream has been closed. |
| 186 if (state_ < CREATING_STREAM) | 186 if (state_ < CREATING_STREAM) |
| 187 return; | 187 return; |
| 188 | 188 |
| 189 // TODO(miu): Clean-up inconsistent and incomplete handling here. | 189 // TODO(miu): Clean-up inconsistent and incomplete handling here. |
| 190 // http://crbug.com/180640 | 190 // http://crbug.com/180640 |
| 191 switch (state) { | 191 switch (state) { |
| 192 case AudioOutputIPCDelegate::kPlaying: | 192 case AUDIO_OUTPUT_IPC_DELEGATE_STATE_PLAYING: |
| 193 case AudioOutputIPCDelegate::kPaused: | 193 case AUDIO_OUTPUT_IPC_DELEGATE_STATE_PAUSED: |
| 194 break; | 194 break; |
| 195 case AudioOutputIPCDelegate::kError: | 195 case AUDIO_OUTPUT_IPC_DELEGATE_STATE_ERROR: |
| 196 DLOG(WARNING) << "AudioOutputDevice::OnStateChanged(kError)"; | 196 DLOG(WARNING) << "AudioOutputDevice::OnStateChanged(ERROR)"; |
| 197 // Don't dereference the callback object if the audio thread | 197 // Don't dereference the callback object if the audio thread |
| 198 // is stopped or stopping. That could mean that the callback | 198 // is stopped or stopping. That could mean that the callback |
| 199 // object has been deleted. | 199 // object has been deleted. |
| 200 // TODO(tommi): Add an explicit contract for clearing the callback | 200 // TODO(tommi): Add an explicit contract for clearing the callback |
| 201 // object. Possibly require calling Initialize again or provide | 201 // object. Possibly require calling Initialize again or provide |
| 202 // a callback object via Start() and clear it in Stop(). | 202 // a callback object via Start() and clear it in Stop(). |
| 203 if (!audio_thread_.IsStopped()) | 203 if (!audio_thread_.IsStopped()) |
| 204 callback_->OnRenderError(); | 204 callback_->OnRenderError(); |
| 205 break; | 205 break; |
| 206 default: | 206 default: |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 304 TRACE_EVENT_ASYNC_END0("audio", "StartingPlayback", this); | 304 TRACE_EVENT_ASYNC_END0("audio", "StartingPlayback", this); |
| 305 } | 305 } |
| 306 | 306 |
| 307 // Update the audio-delay measurement then ask client to render audio. Since | 307 // Update the audio-delay measurement then ask client to render audio. Since |
| 308 // |output_bus_| is wrapping the shared memory the Render() call is writing | 308 // |output_bus_| is wrapping the shared memory the Render() call is writing |
| 309 // directly into the shared memory. | 309 // directly into the shared memory. |
| 310 render_callback_->Render(output_bus_.get(), audio_delay_milliseconds); | 310 render_callback_->Render(output_bus_.get(), audio_delay_milliseconds); |
| 311 } | 311 } |
| 312 | 312 |
| 313 } // namespace media. | 313 } // namespace media. |
| OLD | NEW |