• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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_BROWSER_RENDERER_HOST_MEDIA_MEDIA_CAPTURE_DEVICES_H
6 #define CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_CAPTURE_DEVICES_H
7 
8 #include "base/memory/singleton.h"
9 #include "content/public/browser/media_capture_devices.h"
10 
11 namespace content {
12 
13 class MediaCaptureDevicesImpl : public MediaCaptureDevices {
14  public:
15   static MediaCaptureDevicesImpl* GetInstance();
16 
17   // Overriden from MediaCaptureDevices
18   virtual const MediaStreamDevices& GetAudioCaptureDevices() OVERRIDE;
19   virtual const MediaStreamDevices& GetVideoCaptureDevices() OVERRIDE;
20 
21   // Called by MediaStreamManager to notify the change of media capture
22   // devices, these 2 methods are called in IO thread.
23   void OnAudioCaptureDevicesChanged(const MediaStreamDevices& devices);
24   void OnVideoCaptureDevicesChanged(const MediaStreamDevices& devices);
25 
26  private:
27   friend struct DefaultSingletonTraits<MediaCaptureDevicesImpl>;
28   MediaCaptureDevicesImpl();
29   virtual ~MediaCaptureDevicesImpl();
30 
31   void UpdateAudioDevicesOnUIThread(const content::MediaStreamDevices& devices);
32   void UpdateVideoDevicesOnUIThread(const content::MediaStreamDevices& devices);
33 
34   // Flag to indicate if device enumeration has been done/doing.
35   // Only accessed on UI thread.
36   bool devices_enumerated_;
37 
38   // A list of cached audio capture devices.
39   MediaStreamDevices audio_devices_;
40 
41   // A list of cached video capture devices.
42   MediaStreamDevices video_devices_;
43 
44   DISALLOW_COPY_AND_ASSIGN(MediaCaptureDevicesImpl);
45 };
46 
47 }  // namespace content
48 
49 #endif  // CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_CAPTURE_DEVICES_H
50