1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CONTENT_RENDERER_MEDIA_PEER_CONNECTION_AUDIO_SINK_OWNER_H_ 6#define CONTENT_RENDERER_MEDIA_PEER_CONNECTION_AUDIO_SINK_OWNER_H_ 7 8#include <vector> 9 10#include "base/synchronization/lock.h" 11#include "content/renderer/media/media_stream_audio_track_sink.h" 12 13namespace content { 14 15class PeerConnectionAudioSink; 16 17// Reference counted holder of PeerConnectionAudioSink. 18class PeerConnectionAudioSinkOwner : public MediaStreamAudioTrackSink { 19 public: 20 explicit PeerConnectionAudioSinkOwner(PeerConnectionAudioSink* sink); 21 22 // MediaStreamAudioTrackSink implementation. 23 virtual int OnData(const int16* audio_data, 24 int sample_rate, 25 int number_of_channels, 26 int number_of_frames, 27 const std::vector<int>& channels, 28 int audio_delay_milliseconds, 29 int current_volume, 30 bool need_audio_processing, 31 bool key_pressed) OVERRIDE; 32 virtual void OnSetFormat(const media::AudioParameters& params) OVERRIDE; 33 virtual void OnReadyStateChanged( 34 blink::WebMediaStreamSource::ReadyState state) OVERRIDE; 35 virtual void Reset() OVERRIDE; 36 virtual bool IsEqual(const MediaStreamAudioSink* other) const OVERRIDE; 37 virtual bool IsEqual(const PeerConnectionAudioSink* other) const OVERRIDE; 38 39 protected: 40 virtual ~PeerConnectionAudioSinkOwner() {} 41 42 private: 43 mutable base::Lock lock_; 44 45 // Raw pointer to the delegate, the client need to call Reset() to set the 46 // pointer to NULL before the delegate goes away. 47 PeerConnectionAudioSink* delegate_; 48 49 DISALLOW_COPY_AND_ASSIGN(PeerConnectionAudioSinkOwner); 50}; 51 52} // namespace content 53 54#endif // CONTENT_RENDERER_MEDIA_PEER_CONNECTION_AUDIO_SINK_OWNER_H_ 55