1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file. 4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#ifndef CONTENT_PUBLIC_BROWSER_MEDIA_CAPTURE_DEVICES_H_ 6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#define CONTENT_PUBLIC_BROWSER_MEDIA_CAPTURE_DEVICES_H_ 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "content/public/common/media_stream_request.h" 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace content { 11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// This is a singleton class, used to get Audio/Video devices, it must be 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// called in UI thread. 14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)class CONTENT_EXPORT MediaCaptureDevices { 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) public: 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Get signleton instance of MediaCaptureDevices. 17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) static MediaCaptureDevices* GetInstance(); 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 19a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Return all Audio/Video devices. 20a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual const MediaStreamDevices& GetAudioCaptureDevices() = 0; 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual const MediaStreamDevices& GetVideoCaptureDevices() = 0; 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) private: 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // This interface should only be implemented inside content. 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) friend class MediaCaptureDevicesImpl; 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) MediaCaptureDevices() {} 27a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual ~MediaCaptureDevices() {} 28a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}; 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} // namespace content 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif // CONTENT_PUBLIC_BROWSER_MEDIA_CAPTURE_DEVICES_H_ 33