| Index: content/renderer/media/webrtc/webrtc_audio_sink_adapter.cc
|
| diff --git a/content/renderer/media/webrtc/webrtc_audio_sink_adapter.cc b/content/renderer/media/webrtc/webrtc_audio_sink_adapter.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2679aff9648a438574fc06749be4af57b5e724fb
|
| --- /dev/null
|
| +++ b/content/renderer/media/webrtc/webrtc_audio_sink_adapter.cc
|
| @@ -0,0 +1,51 @@
|
| +// Copyright 2014 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 "base/logging.h"
|
| +#include "content/renderer/media/webrtc/webrtc_audio_sink_adapter.h"
|
| +#include "media/base/audio_bus.h"
|
| +#include "third_party/webrtc/api/mediastreaminterface.h"
|
| +
|
| +namespace content {
|
| +
|
| +WebRtcAudioSinkAdapter::WebRtcAudioSinkAdapter(
|
| + webrtc::AudioTrackSinkInterface* sink)
|
| + : sink_(sink) {
|
| + DCHECK(sink);
|
| +}
|
| +
|
| +WebRtcAudioSinkAdapter::~WebRtcAudioSinkAdapter() {
|
| +}
|
| +
|
| +bool WebRtcAudioSinkAdapter::IsEqual(
|
| + const webrtc::AudioTrackSinkInterface* other) const {
|
| + return (other == sink_);
|
| +}
|
| +
|
| +void WebRtcAudioSinkAdapter::OnData(const media::AudioBus& audio_bus,
|
| + base::TimeTicks estimated_capture_time) {
|
| + DCHECK_EQ(audio_bus.frames(), params_.frames_per_buffer());
|
| + DCHECK_EQ(audio_bus.channels(), params_.channels());
|
| + // TODO(henrika): Remove this conversion once the interface in libjingle
|
| + // supports float vectors.
|
| + audio_bus.ToInterleaved(audio_bus.frames(),
|
| + sizeof(interleaved_data_[0]),
|
| + interleaved_data_.get());
|
| + sink_->OnData(interleaved_data_.get(),
|
| + 16,
|
| + params_.sample_rate(),
|
| + audio_bus.channels(),
|
| + audio_bus.frames());
|
| +}
|
| +
|
| +void WebRtcAudioSinkAdapter::OnSetFormat(
|
| + const media::AudioParameters& params) {
|
| + DCHECK(params.IsValid());
|
| + params_ = params;
|
| + const int num_pcm16_data_elements =
|
| + params_.frames_per_buffer() * params_.channels();
|
| + interleaved_data_.reset(new int16_t[num_pcm16_data_elements]);
|
| +}
|
| +
|
| +} // namespace content
|
|
|