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

Side by Side Diff: content/renderer/media/media_stream_dispatcher.cc

Issue 7184010: MediaStreamDispatcher (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' 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
(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 #include "content/renderer/media/media_stream_dispatcher.h"
6
7 #include "base/logging.h"
8 #include "content/common/media_stream_messages.h"
9
10 MediaStreamDispatcher::MediaStreamDispatcher(RenderView* render_view)
11 : RenderViewObserver(render_view),
12 next_ipc_id_(0),
13 main_message_loop_(NULL) {
scherkus (not reviewing) 2011/06/17 03:31:59 what about putting MessageLoop::current() in here
Per K 2011/06/17 15:47:54 Done.
14 main_message_loop_ = MessageLoop::current();
15 }
16
17 MediaStreamDispatcher::~MediaStreamDispatcher() {}
18
19 void MediaStreamDispatcher::GenerateStream(
20 int request_id,
21 EventHandler* event_handler,
22 media_stream::GenerateStreamOptions components,
23 const std::string& security_origin) {
24 DCHECK(MessageLoop::current()== main_message_loop_);
scherkus (not reviewing) 2011/06/17 03:31:59 DCHECK_EQ
Per K 2011/06/17 15:47:54 Done.
25 VLOG(1) << "MediaStreamDispatcher::GenerateStream" << request_id << ")";
26
27 requests_.push_back(Request(event_handler, request_id, next_ipc_id_));
28 Send(new MediaStreamHostMsg_GenerateStream(
29 routing_id(),
scherkus (not reviewing) 2011/06/17 03:31:59 indentation
Per K 2011/06/17 15:47:54 Done.
30 next_ipc_id_++,
31 components,
32 security_origin));
33 }
34
35 void MediaStreamDispatcher::StopStream(const std::string &label) {
36 DCHECK(MessageLoop::current()== main_message_loop_);
scherkus (not reviewing) 2011/06/17 03:31:59 DCHECK_EQ
Per K 2011/06/17 15:47:54 Done.
37 VLOG(1) << "MediaStreamDispatcher::StopStream"
38 << ", {label = " << label;
39
40 LabelStreamMap::iterator it = label_stream_map_.find(label);
41 if (it == label_stream_map_.end())
42 return;
43
44 Send(new MediaStreamHostMsg_StopGeneratedStream(
45 routing_id(),
scherkus (not reviewing) 2011/06/17 03:31:59 nit: indentation
Per K 2011/06/17 15:47:54 Done.
46 label));
47
48 label_stream_map_.erase(it);
49 }
50
51 bool MediaStreamDispatcher::OnMessageReceived(const IPC::Message& message) {
52 bool handled = true;
53 IPC_BEGIN_MESSAGE_MAP(MediaStreamDispatcher, message)
54 IPC_MESSAGE_HANDLER(MediaStreamMsg_StreamGenerated,
55 OnStreamGenerated)
56 IPC_MESSAGE_HANDLER(MediaStreamMsg_StreamGenerationFailed,
57 OnStreamGenerationFailed)
58 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_VideoDeviceFailed,
59 OnVideoDeviceFailed)
60 IPC_MESSAGE_HANDLER(MediaStreamHostMsg_AudioDeviceFailed,
61 OnAudioDeviceFailed)
62 IPC_MESSAGE_UNHANDLED(handled = false)
63 IPC_END_MESSAGE_MAP()
64 return handled;
65 }
66
67 void MediaStreamDispatcher::OnStreamGenerated(
68 int request_id,
69 const std::string &label,
Leandro Graciá Gil 2011/06/16 17:40:01 & at the wrong side.
Per K 2011/06/17 15:47:54 Done.
70 const media_stream::StreamDeviceInfoArray audio_array,
Leandro Graciá Gil 2011/06/16 17:40:01 This is an STL vector. Is there any reason not to
Per K 2011/06/17 15:47:54 Nope. My mistake.
71 const media_stream::StreamDeviceInfoArray video_array) {
72
73 for (RequestList::iterator it = requests_.begin();
74 it != requests_.end(); ++it) {
scherkus (not reviewing) 2011/06/17 03:31:59 indentation
Per K 2011/06/17 15:47:54 Done.
75 Request& request = *it;
scherkus (not reviewing) 2011/06/17 03:31:59 nit: get rid of extra space
Per K 2011/06/17 15:47:54 Done.
76 if (request.ipc_request == request_id) {
77 Stream new_stream;
78 new_stream.handler = request.handler;
79 new_stream.audio_array = audio_array;
80 new_stream.video_array = video_array;
81 label_stream_map_[label] = new_stream;
82 request.handler->OnStreamGenerated(request.request_id, label,
83 audio_array, video_array);
84 VLOG(1) << "MediaStreamDispatcher::OnStreamGenerated("
85 << request.request_id << ", " << label << ")";
86 requests_.erase(it);
87 break;
88 }
89 }
90 }
91
92 void MediaStreamDispatcher::OnStreamGenerationFailed(int request_id) {
93 for (RequestList::iterator it = requests_.begin();
94 it != requests_.end(); ++it) {
scherkus (not reviewing) 2011/06/17 03:31:59 indentation
Per K 2011/06/17 15:47:54 Done.
95 Request& request = *it;
scherkus (not reviewing) 2011/06/17 03:31:59 nit: get rid of extra space
Per K 2011/06/17 15:47:54 Done.
96 if (request.ipc_request == request_id) {
97 request.handler->OnStreamGenerationFailed(request.request_id);
98 VLOG(1) << "MediaStreamDispatcher::OnStreamGenerationFailed("
99 << request.request_id << ")\n";
100 requests_.erase(it);
101 break;
102 }
103 }
104 }
105
106 void MediaStreamDispatcher::OnVideoDeviceFailed(std::string label, int index) {
Leandro Graciá Gil 2011/06/16 17:40:01 Are you sure this can't be const std::string& ? Sa
Per K 2011/06/17 15:47:54 Done.
107 LabelStreamMap::iterator it = label_stream_map_.find(label);
108 if (it == label_stream_map_.end())
109 return;
110
111 media_stream::StreamDeviceInfoArray::iterator device_it =
112 it->second.video_array.begin();
113 it->second.video_array.erase(device_it + index);
114 it->second.handler->OnVideoDeviceFailed(label, index);
115 }
116
117 void MediaStreamDispatcher::OnAudioDeviceFailed(std::string label, int index) {
118 LabelStreamMap::iterator it = label_stream_map_.find(label);
119 if (it == label_stream_map_.end())
120 return;
121
122 media_stream::StreamDeviceInfoArray::iterator device_it =
scherkus (not reviewing) 2011/06/17 03:31:59 nit: drop = to next line
Per K 2011/06/17 15:47:54 http://www.chromium.org/developers/coding-style bo
123 it->second.audio_array.begin();
124 it->second.audio_array.erase(device_it + index);
Leandro Graciá Gil 2011/06/16 17:40:01 I think a few DCHECKs here would be good. If for s
Per K 2011/06/17 15:47:54 Done.
125 it->second.handler->OnAudioDeviceFailed(label, index);
126 }
127
128 const media_stream::StreamDeviceInfoArray*
129 MediaStreamDispatcher::audio_device_array(
130 const std::string& label) {
scherkus (not reviewing) 2011/06/17 03:31:59 nit: this can fit on one line
Per K 2011/06/17 15:47:54 Done.
131 DCHECK(MessageLoop::current()== main_message_loop_);
scherkus (not reviewing) 2011/06/17 03:31:59 DCHECK_EQ
Per K 2011/06/17 15:47:54 Done.
132 if (label.empty())
133 return NULL;
134
135 if (label_stream_map_.find(label) == label_stream_map_.end())
136 return NULL;
137
138 return &label_stream_map_[label].audio_array;
139 }
140
141 const media_stream::StreamDeviceInfoArray*
142 MediaStreamDispatcher::video_device_array(
143 const std::string& label) {
scherkus (not reviewing) 2011/06/17 03:31:59 nit: this can fit on one line
Per K 2011/06/17 15:47:54 Done.
144 DCHECK(MessageLoop::current()== main_message_loop_);
scherkus (not reviewing) 2011/06/17 03:31:59 DCHECK_EQ
Per K 2011/06/17 15:47:54 Done.
145 if (label.empty())
146 return NULL;
147
148 if (label_stream_map_.find(label) == label_stream_map_.end())
149 return NULL;
150
151 return &label_stream_map_[label].video_array;
Leandro Graciá Gil 2011/06/16 17:40:01 I don't think this is safe at all. Maybe I'm wrong
Per K 2011/06/17 15:47:54 Done.
152 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698