peer_connection_audio_sink_owner.h revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
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 Reset() OVERRIDE; 34 virtual bool IsEqual(const MediaStreamAudioSink* other) const OVERRIDE; 35 virtual bool IsEqual(const PeerConnectionAudioSink* other) const OVERRIDE; 36 37 protected: 38 virtual ~PeerConnectionAudioSinkOwner() {} 39 40 private: 41 mutable base::Lock lock_; 42 43 // Raw pointer to the delegate, the client need to call Reset() to set the 44 // pointer to NULL before the delegate goes away. 45 PeerConnectionAudioSink* delegate_; 46 47 DISALLOW_COPY_AND_ASSIGN(PeerConnectionAudioSinkOwner); 48}; 49 50} // namespace content 51 52#endif // CONTENT_RENDERER_MEDIA_PEER_CONNECTION_AUDIO_SINK_OWNER_H_ 53