| 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 |