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 Ericsson AB. All rights reserved. | 3 * Copyright (C) 2011 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 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 , m_readyState(MediaStreamSource::ReadyStateLive) | 53 , m_readyState(MediaStreamSource::ReadyStateLive) |
54 , m_isIteratingRegisteredMediaStreams(false) | 54 , m_isIteratingRegisteredMediaStreams(false) |
55 , m_stopped(false) | 55 , m_stopped(false) |
56 , m_component(component) | 56 , m_component(component) |
57 { | 57 { |
58 m_component->source()->addObserver(this); | 58 m_component->source()->addObserver(this); |
59 } | 59 } |
60 | 60 |
61 MediaStreamTrack::~MediaStreamTrack() | 61 MediaStreamTrack::~MediaStreamTrack() |
62 { | 62 { |
63 m_component->source()->removeObserver(this); | |
64 } | 63 } |
65 | 64 |
66 String MediaStreamTrack::kind() const | 65 String MediaStreamTrack::kind() const |
67 { | 66 { |
68 DEFINE_STATIC_LOCAL(String, audioKind, ("audio")); | 67 DEFINE_STATIC_LOCAL(String, audioKind, ("audio")); |
69 DEFINE_STATIC_LOCAL(String, videoKind, ("video")); | 68 DEFINE_STATIC_LOCAL(String, videoKind, ("video")); |
70 | 69 |
71 switch (m_component->source()->type()) { | 70 switch (m_component->source()->type()) { |
72 case MediaStreamSource::TypeAudio: | 71 case MediaStreamSource::TypeAudio: |
73 return audioKind; | 72 return audioKind; |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 return; | 155 return; |
157 | 156 |
158 m_readyState = MediaStreamSource::ReadyStateEnded; | 157 m_readyState = MediaStreamSource::ReadyStateEnded; |
159 MediaStreamCenter::instance().didStopMediaStreamTrack(component()); | 158 MediaStreamCenter::instance().didStopMediaStreamTrack(component()); |
160 dispatchEvent(Event::create(EventTypeNames::ended)); | 159 dispatchEvent(Event::create(EventTypeNames::ended)); |
161 propagateTrackEnded(); | 160 propagateTrackEnded(); |
162 } | 161 } |
163 | 162 |
164 MediaStreamTrack* MediaStreamTrack::clone(ExecutionContext* context) | 163 MediaStreamTrack* MediaStreamTrack::clone(ExecutionContext* context) |
165 { | 164 { |
166 RefPtr<MediaStreamComponent> clonedComponent = MediaStreamComponent::create(
component()->source()); | 165 MediaStreamComponent* clonedComponent = MediaStreamComponent::create(compone
nt()->source()); |
167 MediaStreamTrack* clonedTrack = MediaStreamTrack::create(context, clonedComp
onent.get()); | 166 MediaStreamTrack* clonedTrack = MediaStreamTrack::create(context, clonedComp
onent); |
168 MediaStreamCenter::instance().didCreateMediaStreamTrack(clonedComponent.get(
)); | 167 MediaStreamCenter::instance().didCreateMediaStreamTrack(clonedComponent); |
169 return clonedTrack; | 168 return clonedTrack; |
170 } | 169 } |
171 | 170 |
172 bool MediaStreamTrack::ended() const | 171 bool MediaStreamTrack::ended() const |
173 { | 172 { |
174 return m_stopped || (m_readyState == MediaStreamSource::ReadyStateEnded); | 173 return m_stopped || (m_readyState == MediaStreamSource::ReadyStateEnded); |
175 } | 174 } |
176 | 175 |
177 void MediaStreamTrack::sourceChangedState() | 176 void MediaStreamTrack::sourceChangedState() |
178 { | 177 { |
(...skipping 19 matching lines...) Expand all Loading... |
198 | 197 |
199 void MediaStreamTrack::propagateTrackEnded() | 198 void MediaStreamTrack::propagateTrackEnded() |
200 { | 199 { |
201 RELEASE_ASSERT(!m_isIteratingRegisteredMediaStreams); | 200 RELEASE_ASSERT(!m_isIteratingRegisteredMediaStreams); |
202 m_isIteratingRegisteredMediaStreams = true; | 201 m_isIteratingRegisteredMediaStreams = true; |
203 for (HeapHashSet<Member<MediaStream>>::iterator iter = m_registeredMediaStre
ams.begin(); iter != m_registeredMediaStreams.end(); ++iter) | 202 for (HeapHashSet<Member<MediaStream>>::iterator iter = m_registeredMediaStre
ams.begin(); iter != m_registeredMediaStreams.end(); ++iter) |
204 (*iter)->trackEnded(); | 203 (*iter)->trackEnded(); |
205 m_isIteratingRegisteredMediaStreams = false; | 204 m_isIteratingRegisteredMediaStreams = false; |
206 } | 205 } |
207 | 206 |
208 MediaStreamComponent* MediaStreamTrack::component() | |
209 { | |
210 return m_component.get(); | |
211 } | |
212 | |
213 void MediaStreamTrack::stop() | 207 void MediaStreamTrack::stop() |
214 { | 208 { |
215 m_stopped = true; | 209 m_stopped = true; |
216 } | 210 } |
217 | 211 |
218 PassOwnPtr<AudioSourceProvider> MediaStreamTrack::createWebAudioSource() | 212 PassOwnPtr<AudioSourceProvider> MediaStreamTrack::createWebAudioSource() |
219 { | 213 { |
220 return MediaStreamCenter::instance().createWebAudioSourceFromMediaStreamTrac
k(component()); | 214 return MediaStreamCenter::instance().createWebAudioSourceFromMediaStreamTrac
k(component()); |
221 } | 215 } |
222 | 216 |
(...skipping 18 matching lines...) Expand all Loading... |
241 } | 235 } |
242 | 236 |
243 ExecutionContext* MediaStreamTrack::executionContext() const | 237 ExecutionContext* MediaStreamTrack::executionContext() const |
244 { | 238 { |
245 return ActiveDOMObject::executionContext(); | 239 return ActiveDOMObject::executionContext(); |
246 } | 240 } |
247 | 241 |
248 DEFINE_TRACE(MediaStreamTrack) | 242 DEFINE_TRACE(MediaStreamTrack) |
249 { | 243 { |
250 visitor->trace(m_registeredMediaStreams); | 244 visitor->trace(m_registeredMediaStreams); |
| 245 visitor->trace(m_component); |
251 RefCountedGarbageCollectedEventTargetWithInlineData<MediaStreamTrack>::trace
(visitor); | 246 RefCountedGarbageCollectedEventTargetWithInlineData<MediaStreamTrack>::trace
(visitor); |
252 ActiveDOMObject::trace(visitor); | 247 ActiveDOMObject::trace(visitor); |
253 } | 248 } |
254 | 249 |
255 } // namespace blink | 250 } // namespace blink |
OLD | NEW |