OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2011 Ericsson AB. All rights reserved. | 2 * Copyright (C) 2011 Ericsson AB. All rights reserved. |
3 * Copyright (C) 2013 Google Inc. All rights reserved. | 3 * Copyright (C) 2013 Google Inc. 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 are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 22 matching lines...) Expand all Loading... | |
33 | 33 |
34 #include "platform/mediastream/MediaStreamComponent.h" | 34 #include "platform/mediastream/MediaStreamComponent.h" |
35 | 35 |
36 #include "platform/UUID.h" | 36 #include "platform/UUID.h" |
37 #include "platform/audio/AudioBus.h" | 37 #include "platform/audio/AudioBus.h" |
38 #include "platform/mediastream/MediaStreamSource.h" | 38 #include "platform/mediastream/MediaStreamSource.h" |
39 #include "public/platform/WebAudioSourceProvider.h" | 39 #include "public/platform/WebAudioSourceProvider.h" |
40 | 40 |
41 namespace blink { | 41 namespace blink { |
42 | 42 |
43 PassRefPtr<MediaStreamComponent> MediaStreamComponent::create(PassRefPtr<MediaSt reamSource> source) | 43 MediaStreamComponent* MediaStreamComponent::create(MediaStreamSource* source) |
44 { | 44 { |
45 return adoptRef(new MediaStreamComponent(createCanonicalUUIDString(), source )); | 45 return new MediaStreamComponent(createCanonicalUUIDString(), source); |
46 } | 46 } |
47 | 47 |
48 PassRefPtr<MediaStreamComponent> MediaStreamComponent::create(const String& id, PassRefPtr<MediaStreamSource> source) | 48 MediaStreamComponent* MediaStreamComponent::create(const String& id, MediaStream Source* source) |
49 { | 49 { |
50 return adoptRef(new MediaStreamComponent(id, source)); | 50 return new MediaStreamComponent(id, source); |
51 } | 51 } |
52 | 52 |
53 MediaStreamComponent::MediaStreamComponent(const String& id, PassRefPtr<MediaStr eamSource> source) | 53 class MediaStreamComponentDisposer { |
haraken
2014/09/04 11:27:51
We need to implement the disposer not only for Med
| |
54 public: | |
55 explicit MediaStreamComponentDisposer(MediaStreamComponent& component) : m_c omponent(component) { } | |
56 ~MediaStreamComponentDisposer() | |
57 { | |
58 m_component.dispose(); | |
59 } | |
60 | |
61 private: | |
62 MediaStreamComponent& m_component; | |
63 }; | |
64 | |
65 typedef HeapHashMap<WeakMember<MediaStreamComponent>, OwnPtr<MediaStreamComponen tDisposer> > ComponentDisposers; | |
66 | |
67 static ComponentDisposers& componentDisposers() | |
68 { | |
69 DEFINE_STATIC_LOCAL(Persistent<ComponentDisposers>, disposers, (new Componen tDisposers)); | |
70 return *disposers; | |
71 } | |
72 | |
73 MediaStreamComponent::MediaStreamComponent(const String& id, MediaStreamSource* source) | |
54 : m_source(source) | 74 : m_source(source) |
55 , m_id(id) | 75 , m_id(id) |
56 , m_enabled(true) | 76 , m_enabled(true) |
57 , m_muted(false) | 77 , m_muted(false) |
58 { | 78 { |
59 ASSERT(m_id.length()); | 79 ASSERT(m_id.length()); |
80 componentDisposers().add(this, adoptPtr(new MediaStreamComponentDisposer(*th is))); | |
81 } | |
82 | |
83 void MediaStreamComponent::dispose() | |
84 { | |
85 m_extraData = nullptr; | |
60 } | 86 } |
61 | 87 |
62 #if ENABLE(WEB_AUDIO) | 88 #if ENABLE(WEB_AUDIO) |
63 void MediaStreamComponent::AudioSourceProviderImpl::wrap(blink::WebAudioSourcePr ovider* provider) | 89 void MediaStreamComponent::AudioSourceProviderImpl::wrap(blink::WebAudioSourcePr ovider* provider) |
64 { | 90 { |
65 MutexLocker locker(m_provideInputLock); | 91 MutexLocker locker(m_provideInputLock); |
66 m_webAudioSourceProvider = provider; | 92 m_webAudioSourceProvider = provider; |
67 } | 93 } |
68 | 94 |
69 void MediaStreamComponent::AudioSourceProviderImpl::provideInput(AudioBus* bus, size_t framesToProcess) | 95 void MediaStreamComponent::AudioSourceProviderImpl::provideInput(AudioBus* bus, size_t framesToProcess) |
(...skipping 11 matching lines...) Expand all Loading... | |
81 // Wrap the AudioBus channel data using WebVector. | 107 // Wrap the AudioBus channel data using WebVector. |
82 size_t n = bus->numberOfChannels(); | 108 size_t n = bus->numberOfChannels(); |
83 blink::WebVector<float*> webAudioData(n); | 109 blink::WebVector<float*> webAudioData(n); |
84 for (size_t i = 0; i < n; ++i) | 110 for (size_t i = 0; i < n; ++i) |
85 webAudioData[i] = bus->channel(i)->mutableData(); | 111 webAudioData[i] = bus->channel(i)->mutableData(); |
86 | 112 |
87 m_webAudioSourceProvider->provideInput(webAudioData, framesToProcess); | 113 m_webAudioSourceProvider->provideInput(webAudioData, framesToProcess); |
88 } | 114 } |
89 #endif // #if ENABLE(WEB_AUDIO) | 115 #endif // #if ENABLE(WEB_AUDIO) |
90 | 116 |
117 void MediaStreamComponent::trace(Visitor* visitor) | |
118 { | |
119 visitor->trace(m_source); | |
120 } | |
121 | |
91 } // namespace blink | 122 } // namespace blink |
92 | 123 |
OLD | NEW |