| Index: content/browser/media/audio_output_impl.cc
|
| diff --git a/content/browser/media/audio_output_impl.cc b/content/browser/media/audio_output_impl.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0cc42af283b54397a032d5b3d176b762e9adb1d8
|
| --- /dev/null
|
| +++ b/content/browser/media/audio_output_impl.cc
|
| @@ -0,0 +1,94 @@
|
| +// Copyright 2016 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "content/browser/media/audio_output_impl.h"
|
| +#include "media/mojo/common/media_type_converters.h"
|
| +
|
| +namespace content {
|
| +
|
| +AudioOutputStreamImpl::AudioOutputStreamImpl(
|
| + media::mojom::AudioOutputStreamRequest request,
|
| + int stream_id,
|
| + AudioRendererHost* audio_renderer_host)
|
| + : binding_(this, std::move(request)),
|
| + stream_id_(stream_id),
|
| + audio_renderer_host_(audio_renderer_host) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| +}
|
| +
|
| +AudioOutputStreamImpl::~AudioOutputStreamImpl() {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| +}
|
| +
|
| +void AudioOutputStreamImpl::Close() {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| +
|
| + audio_renderer_host_->OnCloseStream(stream_id_);
|
| +}
|
| +
|
| +AudioOutputImpl::AudioOutputImpl(
|
| + scoped_refptr<AudioRendererHost> audio_renderer_host,
|
| + media::mojom::AudioOutputRequest request)
|
| + : audio_renderer_host_(audio_renderer_host.get()), binding_(this) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| +
|
| + binding_.Bind(std::move(request));
|
| +}
|
| +
|
| +AudioOutputImpl::~AudioOutputImpl() {}
|
| +
|
| +// static
|
| +void AudioOutputImpl::CreateService(
|
| + scoped_refptr<AudioRendererHost> audio_renderer_host,
|
| + media::mojom::AudioOutputRequest request) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| +
|
| + BrowserThread::PostTask(
|
| + BrowserThread::IO, FROM_HERE,
|
| + base::Bind(&AudioOutputImpl::CreateServiceOnIOThread, audio_renderer_host,
|
| + base::Passed(&request)));
|
| +}
|
| +
|
| +// static
|
| +void AudioOutputImpl::CreateServiceOnIOThread(
|
| + scoped_refptr<AudioRendererHost> audio_renderer_host,
|
| + media::mojom::AudioOutputRequest request) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| +
|
| + auto service = new AudioOutputImpl(audio_renderer_host, std::move(request));
|
| + audio_renderer_host->audio_output_impl_ = service;
|
| +}
|
| +
|
| +void AudioOutputImpl::CreateStream(
|
| + int stream_id,
|
| + int render_frame_id,
|
| + media::interfaces::AudioParametersPtr params,
|
| + const CreateStreamCallback& callback) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| +
|
| + media::mojom::AudioOutputStreamPtr stream;
|
| + media::AudioParameters audio_params =
|
| + mojo::ConvertTo<media::AudioParameters>(params);
|
| + audio_renderer_host_->CreateStream(stream_id, render_frame_id, audio_params,
|
| + callback);
|
| +}
|
| +
|
| +media::mojom::AudioOutputStreamPtr AudioOutputImpl::StreamFactory(
|
| + int stream_id,
|
| + AudioRendererHost* audio_renderer_host) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| +
|
| + media::mojom::AudioOutputStreamPtr stream =
|
| + media::mojom::AudioOutputStreamPtr();
|
| + std::unique_ptr<AudioOutputStreamImpl> stream_ptr(new AudioOutputStreamImpl(
|
| + mojo::GetProxy(&stream), stream_id, audio_renderer_host));
|
| +
|
| + auto ret = stream_impls_.insert(
|
| + std::pair<int, std::unique_ptr<AudioOutputStreamImpl>>(
|
| + stream_id, std::move(stream_ptr)));
|
| + DCHECK(ret.second);
|
| + return stream;
|
| +}
|
| +
|
| +} // namespace content
|
|
|