OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 23 matching lines...) Expand all Loading... |
34 | 34 |
35 #include "platform/audio/AudioBus.h" | 35 #include "platform/audio/AudioBus.h" |
36 #include "platform/mediastream/MediaStreamSource.h" | 36 #include "platform/mediastream/MediaStreamSource.h" |
37 #include "public/platform/WebAudioDestinationConsumer.h" | 37 #include "public/platform/WebAudioDestinationConsumer.h" |
38 #include "public/platform/WebMediaConstraints.h" | 38 #include "public/platform/WebMediaConstraints.h" |
39 #include "public/platform/WebString.h" | 39 #include "public/platform/WebString.h" |
40 #include "wtf/MainThread.h" | 40 #include "wtf/MainThread.h" |
41 #include "wtf/PassOwnPtr.h" | 41 #include "wtf/PassOwnPtr.h" |
42 #include "wtf/Vector.h" | 42 #include "wtf/Vector.h" |
43 | 43 |
44 using namespace blink; | |
45 | |
46 namespace blink { | 44 namespace blink { |
47 | 45 |
48 namespace { | 46 namespace { |
49 | 47 |
50 class ExtraDataContainer : public MediaStreamSource::ExtraData { | 48 class ExtraDataContainer : public MediaStreamSource::ExtraData { |
51 public: | 49 public: |
52 ExtraDataContainer(PassOwnPtr<WebMediaStreamSource::ExtraData> extraData) :
m_extraData(extraData) { } | 50 ExtraDataContainer(PassOwnPtr<WebMediaStreamSource::ExtraData> extraData) :
m_extraData(extraData) { } |
53 | 51 |
54 WebMediaStreamSource::ExtraData* extraData() { return m_extraData.get(); } | 52 WebMediaStreamSource::ExtraData* extraData() { return m_extraData.get(); } |
55 | 53 |
56 private: | 54 private: |
57 OwnPtr<WebMediaStreamSource::ExtraData> m_extraData; | 55 OwnPtr<WebMediaStreamSource::ExtraData> m_extraData; |
58 }; | 56 }; |
59 | 57 |
60 } // namespace | 58 } // namespace |
61 | 59 |
62 WebMediaStreamSource WebMediaStreamSource::ExtraData::owner() | 60 WebMediaStreamSource WebMediaStreamSource::ExtraData::owner() |
63 { | 61 { |
64 ASSERT(m_owner); | 62 ASSERT(m_owner); |
65 return WebMediaStreamSource(m_owner); | 63 return WebMediaStreamSource(m_owner); |
66 } | 64 } |
67 | 65 |
68 void WebMediaStreamSource::ExtraData::setOwner(blink::MediaStreamSource* owner) | 66 void WebMediaStreamSource::ExtraData::setOwner(MediaStreamSource* owner) |
69 { | 67 { |
70 ASSERT(!m_owner); | 68 ASSERT(!m_owner); |
71 m_owner = owner; | 69 m_owner = owner; |
72 } | 70 } |
73 | 71 |
74 WebMediaStreamSource::WebMediaStreamSource(const PassRefPtr<MediaStreamSource>&
mediaStreamSource) | 72 WebMediaStreamSource::WebMediaStreamSource(const PassRefPtr<MediaStreamSource>&
mediaStreamSource) |
75 : m_private(mediaStreamSource) | 73 : m_private(mediaStreamSource) |
76 { | 74 { |
77 } | 75 } |
78 | 76 |
79 WebMediaStreamSource& WebMediaStreamSource::operator=(blink::MediaStreamSource*
mediaStreamSource) | 77 WebMediaStreamSource& WebMediaStreamSource::operator=(MediaStreamSource* mediaSt
reamSource) |
80 { | 78 { |
81 m_private = mediaStreamSource; | 79 m_private = mediaStreamSource; |
82 return *this; | 80 return *this; |
83 } | 81 } |
84 | 82 |
85 void WebMediaStreamSource::assign(const WebMediaStreamSource& other) | 83 void WebMediaStreamSource::assign(const WebMediaStreamSource& other) |
86 { | 84 { |
87 m_private = other.m_private; | 85 m_private = other.m_private; |
88 } | 86 } |
89 | 87 |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
161 ASSERT(!m_private.isNull()); | 159 ASSERT(!m_private.isNull()); |
162 return m_private->constraints(); | 160 return m_private->constraints(); |
163 } | 161 } |
164 | 162 |
165 bool WebMediaStreamSource::requiresAudioConsumer() const | 163 bool WebMediaStreamSource::requiresAudioConsumer() const |
166 { | 164 { |
167 ASSERT(!m_private.isNull()); | 165 ASSERT(!m_private.isNull()); |
168 return m_private->requiresAudioConsumer(); | 166 return m_private->requiresAudioConsumer(); |
169 } | 167 } |
170 | 168 |
171 class ConsumerWrapper : public blink::AudioDestinationConsumer { | 169 class ConsumerWrapper : public AudioDestinationConsumer { |
172 public: | 170 public: |
173 static PassRefPtr<ConsumerWrapper> create(WebAudioDestinationConsumer* consu
mer) | 171 static PassRefPtr<ConsumerWrapper> create(WebAudioDestinationConsumer* consu
mer) |
174 { | 172 { |
175 return adoptRef(new ConsumerWrapper(consumer)); | 173 return adoptRef(new ConsumerWrapper(consumer)); |
176 } | 174 } |
177 | 175 |
178 virtual void setFormat(size_t numberOfChannels, float sampleRate) OVERRIDE; | 176 virtual void setFormat(size_t numberOfChannels, float sampleRate) OVERRIDE; |
179 virtual void consumeAudio(AudioBus*, size_t numberOfFrames) OVERRIDE; | 177 virtual void consumeAudio(AudioBus*, size_t numberOfFrames) OVERRIDE; |
180 | 178 |
181 WebAudioDestinationConsumer* consumer() { return m_consumer; } | 179 WebAudioDestinationConsumer* consumer() { return m_consumer; } |
(...skipping 10 matching lines...) Expand all Loading... |
192 m_consumer->setFormat(numberOfChannels, sampleRate); | 190 m_consumer->setFormat(numberOfChannels, sampleRate); |
193 } | 191 } |
194 | 192 |
195 void ConsumerWrapper::consumeAudio(AudioBus* bus, size_t numberOfFrames) | 193 void ConsumerWrapper::consumeAudio(AudioBus* bus, size_t numberOfFrames) |
196 { | 194 { |
197 if (!bus) | 195 if (!bus) |
198 return; | 196 return; |
199 | 197 |
200 // Wrap AudioBus. | 198 // Wrap AudioBus. |
201 size_t numberOfChannels = bus->numberOfChannels(); | 199 size_t numberOfChannels = bus->numberOfChannels(); |
202 blink::WebVector<const float*> busVector(numberOfChannels); | 200 WebVector<const float*> busVector(numberOfChannels); |
203 for (size_t i = 0; i < numberOfChannels; ++i) | 201 for (size_t i = 0; i < numberOfChannels; ++i) |
204 busVector[i] = bus->channel(i)->data(); | 202 busVector[i] = bus->channel(i)->data(); |
205 | 203 |
206 m_consumer->consumeAudio(busVector, numberOfFrames); | 204 m_consumer->consumeAudio(busVector, numberOfFrames); |
207 } | 205 } |
208 | 206 |
209 void WebMediaStreamSource::addAudioConsumer(WebAudioDestinationConsumer* consume
r) | 207 void WebMediaStreamSource::addAudioConsumer(WebAudioDestinationConsumer* consume
r) |
210 { | 208 { |
211 ASSERT(isMainThread()); | 209 ASSERT(isMainThread()); |
212 ASSERT(!m_private.isNull() && consumer); | 210 ASSERT(!m_private.isNull() && consumer); |
(...skipping 11 matching lines...) Expand all Loading... |
224 ConsumerWrapper* wrapper = static_cast<ConsumerWrapper*>(it->get()); | 222 ConsumerWrapper* wrapper = static_cast<ConsumerWrapper*>(it->get()); |
225 if (wrapper->consumer() == consumer) { | 223 if (wrapper->consumer() == consumer) { |
226 m_private->removeAudioConsumer(wrapper); | 224 m_private->removeAudioConsumer(wrapper); |
227 return true; | 225 return true; |
228 } | 226 } |
229 } | 227 } |
230 return false; | 228 return false; |
231 } | 229 } |
232 | 230 |
233 } // namespace blink | 231 } // namespace blink |
OLD | NEW |