OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2011 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 // MediaStreamProvider is used to capture media of the types defined in | |
6 // MediaStreamType. There is only one MediaStreamProvider instance per media | |
7 // type and a MediaStreamProvider instance can have only one registered | |
8 // listener. | |
9 // The MediaStreamManager is expected to be called on Browser::IO thread and | |
10 // the listener will be called on the same thread. | |
11 | |
12 #ifndef CONTENT_BROWSER_MEDIA_STREAM_MEDIA_STREAM_PROVIDER_H_ | |
13 #define CONTENT_BROWSER_MEDIA_STREAM_MEDIA_STREAM_PROVIDER_H_ | |
14 | |
15 #include <list> | |
16 #include <string> | |
17 | |
18 namespace media_stream { | |
19 | |
20 // TODO(mflodman) Create a common type to use for all video capture and media | |
21 // stream classes. | |
22 typedef int MediaCaptureSessionId; | |
23 | |
24 enum MediaStreamType { | |
25 kNoService = 0, | |
26 kAudioCapture, | |
27 kVideoCapture | |
28 }; | |
29 | |
30 enum MediaStreamProviderError { | |
31 kMediaStreamOk = 0, | |
32 kInvalidMediaStreamType, | |
33 kInvalidSession, | |
34 kUnknownSession, | |
35 kDeviceNotAvailable, | |
36 kDeviceAlreadyInUse, | |
37 kUnknownError | |
38 }; | |
39 | |
40 enum { kInvalidMediaCaptureSessionId = 0xFFFFFFFF }; | |
41 | |
42 struct MediaCaptureDeviceInfo { | |
43 MediaStreamType stream_type; | |
brettw
2011/05/24 20:49:30
Data should come after the functions.
wjia(left Chromium)
2011/05/31 18:47:03
Done.
| |
44 std::string name; | |
45 std::string device_id; | |
46 bool in_use; | |
47 | |
48 MediaCaptureDeviceInfo() : stream_type(kNoService), name(), device_id(), | |
brettw
2011/05/24 20:49:30
If initializers don't fit all one one line, format
wjia(left Chromium)
2011/05/31 18:47:03
Done.
| |
49 in_use(false) {} | |
50 MediaCaptureDeviceInfo(MediaStreamType service_param, | |
51 const std::string name_param, | |
52 const std::string device_param, | |
53 bool opened) | |
54 : stream_type(service_param), | |
55 name(name_param), | |
56 device_id(device_param), | |
57 in_use(opened) {} | |
58 }; | |
59 | |
60 typedef std::list<MediaCaptureDeviceInfo> MediaCaptureDevices; | |
61 | |
62 // Callback class used by MediaStreamProvider. | |
63 class MediaStreamProviderListener { | |
64 public: | |
65 // Called by a MediaStreamProvider when a stream has been opened. | |
66 virtual void Opened(MediaStreamType stream_type, | |
67 MediaCaptureSessionId capture_session_id) = 0; | |
68 | |
69 // Called by a MediaStreamProvider when a stream has been closed. | |
70 virtual void Closed(MediaStreamType stream_type, | |
71 MediaCaptureSessionId capture_session_id) = 0; | |
72 | |
73 // Called by a MediaStreamProvider when available devices has been enumerated. | |
74 virtual void DevicesEnumerated(MediaStreamType stream_type, | |
75 const MediaCaptureDevices& devices) = 0; | |
76 | |
77 // Called by a MediaStreamProvider when an error has occured. | |
78 virtual void Error(MediaStreamType stream_type, | |
79 MediaCaptureSessionId capture_session_id, | |
80 MediaStreamProviderError error) = 0; | |
81 | |
82 protected: | |
83 virtual ~MediaStreamProviderListener() {} | |
84 }; | |
85 | |
86 // Implemented by a manager class providing captured media. | |
87 class MediaStreamProvider { | |
88 public: | |
89 // Registers a listener, only one listener is allowed. | |
90 virtual bool Register(MediaStreamProviderListener* listener) = 0; | |
91 | |
92 // Unregisters the previously registered listener. | |
93 virtual void Unregister() = 0; | |
94 | |
95 // Enumerates existing capture devices and calls |DevicesEnumerated|. | |
96 virtual void EnumerateDevices() = 0; | |
97 | |
98 // Opens the specified device. The device is not started and it is still | |
99 // possible for other applications to open the device before the device is | |
100 // started. |Opened| is called when the device is opened. | |
101 // kInvalidMediaCaptureSessionId is returned on error. | |
102 virtual MediaCaptureSessionId Open(const MediaCaptureDeviceInfo& device) = 0; | |
103 | |
104 // Closes the specified device and calls |Closed| when done. | |
105 virtual void Close(MediaCaptureSessionId capture_session_id) = 0; | |
106 | |
107 protected: | |
108 virtual ~MediaStreamProvider() {} | |
109 }; | |
110 | |
111 } // namespace media_stream | |
112 | |
113 #endif // CONTENT_BROWSER_MEDIA_STREAM_MEDIA_STREAM_PROVIDER_H_ | |
OLD | NEW |