Chromium Code Reviews| Index: content/browser/media_stream/media_stream_provider.h |
| =================================================================== |
| --- content/browser/media_stream/media_stream_provider.h (revision 0) |
| +++ content/browser/media_stream/media_stream_provider.h (revision 0) |
| @@ -0,0 +1,107 @@ |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CONTENT_BROWSER_MEDIA_STREAM_MEDIA_STREAM_PROVIDER_H_ |
| +#define CONTENT_BROWSER_MEDIA_STREAM_MEDIA_STREAM_PROVIDER_H_ |
| + |
| +#include <list> |
| +#include <string> |
| + |
| +namespace media_stream { |
| + |
| +// TODO(mflodman) Create a common type to use for all video capture and media |
| +// stream classes. |
| +typedef int MediaCaptureSessionId; |
| + |
| +enum MediaStreamType { |
| + kNoService = 0, |
| + kAudioCapture, |
| + kVideoCapture |
| +}; |
| + |
| +enum MediaStreamProviderError { |
| + kMediaStreamOk = 0, |
| + kInvalidMediaStreamType, |
| + kInvalidSession, |
| + kUnknownSession, |
| + kDeviceNotAvailable, |
| + kDeviceAlreadyInUse, |
| + kUnknownError |
| +}; |
| + |
| +struct MediaCaptureDeviceInfo { |
| + MediaStreamType stream_type; |
| + std::string name; |
| + std::string device_id; |
| + bool in_use; |
| + |
| + MediaCaptureDeviceInfo() : stream_type(kNoService), name(), device_id(), |
| + in_use(false) {} |
| + MediaCaptureDeviceInfo(MediaStreamType service_param, |
| + const std::string name_param, |
| + const std::string device_param, |
| + bool opened) |
| + : stream_type(service_param), |
| + name(name_param), |
| + device_id(device_param), |
| + in_use(opened) {} |
| +}; |
| + |
| +typedef std::list<MediaCaptureDeviceInfo> MediaCaptureDevices; |
| + |
| +// Feedback class used by MediaStreamProvider. |
|
John Knottenbelt
2011/05/11 11:36:35
Optional: perhaps "Callback class" might better in
mflodman1
2011/05/15 20:24:00
Done.
|
| +class MediaStreamProviderListener { |
| + public: |
| + // Called by a MediaStreamProvider when a stream has been opened. |
| + virtual void Opened(MediaStreamType stream_type, |
|
John Knottenbelt
2011/05/11 11:36:35
Question: Since the MediaCaptureSessionId is being
mflodman1
2011/05/15 20:24:00
The plan is to have the MediaStreamManager instanc
|
| + MediaCaptureSessionId capture_session_id) = 0; |
| + |
| + // Called by a MediaStreamProvider when a stream has been closed. |
| + virtual void Closed(MediaStreamType stream_type, |
| + MediaCaptureSessionId capture_session_id) = 0; |
| + |
| + // Called by a MediaStreamProvider when available devices has been enumerated. |
| + virtual void DevicesEnumerated(MediaStreamType stream_type, |
| + const MediaCaptureDevices& devices) = 0; |
| + |
| + // Called by a MediaStreamProvider when an error has occured. |
| + virtual void Error(MediaStreamType stream_type, |
| + MediaCaptureSessionId capture_session_id, |
| + MediaStreamProviderError error) = 0; |
| + |
| + protected: |
| + virtual ~MediaStreamProviderListener() {} |
| +}; |
| + |
| +// Implemented by a manager class providing captured media. |
| +class MediaStreamProvider { |
| + public: |
| + // Registers a listener, only one listener is allowed. |
|
John Knottenbelt
2011/05/11 11:36:35
Please clarify: is this one listener per service t
mflodman1
2011/05/15 20:24:00
There can be only one listener registered per Medi
|
| + virtual bool Register(MediaStreamType service_type, |
| + MediaStreamProviderListener* listener) = 0; |
| + |
| + // Unregisters the previously registered listener. |
| + virtual void Unregister(MediaStreamType stream_type, |
| + MediaStreamProviderListener* listener) = 0; |
| + |
| + // Enumerates existing capture devices and calls |DevicesEnumerated|. |
| + virtual void EnumerateDevices(MediaStreamType stream_type) = 0; |
| + |
| + // Opens the specified device. The device is not started and it is still |
| + // possible for other applications to open the device before the device is |
| + // started. |Opened| is called when the device is opened. |
| + virtual MediaCaptureSessionId Open(MediaStreamType stream_type, |
| + const MediaCaptureDeviceInfo& device) = 0; |
| + |
| + // Closes the specified device and calls |Closed| when done. |
| + virtual void Close(MediaStreamType stream_type, |
| + MediaCaptureSessionId capture_session_id) = 0; |
| + |
| + protected: |
| + virtual ~MediaStreamProvider() {} |
| +}; |
| + |
| +} // namespace media_stream |
| + |
| +#endif // CONTENT_BROWSER_MEDIA_STREAM_MEDIA_STREAM_PROVIDER_H_ |