Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(159)

Side by Side Diff: third_party/WebKit/Source/modules/webaudio/MediaElementAudioSourceNode.cpp

Issue 2159403002: Replace ASSERT with DCHECK in WebAudio (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 27 matching lines...) Expand all
38 38
39 MediaElementAudioSourceHandler::MediaElementAudioSourceHandler(AudioNode& node, HTMLMediaElement& mediaElement) 39 MediaElementAudioSourceHandler::MediaElementAudioSourceHandler(AudioNode& node, HTMLMediaElement& mediaElement)
40 : AudioHandler(NodeTypeMediaElementAudioSource, node, node.context()->sample Rate()) 40 : AudioHandler(NodeTypeMediaElementAudioSource, node, node.context()->sample Rate())
41 , m_mediaElement(mediaElement) 41 , m_mediaElement(mediaElement)
42 , m_sourceNumberOfChannels(0) 42 , m_sourceNumberOfChannels(0)
43 , m_sourceSampleRate(0) 43 , m_sourceSampleRate(0)
44 , m_passesCurrentSrcCORSAccessCheck(passesCurrentSrcCORSAccessCheck(mediaEle ment.currentSrc())) 44 , m_passesCurrentSrcCORSAccessCheck(passesCurrentSrcCORSAccessCheck(mediaEle ment.currentSrc()))
45 , m_maybePrintCORSMessage(!m_passesCurrentSrcCORSAccessCheck) 45 , m_maybePrintCORSMessage(!m_passesCurrentSrcCORSAccessCheck)
46 , m_currentSrcString(mediaElement.currentSrc().getString()) 46 , m_currentSrcString(mediaElement.currentSrc().getString())
47 { 47 {
48 ASSERT(isMainThread()); 48 DCHECK(isMainThread());
49 // Default to stereo. This could change depending on what the media element 49 // Default to stereo. This could change depending on what the media element
50 // .src is set to. 50 // .src is set to.
51 addOutput(2); 51 addOutput(2);
52 52
53 initialize(); 53 initialize();
54 } 54 }
55 55
56 PassRefPtr<MediaElementAudioSourceHandler> MediaElementAudioSourceHandler::creat e(AudioNode& node, HTMLMediaElement& mediaElement) 56 PassRefPtr<MediaElementAudioSourceHandler> MediaElementAudioSourceHandler::creat e(AudioNode& node, HTMLMediaElement& mediaElement)
57 { 57 {
58 return adoptRef(new MediaElementAudioSourceHandler(node, mediaElement)); 58 return adoptRef(new MediaElementAudioSourceHandler(node, mediaElement));
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 BaseAudioContext::AutoLocker contextLocker(context()); 102 BaseAudioContext::AutoLocker contextLocker(context());
103 103
104 // Do any necesssary re-configuration to the output's number of chan nels. 104 // Do any necesssary re-configuration to the output's number of chan nels.
105 output(0).setNumberOfChannels(numberOfChannels); 105 output(0).setNumberOfChannels(numberOfChannels);
106 } 106 }
107 } 107 }
108 } 108 }
109 109
110 bool MediaElementAudioSourceHandler::passesCORSAccessCheck() 110 bool MediaElementAudioSourceHandler::passesCORSAccessCheck()
111 { 111 {
112 ASSERT(mediaElement()); 112 DCHECK(mediaElement());
113 113
114 return (mediaElement()->webMediaPlayer() && mediaElement()->webMediaPlayer() ->didPassCORSAccessCheck()) 114 return (mediaElement()->webMediaPlayer() && mediaElement()->webMediaPlayer() ->didPassCORSAccessCheck())
115 || m_passesCurrentSrcCORSAccessCheck; 115 || m_passesCurrentSrcCORSAccessCheck;
116 } 116 }
117 117
118 void MediaElementAudioSourceHandler::onCurrentSrcChanged(const KURL& currentSrc) 118 void MediaElementAudioSourceHandler::onCurrentSrcChanged(const KURL& currentSrc)
119 { 119 {
120 ASSERT(isMainThread()); 120 DCHECK(isMainThread());
121 121
122 // Synchronize with process(). 122 // Synchronize with process().
123 Locker<MediaElementAudioSourceHandler> locker(*this); 123 Locker<MediaElementAudioSourceHandler> locker(*this);
124 124
125 m_passesCurrentSrcCORSAccessCheck = passesCurrentSrcCORSAccessCheck(currentS rc); 125 m_passesCurrentSrcCORSAccessCheck = passesCurrentSrcCORSAccessCheck(currentS rc);
126 126
127 // Make a note if we need to print a console message and save the |curentSrc | for use in the 127 // Make a note if we need to print a console message and save the |curentSrc | for use in the
128 // message. Need to wait until later to print the message in case HTMLMedia Element allows 128 // message. Need to wait until later to print the message in case HTMLMedia Element allows
129 // access. 129 // access.
130 m_maybePrintCORSMessage = !m_passesCurrentSrcCORSAccessCheck; 130 m_maybePrintCORSMessage = !m_passesCurrentSrcCORSAccessCheck;
131 m_currentSrcString = currentSrc.getString(); 131 m_currentSrcString = currentSrc.getString();
132 } 132 }
133 133
134 bool MediaElementAudioSourceHandler::passesCurrentSrcCORSAccessCheck(const KURL& currentSrc) 134 bool MediaElementAudioSourceHandler::passesCurrentSrcCORSAccessCheck(const KURL& currentSrc)
135 { 135 {
136 ASSERT(isMainThread()); 136 DCHECK(isMainThread());
137 return context()->getSecurityOrigin() && context()->getSecurityOrigin()->can Request(currentSrc); 137 return context()->getSecurityOrigin() && context()->getSecurityOrigin()->can Request(currentSrc);
138 } 138 }
139 139
140 void MediaElementAudioSourceHandler::printCORSMessage(const String& message) 140 void MediaElementAudioSourceHandler::printCORSMessage(const String& message)
141 { 141 {
142 if (context()->getExecutionContext()) { 142 if (context()->getExecutionContext()) {
143 context()->getExecutionContext()->addConsoleMessage( 143 context()->getExecutionContext()->addConsoleMessage(
144 ConsoleMessage::create(SecurityMessageSource, InfoMessageLevel, 144 ConsoleMessage::create(SecurityMessageSource, InfoMessageLevel,
145 "MediaElementAudioSource outputs zeroes due to CORS access restr ictions for " + message)); 145 "MediaElementAudioSource outputs zeroes due to CORS access restr ictions for " + message));
146 } 146 }
147 } 147 }
148 148
149 void MediaElementAudioSourceHandler::process(size_t numberOfFrames) 149 void MediaElementAudioSourceHandler::process(size_t numberOfFrames)
150 { 150 {
151 AudioBus* outputBus = output(0).bus(); 151 AudioBus* outputBus = output(0).bus();
152 152
153 // Use a tryLock() to avoid contention in the real-time audio thread. 153 // Use a tryLock() to avoid contention in the real-time audio thread.
154 // If we fail to acquire the lock then the HTMLMediaElement must be in the m iddle of 154 // If we fail to acquire the lock then the HTMLMediaElement must be in the m iddle of
155 // reconfiguring its playback engine, so we output silence in this case. 155 // reconfiguring its playback engine, so we output silence in this case.
156 MutexTryLocker tryLocker(m_processLock); 156 MutexTryLocker tryLocker(m_processLock);
157 if (tryLocker.locked()) { 157 if (tryLocker.locked()) {
158 if (!mediaElement() || !m_sourceNumberOfChannels || !m_sourceSampleRate) { 158 if (!mediaElement() || !m_sourceNumberOfChannels || !m_sourceSampleRate) {
159 outputBus->zero(); 159 outputBus->zero();
160 return; 160 return;
161 } 161 }
162 AudioSourceProvider& provider = mediaElement()->getAudioSourceProvider() ; 162 AudioSourceProvider& provider = mediaElement()->getAudioSourceProvider() ;
163 // Grab data from the provider so that the element continues to make pro gress, even if 163 // Grab data from the provider so that the element continues to make pro gress, even if
164 // we're going to output silence anyway. 164 // we're going to output silence anyway.
165 if (m_multiChannelResampler.get()) { 165 if (m_multiChannelResampler.get()) {
166 ASSERT(m_sourceSampleRate != sampleRate()); 166 DCHECK_NE(m_sourceSampleRate, sampleRate());
167 m_multiChannelResampler->process(&provider, outputBus, numberOfFrame s); 167 m_multiChannelResampler->process(&provider, outputBus, numberOfFrame s);
168 } else { 168 } else {
169 // Bypass the resampler completely if the source is at the context's sample-rate. 169 // Bypass the resampler completely if the source is at the context's sample-rate.
170 ASSERT(m_sourceSampleRate == sampleRate()); 170 DCHECK_EQ(m_sourceSampleRate, sampleRate());
171 provider.provideInput(outputBus, numberOfFrames); 171 provider.provideInput(outputBus, numberOfFrames);
172 } 172 }
173 // Output silence if we don't have access to the element. 173 // Output silence if we don't have access to the element.
174 if (!passesCORSAccessCheck()) { 174 if (!passesCORSAccessCheck()) {
175 if (m_maybePrintCORSMessage) { 175 if (m_maybePrintCORSMessage) {
176 // Print a CORS message, but just once for each change in the cu rrent media 176 // Print a CORS message, but just once for each change in the cu rrent media
177 // element source, and only if we have a document to print to. 177 // element source, and only if we have a document to print to.
178 m_maybePrintCORSMessage = false; 178 m_maybePrintCORSMessage = false;
179 if (context()->getExecutionContext()) { 179 if (context()->getExecutionContext()) {
180 context()->getExecutionContext()->postTask(BLINK_FROM_HERE, 180 context()->getExecutionContext()->postTask(BLINK_FROM_HERE,
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 mediaElementAudioSourceHandler().lock(); 266 mediaElementAudioSourceHandler().lock();
267 } 267 }
268 268
269 void MediaElementAudioSourceNode::unlock() 269 void MediaElementAudioSourceNode::unlock()
270 { 270 {
271 mediaElementAudioSourceHandler().unlock(); 271 mediaElementAudioSourceHandler().unlock();
272 } 272 }
273 273
274 } // namespace blink 274 } // namespace blink
275 275
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698