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...) 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 { |
| 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...) 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 |