OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * Copyright (C) 2011, 2012 Ericsson AB. All rights reserved. | 3 * Copyright (C) 2011, 2012 Ericsson AB. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
108 : ContextDestructionObserver(context) | 108 : ContextDestructionObserver(context) |
109 , m_stopped(false) | 109 , m_stopped(false) |
110 , m_descriptor(streamDescriptor) | 110 , m_descriptor(streamDescriptor) |
111 , m_scheduledEventTimer(this, &MediaStream::scheduledEventTimerFired) | 111 , m_scheduledEventTimer(this, &MediaStream::scheduledEventTimerFired) |
112 { | 112 { |
113 m_descriptor->setClient(this); | 113 m_descriptor->setClient(this); |
114 | 114 |
115 size_t numberOfAudioTracks = m_descriptor->numberOfAudioComponents(); | 115 size_t numberOfAudioTracks = m_descriptor->numberOfAudioComponents(); |
116 m_audioTracks.reserveCapacity(numberOfAudioTracks); | 116 m_audioTracks.reserveCapacity(numberOfAudioTracks); |
117 for (size_t i = 0; i < numberOfAudioTracks; i++) | 117 for (size_t i = 0; i < numberOfAudioTracks; i++) |
118 m_audioTracks.append(MediaStreamTrack::create(context, m_descriptor->aud ioComponent(i))); | 118 m_audioTracks.append(MediaStreamTrack::create(context, m_descriptor->aud ioComponent(i), this)); |
119 | 119 |
120 size_t numberOfVideoTracks = m_descriptor->numberOfVideoComponents(); | 120 size_t numberOfVideoTracks = m_descriptor->numberOfVideoComponents(); |
121 m_videoTracks.reserveCapacity(numberOfVideoTracks); | 121 m_videoTracks.reserveCapacity(numberOfVideoTracks); |
122 for (size_t i = 0; i < numberOfVideoTracks; i++) | 122 for (size_t i = 0; i < numberOfVideoTracks; i++) |
123 m_videoTracks.append(MediaStreamTrack::create(context, m_descriptor->vid eoComponent(i))); | 123 m_videoTracks.append(MediaStreamTrack::create(context, m_descriptor->vid eoComponent(i), this)); |
124 } | 124 } |
125 | 125 |
126 MediaStream::~MediaStream() | 126 MediaStream::~MediaStream() |
127 { | 127 { |
128 m_descriptor->setClient(0); | 128 m_descriptor->setClient(0); |
129 } | 129 } |
130 | 130 |
131 bool MediaStream::ended() const | 131 bool MediaStream::ended() const |
132 { | 132 { |
133 return m_stopped || m_descriptor->ended(); | 133 return m_stopped || m_descriptor->ended(); |
(...skipping 10 matching lines...) Expand all Loading... | |
144 ec = TYPE_MISMATCH_ERR; | 144 ec = TYPE_MISMATCH_ERR; |
145 return; | 145 return; |
146 } | 146 } |
147 | 147 |
148 RefPtr<MediaStreamTrack> track = prpTrack; | 148 RefPtr<MediaStreamTrack> track = prpTrack; |
149 | 149 |
150 if (getTrackById(track->id())) | 150 if (getTrackById(track->id())) |
151 return; | 151 return; |
152 | 152 |
153 RefPtr<MediaStreamComponent> component = MediaStreamComponent::create(m_desc riptor.get(), track->component()->source()); | 153 RefPtr<MediaStreamComponent> component = MediaStreamComponent::create(m_desc riptor.get(), track->component()->source()); |
154 RefPtr<MediaStreamTrack> newTrack = MediaStreamTrack::create(scriptExecution Context(), component.get()); | 154 RefPtr<MediaStreamTrack> newTrack = MediaStreamTrack::create(scriptExecution Context(), component.get(), this); |
155 | 155 |
156 switch (component->source()->type()) { | 156 switch (component->source()->type()) { |
157 case MediaStreamSource::TypeAudio: | 157 case MediaStreamSource::TypeAudio: |
158 m_descriptor->addAudioComponent(component.release()); | 158 m_descriptor->addAudioComponent(component.release()); |
159 m_audioTracks.append(newTrack); | 159 m_audioTracks.append(newTrack); |
160 break; | 160 break; |
161 case MediaStreamSource::TypeVideo: | 161 case MediaStreamSource::TypeVideo: |
162 m_descriptor->addVideoComponent(component.release()); | 162 m_descriptor->addVideoComponent(component.release()); |
163 m_videoTracks.append(newTrack); | 163 m_videoTracks.append(newTrack); |
164 break; | 164 break; |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
257 } | 257 } |
258 | 258 |
259 void MediaStream::addRemoteTrack(MediaStreamComponent* component) | 259 void MediaStream::addRemoteTrack(MediaStreamComponent* component) |
260 { | 260 { |
261 ASSERT(component && !component->stream()); | 261 ASSERT(component && !component->stream()); |
262 if (ended()) | 262 if (ended()) |
263 return; | 263 return; |
264 | 264 |
265 component->setStream(descriptor()); | 265 component->setStream(descriptor()); |
266 | 266 |
267 RefPtr<MediaStreamTrack> track = MediaStreamTrack::create(scriptExecutionCon text(), component); | 267 RefPtr<MediaStreamTrack> track = MediaStreamTrack::create(scriptExecutionCon text(), component, this); |
268 switch (component->source()->type()) { | 268 switch (component->source()->type()) { |
269 case MediaStreamSource::TypeAudio: | 269 case MediaStreamSource::TypeAudio: |
270 m_audioTracks.append(track); | 270 m_audioTracks.append(track); |
271 break; | 271 break; |
272 case MediaStreamSource::TypeVideo: | 272 case MediaStreamSource::TypeVideo: |
273 m_videoTracks.append(track); | 273 m_videoTracks.append(track); |
274 break; | 274 break; |
275 } | 275 } |
276 | 276 |
277 scheduleDispatchEvent(MediaStreamTrackEvent::create(eventNames().addtrackEve nt, false, false, track)); | 277 scheduleDispatchEvent(MediaStreamTrackEvent::create(eventNames().addtrackEve nt, false, false, track)); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
323 Vector<RefPtr<Event> > events; | 323 Vector<RefPtr<Event> > events; |
324 events.swap(m_scheduledEvents); | 324 events.swap(m_scheduledEvents); |
325 | 325 |
326 Vector<RefPtr<Event> >::iterator it = events.begin(); | 326 Vector<RefPtr<Event> >::iterator it = events.begin(); |
327 for (; it != events.end(); ++it) | 327 for (; it != events.end(); ++it) |
328 dispatchEvent((*it).release()); | 328 dispatchEvent((*it).release()); |
329 | 329 |
330 events.clear(); | 330 events.clear(); |
331 } | 331 } |
332 | 332 |
333 void MediaStream::trackEndedNotification() | |
334 { | |
335 for (size_t i = 0; i < m_audioTracks.size(); ++i) | |
336 if (!m_audioTracks[i].get()->ended()) | |
abarth-chromium
2013/04/08 06:24:21
There's no need to call "get()" here. operator->
| |
337 return; | |
338 | |
339 for (size_t i = 0; i < m_videoTracks.size(); ++i) | |
340 if (!m_videoTracks[i].get()->ended()) | |
341 return; | |
342 | |
343 streamEnded(); | |
344 } | |
333 } // namespace WebCore | 345 } // namespace WebCore |
334 | 346 |
335 #endif // ENABLE(MEDIA_STREAM) | 347 #endif // ENABLE(MEDIA_STREAM) |
OLD | NEW |