OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chromecast/renderer/media/audio_pipeline_proxy.h" | 5 #include "chromecast/renderer/media/audio_pipeline_proxy.h" |
6 | 6 |
| 7 #include <utility> |
| 8 |
7 #include "base/bind.h" | 9 #include "base/bind.h" |
8 #include "base/callback_helpers.h" | 10 #include "base/callback_helpers.h" |
9 #include "base/macros.h" | 11 #include "base/macros.h" |
10 #include "base/memory/shared_memory.h" | 12 #include "base/memory/shared_memory.h" |
11 #include "base/message_loop/message_loop.h" | 13 #include "base/message_loop/message_loop.h" |
12 #include "base/threading/thread_checker.h" | 14 #include "base/threading/thread_checker.h" |
13 #include "chromecast/common/media/cma_messages.h" | 15 #include "chromecast/common/media/cma_messages.h" |
14 #include "chromecast/common/media/shared_memory_chunk.h" | 16 #include "chromecast/common/media/shared_memory_chunk.h" |
15 #include "chromecast/media/cma/base/buffering_defs.h" | 17 #include "chromecast/media/cma/base/buffering_defs.h" |
16 #include "chromecast/media/cma/base/cma_logging.h" | 18 #include "chromecast/media/cma/base/cma_logging.h" |
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
227 base::Bind(&AudioPipelineProxy::OnPipeRead, weak_this_)); | 229 base::Bind(&AudioPipelineProxy::OnPipeRead, weak_this_)); |
228 FORWARD_ON_IO_THREAD(SetClient, pipe_read_cb, client); | 230 FORWARD_ON_IO_THREAD(SetClient, pipe_read_cb, client); |
229 } | 231 } |
230 | 232 |
231 void AudioPipelineProxy::Initialize( | 233 void AudioPipelineProxy::Initialize( |
232 const ::media::AudioDecoderConfig& config, | 234 const ::media::AudioDecoderConfig& config, |
233 scoped_ptr<CodedFrameProvider> frame_provider, | 235 scoped_ptr<CodedFrameProvider> frame_provider, |
234 const ::media::PipelineStatusCB& status_cb) { | 236 const ::media::PipelineStatusCB& status_cb) { |
235 CMALOG(kLogControl) << "AudioPipelineProxy::Initialize"; | 237 CMALOG(kLogControl) << "AudioPipelineProxy::Initialize"; |
236 DCHECK(thread_checker_.CalledOnValidThread()); | 238 DCHECK(thread_checker_.CalledOnValidThread()); |
237 audio_streamer_->SetCodedFrameProvider(frame_provider.Pass()); | 239 audio_streamer_->SetCodedFrameProvider(std::move(frame_provider)); |
238 | 240 |
239 AudioPipelineProxyInternal::SharedMemCB shared_mem_cb = | 241 AudioPipelineProxyInternal::SharedMemCB shared_mem_cb = |
240 ::media::BindToCurrentLoop(base::Bind( | 242 ::media::BindToCurrentLoop(base::Bind( |
241 &AudioPipelineProxy::OnAvPipeCreated, weak_this_, | 243 &AudioPipelineProxy::OnAvPipeCreated, weak_this_, |
242 config, status_cb)); | 244 config, status_cb)); |
243 FORWARD_ON_IO_THREAD(CreateAvPipe, shared_mem_cb); | 245 FORWARD_ON_IO_THREAD(CreateAvPipe, shared_mem_cb); |
244 } | 246 } |
245 | 247 |
246 void AudioPipelineProxy::OnAvPipeCreated( | 248 void AudioPipelineProxy::OnAvPipeCreated( |
247 const ::media::AudioDecoderConfig& config, | 249 const ::media::AudioDecoderConfig& config, |
248 const ::media::PipelineStatusCB& status_cb, | 250 const ::media::PipelineStatusCB& status_cb, |
249 scoped_ptr<base::SharedMemory> shared_memory) { | 251 scoped_ptr<base::SharedMemory> shared_memory) { |
250 CMALOG(kLogControl) << "AudioPipelineProxy::OnAvPipeCreated"; | 252 CMALOG(kLogControl) << "AudioPipelineProxy::OnAvPipeCreated"; |
251 DCHECK(thread_checker_.CalledOnValidThread()); | 253 DCHECK(thread_checker_.CalledOnValidThread()); |
252 if (!shared_memory || | 254 if (!shared_memory || |
253 !shared_memory->Map(kAppAudioBufferSize)) { | 255 !shared_memory->Map(kAppAudioBufferSize)) { |
254 status_cb.Run(::media::PIPELINE_ERROR_INITIALIZATION_FAILED); | 256 status_cb.Run(::media::PIPELINE_ERROR_INITIALIZATION_FAILED); |
255 return; | 257 return; |
256 } | 258 } |
257 CHECK(shared_memory->memory()); | 259 CHECK(shared_memory->memory()); |
258 | 260 |
259 scoped_ptr<MediaMemoryChunk> shared_memory_chunk( | 261 scoped_ptr<MediaMemoryChunk> shared_memory_chunk( |
260 new SharedMemoryChunk(shared_memory.Pass(), kAppAudioBufferSize)); | 262 new SharedMemoryChunk(std::move(shared_memory), kAppAudioBufferSize)); |
261 scoped_ptr<MediaMessageFifo> audio_pipe( | 263 scoped_ptr<MediaMessageFifo> audio_pipe( |
262 new MediaMessageFifo(shared_memory_chunk.Pass(), false)); | 264 new MediaMessageFifo(std::move(shared_memory_chunk), false)); |
263 audio_pipe->ObserveWriteActivity( | 265 audio_pipe->ObserveWriteActivity( |
264 base::Bind(&AudioPipelineProxy::OnPipeWrite, weak_this_)); | 266 base::Bind(&AudioPipelineProxy::OnPipeWrite, weak_this_)); |
265 | 267 |
266 audio_streamer_->SetMediaMessageFifo(audio_pipe.Pass()); | 268 audio_streamer_->SetMediaMessageFifo(std::move(audio_pipe)); |
267 | 269 |
268 // Now proceed to the decoder/renderer initialization. | 270 // Now proceed to the decoder/renderer initialization. |
269 FORWARD_ON_IO_THREAD(Initialize, config, status_cb); | 271 FORWARD_ON_IO_THREAD(Initialize, config, status_cb); |
270 } | 272 } |
271 | 273 |
272 void AudioPipelineProxy::StartFeeding() { | 274 void AudioPipelineProxy::StartFeeding() { |
273 DCHECK(thread_checker_.CalledOnValidThread()); | 275 DCHECK(thread_checker_.CalledOnValidThread()); |
274 DCHECK(audio_streamer_); | 276 DCHECK(audio_streamer_); |
275 audio_streamer_->Start(); | 277 audio_streamer_->Start(); |
276 } | 278 } |
(...skipping 22 matching lines...) Expand all Loading... |
299 } | 301 } |
300 | 302 |
301 void AudioPipelineProxy::OnPipeRead() { | 303 void AudioPipelineProxy::OnPipeRead() { |
302 DCHECK(thread_checker_.CalledOnValidThread()); | 304 DCHECK(thread_checker_.CalledOnValidThread()); |
303 if (audio_streamer_) | 305 if (audio_streamer_) |
304 audio_streamer_->OnFifoReadEvent(); | 306 audio_streamer_->OnFifoReadEvent(); |
305 } | 307 } |
306 | 308 |
307 } // namespace cma | 309 } // namespace cma |
308 } // namespace chromecast | 310 } // namespace chromecast |
OLD | NEW |