Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(85)

Side by Side Diff: content/browser/renderer_host/media/media_stream_provider.h

Issue 7192007: Adding error signalling from device to VideocaptureManager to relay up to MediaStream and WebKit. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: Adding the gyp-files. Created 9 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // MediaStreamProvider is used to capture media of the types defined in 5 // MediaStreamProvider is used to capture media of the types defined in
6 // MediaStreamType. There is only one MediaStreamProvider instance per media 6 // MediaStreamType. There is only one MediaStreamProvider instance per media
7 // type and a MediaStreamProvider instance can have only one registered 7 // type and a MediaStreamProvider instance can have only one registered
8 // listener. 8 // listener.
9 // The MediaStreamManager is expected to be called on Browser::IO thread and 9 // The MediaStreamManager is expected to be called on Browser::IO thread and
10 // the listener will be called on the same thread. 10 // the listener will be called on the same thread.
11 11
12 #ifndef CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_PROVIDER_H_ 12 #ifndef CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_PROVIDER_H_
13 #define CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_PROVIDER_H_ 13 #define CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_PROVIDER_H_
14 14
15 #include <list> 15 #include <list>
16 #include <string> 16 #include <string>
17 17
18 #include "content/common/media/media_stream_options.h"
19
18 namespace media_stream { 20 namespace media_stream {
19 21
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 { 22 enum MediaStreamProviderError {
31 kMediaStreamOk = 0, 23 kMediaStreamOk = 0,
32 kInvalidMediaStreamType, 24 kInvalidMediaStreamType,
33 kInvalidSession, 25 kInvalidSession,
34 kUnknownSession, 26 kUnknownSession,
35 kDeviceNotAvailable, 27 kDeviceNotAvailable,
36 kDeviceAlreadyInUse, 28 kDeviceAlreadyInUse,
37 kUnknownError 29 kUnknownError
38 }; 30 };
39 31
40 enum { kInvalidMediaCaptureSessionId = 0xFFFFFFFF }; 32 enum { kInvalidMediaCaptureSessionId = 0xFFFFFFFF };
41 33
42 struct MediaCaptureDeviceInfo {
43 MediaCaptureDeviceInfo();
44 MediaCaptureDeviceInfo(MediaStreamType service_param,
45 const std::string name_param,
46 const std::string device_param,
47 bool opened);
48
49 MediaStreamType stream_type;
50 std::string name;
51 std::string device_id;
52 bool in_use;
53 };
54
55 typedef std::list<MediaCaptureDeviceInfo> MediaCaptureDevices;
56
57 // Callback class used by MediaStreamProvider. 34 // Callback class used by MediaStreamProvider.
58 class MediaStreamProviderListener { 35 class MediaStreamProviderListener {
59 public: 36 public:
60 // Called by a MediaStreamProvider when a stream has been opened. 37 // Called by a MediaStreamProvider when a stream has been opened.
61 virtual void Opened(MediaStreamType stream_type, 38 virtual void Opened(MediaStreamType stream_type,
62 MediaCaptureSessionId capture_session_id) = 0; 39 int capture_session_id) = 0;
63 40
64 // Called by a MediaStreamProvider when a stream has been closed. 41 // Called by a MediaStreamProvider when a stream has been closed.
65 virtual void Closed(MediaStreamType stream_type, 42 virtual void Closed(MediaStreamType stream_type,
66 MediaCaptureSessionId capture_session_id) = 0; 43 int capture_session_id) = 0;
67 44
68 // Called by a MediaStreamProvider when available devices has been enumerated. 45 // Called by a MediaStreamProvider when available devices has been enumerated.
69 virtual void DevicesEnumerated(MediaStreamType stream_type, 46 virtual void DevicesEnumerated(MediaStreamType stream_type,
70 const MediaCaptureDevices& devices) = 0; 47 const StreamDeviceInfoArray& devices) = 0;
71 48
72 // Called by a MediaStreamProvider when an error has occured. 49 // Called by a MediaStreamProvider when an error has occured.
73 virtual void Error(MediaStreamType stream_type, 50 virtual void Error(MediaStreamType stream_type,
74 MediaCaptureSessionId capture_session_id, 51 int capture_session_id,
75 MediaStreamProviderError error) = 0; 52 MediaStreamProviderError error) = 0;
76 53
77 protected: 54 protected:
78 virtual ~MediaStreamProviderListener(); 55 virtual ~MediaStreamProviderListener() {}
79 }; 56 };
80 57
81 // Implemented by a manager class providing captured media. 58 // Implemented by a manager class providing captured media.
82 class MediaStreamProvider { 59 class MediaStreamProvider {
83 public: 60 public:
84 // Registers a listener, only one listener is allowed. 61 // Registers a listener, only one listener is allowed.
85 virtual bool Register(MediaStreamProviderListener* listener) = 0; 62 virtual void Register(MediaStreamProviderListener* listener) = 0;
86 63
87 // Unregisters the previously registered listener. 64 // Unregisters the previously registered listener.
88 virtual void Unregister() = 0; 65 virtual void Unregister() = 0;
89 66
90 // Enumerates existing capture devices and calls |DevicesEnumerated|. 67 // Enumerates existing capture devices and calls |DevicesEnumerated|.
91 virtual void EnumerateDevices() = 0; 68 virtual void EnumerateDevices() = 0;
92 69
93 // Opens the specified device. The device is not started and it is still 70 // Opens the specified device. The device is not started and it is still
94 // possible for other applications to open the device before the device is 71 // possible for other applications to open the device before the device is
95 // started. |Opened| is called when the device is opened. 72 // started. |Opened| is called when the device is opened.
96 // kInvalidMediaCaptureSessionId is returned on error. 73 // kInvalidMediaCaptureSessionId is returned on error.
97 virtual MediaCaptureSessionId Open(const MediaCaptureDeviceInfo& device) = 0; 74 virtual int Open(const StreamDeviceInfo& device) = 0;
98 75
99 // Closes the specified device and calls |Closed| when done. 76 // Closes the specified device and calls |Closed| when done.
100 virtual void Close(MediaCaptureSessionId capture_session_id) = 0; 77 virtual void Close(int capture_session_id) = 0;
101 78
102 protected: 79 protected:
103 virtual ~MediaStreamProvider(); 80 virtual ~MediaStreamProvider() {}
104 }; 81 };
105 82
106 } // namespace media_stream 83 } // namespace media_stream
107 84
108 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_PROVIDER_H_ 85 #endif // CONTENT_BROWSER_RENDERER_HOST_MEDIA_MEDIA_STREAM_PROVIDER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698