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.
5 #ifndef CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_SINK_OWNER_H_
6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_SINK_OWNER_H_
10 #include "base/synchronization/lock.h"
11 #include "content/renderer/media/media_stream_audio_track_sink.h"
15 class MediaStreamAudioSink
;
17 // Reference counted holder of MediaStreamAudioSink sinks.
18 class MediaStreamAudioSinkOwner
: public MediaStreamAudioTrackSink
{
20 explicit MediaStreamAudioSinkOwner(MediaStreamAudioSink
* sink
);
22 // MediaStreamAudioTrackSink implementation.
23 virtual int OnData(const int16
* audio_data
,
25 int number_of_channels
,
27 const std::vector
<int>& channels
,
28 int audio_delay_milliseconds
,
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
;
40 virtual ~MediaStreamAudioSinkOwner() {}
43 mutable base::Lock lock_
;
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 MediaStreamAudioSink
* delegate_
;
49 DISALLOW_COPY_AND_ASSIGN(MediaStreamAudioSinkOwner
);
52 } // namespace content
54 #endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_SINK_OWNER_H_