OLD | NEW |
| (Empty) |
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_WEBRTC_AUDIO_CAPTURER_SINK_OWNER_H_ | |
6 #define CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_CAPTURER_SINK_OWNER_H_ | |
7 | |
8 #include <vector> | |
9 | |
10 #include "base/memory/ref_counted.h" | |
11 #include "base/synchronization/lock.h" | |
12 #include "content/renderer/media/webrtc_audio_device_impl.h" | |
13 #include "media/audio/audio_parameters.h" | |
14 | |
15 namespace content { | |
16 | |
17 class WebRtcAudioCapturerSink; | |
18 | |
19 // Reference counted container of WebRtcAudioCapturerSink delegates. | |
20 class WebRtcAudioCapturerSinkOwner | |
21 : public base::RefCountedThreadSafe<WebRtcAudioCapturerSinkOwner>, | |
22 public WebRtcAudioCapturerSink { | |
23 public: | |
24 explicit WebRtcAudioCapturerSinkOwner(WebRtcAudioCapturerSink* sink); | |
25 | |
26 // WebRtcAudioCapturerSink implementation. | |
27 virtual int CaptureData(const std::vector<int>& channels, | |
28 const int16* audio_data, | |
29 int sample_rate, | |
30 int number_of_channels, | |
31 int number_of_frames, | |
32 int audio_delay_milliseconds, | |
33 int current_volume, | |
34 bool need_audio_processing, | |
35 bool key_pressed) OVERRIDE; | |
36 | |
37 virtual void SetCaptureFormat(const media::AudioParameters& params) OVERRIDE; | |
38 | |
39 bool IsEqual(const WebRtcAudioCapturerSink* other) const; | |
40 void Reset(); | |
41 | |
42 // Wrapper which allows to use std::find_if() when adding and removing | |
43 // sinks to/from the list. | |
44 struct WrapsSink { | |
45 WrapsSink(WebRtcAudioCapturerSink* sink) : sink_(sink) {} | |
46 bool operator()( | |
47 const scoped_refptr<WebRtcAudioCapturerSinkOwner>& owner) { | |
48 return owner->IsEqual(sink_); | |
49 } | |
50 WebRtcAudioCapturerSink* sink_; | |
51 }; | |
52 | |
53 protected: | |
54 virtual ~WebRtcAudioCapturerSinkOwner() {} | |
55 | |
56 private: | |
57 friend class base::RefCountedThreadSafe<WebRtcAudioCapturerSinkOwner>; | |
58 WebRtcAudioCapturerSink* delegate_; | |
59 mutable base::Lock lock_; | |
60 | |
61 DISALLOW_COPY_AND_ASSIGN(WebRtcAudioCapturerSinkOwner); | |
62 }; | |
63 | |
64 } // namespace content | |
65 | |
66 #endif // CONTENT_RENDERER_MEDIA_WEBRTC_AUDIO_CAPTURER_SINK_OWNER_H_ | |
OLD | NEW |