OLD | NEW |
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 #include "content/renderer/media/media_stream_dispatcher.h" | 5 #include "content/renderer/media/media_stream_dispatcher.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "content/common/media/media_stream_messages.h" | 8 #include "content/common/media/media_stream_messages.h" |
9 #include "content/renderer/media/media_stream_dispatcher_eventhandler.h" | 9 #include "content/renderer/media/media_stream_dispatcher_eventhandler.h" |
10 #include "content/renderer/render_view_impl.h" | 10 #include "content/renderer/render_view_impl.h" |
11 | 11 |
| 12 struct MediaStreamDispatcher::Request { |
| 13 Request(MediaStreamDispatcherEventHandler* handler, |
| 14 int request_id, |
| 15 int ipc_request) |
| 16 : handler(handler), |
| 17 request_id(request_id), |
| 18 ipc_request(ipc_request) { |
| 19 } |
| 20 MediaStreamDispatcherEventHandler* handler; |
| 21 int request_id; |
| 22 int ipc_request; |
| 23 }; |
| 24 |
| 25 struct MediaStreamDispatcher::Stream { |
| 26 Stream() : handler(NULL) {} |
| 27 ~Stream() {} |
| 28 MediaStreamDispatcherEventHandler* handler; |
| 29 media_stream::StreamDeviceInfoArray audio_array; |
| 30 media_stream::StreamDeviceInfoArray video_array; |
| 31 }; |
| 32 |
12 MediaStreamDispatcherEventHandler::~MediaStreamDispatcherEventHandler() {} | 33 MediaStreamDispatcherEventHandler::~MediaStreamDispatcherEventHandler() {} |
13 | 34 |
14 MediaStreamDispatcher::MediaStreamDispatcher(RenderViewImpl* render_view) | 35 MediaStreamDispatcher::MediaStreamDispatcher(RenderViewImpl* render_view) |
15 : content::RenderViewObserver(render_view), | 36 : content::RenderViewObserver(render_view), |
16 next_ipc_id_(0) { | 37 next_ipc_id_(0) { |
17 } | 38 } |
18 | 39 |
19 MediaStreamDispatcher::~MediaStreamDispatcher() {} | 40 MediaStreamDispatcher::~MediaStreamDispatcher() {} |
20 | 41 |
21 void MediaStreamDispatcher::GenerateStream( | 42 void MediaStreamDispatcher::GenerateStream( |
22 int request_id, | 43 int request_id, |
23 MediaStreamDispatcherEventHandler* event_handler, | 44 MediaStreamDispatcherEventHandler* event_handler, |
24 media_stream::StreamOptions components, | 45 media_stream::StreamOptions components, |
25 const std::string& security_origin) { | 46 const std::string& security_origin) { |
26 VLOG(1) << "MediaStreamDispatcher::GenerateStream(" << request_id << ")"; | 47 DVLOG(1) << "MediaStreamDispatcher::GenerateStream(" << request_id << ")"; |
27 | 48 |
28 requests_.push_back(Request(event_handler, request_id, next_ipc_id_)); | 49 requests_.push_back(Request(event_handler, request_id, next_ipc_id_)); |
29 Send(new MediaStreamHostMsg_GenerateStream(routing_id(), | 50 Send(new MediaStreamHostMsg_GenerateStream(routing_id(), |
30 next_ipc_id_++, | 51 next_ipc_id_++, |
31 components, | 52 components, |
32 security_origin)); | 53 security_origin)); |
33 } | 54 } |
34 | 55 |
35 void MediaStreamDispatcher::StopStream(const std::string& label) { | 56 void MediaStreamDispatcher::StopStream(const std::string& label) { |
36 VLOG(1) << "MediaStreamDispatcher::StopStream" | 57 DVLOG(1) << "MediaStreamDispatcher::StopStream" |
37 << ", {label = " << label << "}"; | 58 << ", {label = " << label << "}"; |
38 | 59 |
39 LabelStreamMap::iterator it = label_stream_map_.find(label); | 60 LabelStreamMap::iterator it = label_stream_map_.find(label); |
40 if (it == label_stream_map_.end()) | 61 if (it == label_stream_map_.end()) |
41 return; | 62 return; |
42 | 63 |
43 Send(new MediaStreamHostMsg_StopGeneratedStream(routing_id(), label)); | 64 Send(new MediaStreamHostMsg_StopGeneratedStream(routing_id(), label)); |
44 label_stream_map_.erase(it); | 65 label_stream_map_.erase(it); |
45 } | 66 } |
46 | 67 |
47 bool MediaStreamDispatcher::OnMessageReceived(const IPC::Message& message) { | 68 bool MediaStreamDispatcher::OnMessageReceived(const IPC::Message& message) { |
(...skipping 22 matching lines...) Expand all Loading... |
70 it != requests_.end(); ++it) { | 91 it != requests_.end(); ++it) { |
71 Request& request = *it; | 92 Request& request = *it; |
72 if (request.ipc_request == request_id) { | 93 if (request.ipc_request == request_id) { |
73 Stream new_stream; | 94 Stream new_stream; |
74 new_stream.handler = request.handler; | 95 new_stream.handler = request.handler; |
75 new_stream.audio_array = audio_array; | 96 new_stream.audio_array = audio_array; |
76 new_stream.video_array = video_array; | 97 new_stream.video_array = video_array; |
77 label_stream_map_[label] = new_stream; | 98 label_stream_map_[label] = new_stream; |
78 request.handler->OnStreamGenerated(request.request_id, label, | 99 request.handler->OnStreamGenerated(request.request_id, label, |
79 audio_array, video_array); | 100 audio_array, video_array); |
80 VLOG(1) << "MediaStreamDispatcher::OnStreamGenerated(" | 101 DVLOG(1) << "MediaStreamDispatcher::OnStreamGenerated(" |
81 << request.request_id << ", " << label << ")"; | 102 << request.request_id << ", " << label << ")"; |
82 requests_.erase(it); | 103 requests_.erase(it); |
83 break; | 104 break; |
84 } | 105 } |
85 } | 106 } |
86 } | 107 } |
87 | 108 |
88 void MediaStreamDispatcher::OnStreamGenerationFailed(int request_id) { | 109 void MediaStreamDispatcher::OnStreamGenerationFailed(int request_id) { |
89 for (RequestList::iterator it = requests_.begin(); | 110 for (RequestList::iterator it = requests_.begin(); |
90 it != requests_.end(); ++it) { | 111 it != requests_.end(); ++it) { |
91 Request& request = *it; | 112 Request& request = *it; |
92 if (request.ipc_request == request_id) { | 113 if (request.ipc_request == request_id) { |
93 request.handler->OnStreamGenerationFailed(request.request_id); | 114 request.handler->OnStreamGenerationFailed(request.request_id); |
94 VLOG(1) << "MediaStreamDispatcher::OnStreamGenerationFailed(" | 115 DVLOG(1) << "MediaStreamDispatcher::OnStreamGenerationFailed(" |
95 << request.request_id << ")\n"; | 116 << request.request_id << ")\n"; |
96 requests_.erase(it); | 117 requests_.erase(it); |
97 break; | 118 break; |
98 } | 119 } |
99 } | 120 } |
100 } | 121 } |
101 | 122 |
102 void MediaStreamDispatcher::OnVideoDeviceFailed(const std::string& label, | 123 void MediaStreamDispatcher::OnVideoDeviceFailed(const std::string& label, |
103 int index) { | 124 int index) { |
104 LabelStreamMap::iterator it = label_stream_map_.find(label); | 125 LabelStreamMap::iterator it = label_stream_map_.find(label); |
105 if (it == label_stream_map_.end()) | 126 if (it == label_stream_map_.end()) |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
143 | 164 |
144 int MediaStreamDispatcher::video_session_id(const std::string& label, | 165 int MediaStreamDispatcher::video_session_id(const std::string& label, |
145 int index) { | 166 int index) { |
146 LabelStreamMap::iterator it = label_stream_map_.find(label); | 167 LabelStreamMap::iterator it = label_stream_map_.find(label); |
147 if (it == label_stream_map_.end()) | 168 if (it == label_stream_map_.end()) |
148 return media_stream::StreamDeviceInfo::kNoId; | 169 return media_stream::StreamDeviceInfo::kNoId; |
149 | 170 |
150 DCHECK_GT(it->second.video_array.size(), static_cast<size_t>(index)); | 171 DCHECK_GT(it->second.video_array.size(), static_cast<size_t>(index)); |
151 return it->second.video_array[index].session_id; | 172 return it->second.video_array[index].session_id; |
152 } | 173 } |
153 | |
154 MediaStreamDispatcher::Stream::Stream() | |
155 : handler(NULL) {} | |
156 | |
157 MediaStreamDispatcher::Stream::~Stream() {} | |
158 | |
OLD | NEW |