blob: 664988d8213471e775cd09972afeba9aff8ff078 [file] [log] [blame]
// Copyright 2013 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/renderer/media/media_stream_audio_sink_owner.h"
#include "content/public/renderer/media_stream_audio_sink.h"
#include "media/audio/audio_parameters.h"
namespace content {
MediaStreamAudioSinkOwner::MediaStreamAudioSinkOwner(MediaStreamAudioSink* sink)
: delegate_(sink) {
}
int MediaStreamAudioSinkOwner::OnData(const int16* audio_data,
int sample_rate,
int number_of_channels,
int number_of_frames,
const std::vector<int>& channels,
int audio_delay_milliseconds,
int current_volume,
bool need_audio_processing,
bool key_pressed) {
base::AutoLock lock(lock_);
// TODO(xians): Investigate on the possibility of not calling out with the
// lock.
if (delegate_) {
delegate_->OnData(audio_data,
sample_rate,
number_of_channels,
number_of_frames);
}
return 0;
}
void MediaStreamAudioSinkOwner::OnSetFormat(
const media::AudioParameters& params) {
base::AutoLock lock(lock_);
if (delegate_)
delegate_->OnSetFormat(params);
}
void MediaStreamAudioSinkOwner::OnReadyStateChanged(
blink::WebMediaStreamSource::ReadyState state) {
base::AutoLock lock(lock_);
if (delegate_)
delegate_->OnReadyStateChanged(state);
}
void MediaStreamAudioSinkOwner::Reset() {
base::AutoLock lock(lock_);
delegate_ = NULL;
}
bool MediaStreamAudioSinkOwner::IsEqual(
const MediaStreamAudioSink* other) const {
DCHECK(other);
base::AutoLock lock(lock_);
return (other == delegate_);
}
bool MediaStreamAudioSinkOwner::IsEqual(
const PeerConnectionAudioSink* other) const {
DCHECK(other);
return false;
}
} // namespace content