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