Changeset 89478 in webkit
- Timestamp:
- Jun 22, 2011, 2:14:38 PM (14 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 4 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r89475 r89478 1 2011-06-22 Chris Rogers <crogers@google.com> 2 3 Reviewed by Kenneth Russell. 4 5 AudioContext needs non-blocking call to create AudioBuffer from audio file data 6 https://bugs.webkit.org/show_bug.cgi?id=61947 7 8 No new tests since audio API is not yet implemented. 9 10 * DerivedSources.make: 11 * WebCore.gypi: 12 * WebCore.xcodeproj/project.pbxproj: 13 * webaudio/AsyncAudioDecoder.cpp: Added. 14 (WebCore::AsyncAudioDecoder::AsyncAudioDecoder): 15 (WebCore::AsyncAudioDecoder::~AsyncAudioDecoder): 16 (WebCore::AsyncAudioDecoder::decodeAsync): 17 (WebCore::AsyncAudioDecoder::threadEntry): 18 (WebCore::AsyncAudioDecoder::runLoop): 19 (WebCore::AsyncAudioDecoder::DecodingTask::DecodingTask): 20 (WebCore::AsyncAudioDecoder::DecodingTask::decode): 21 (WebCore::AsyncAudioDecoder::DecodingTask::notifyCompleteDispatch): 22 (WebCore::AsyncAudioDecoder::DecodingTask::notifyComplete): 23 * webaudio/AsyncAudioDecoder.h: Added. 24 (WebCore::AsyncAudioDecoder::DecodingTask::audioData): 25 (WebCore::AsyncAudioDecoder::DecodingTask::sampleRate): 26 (WebCore::AsyncAudioDecoder::DecodingTask::successCallback): 27 (WebCore::AsyncAudioDecoder::DecodingTask::errorCallback): 28 (WebCore::AsyncAudioDecoder::DecodingTask::audioBuffer): 29 * webaudio/AudioBufferCallback.h: Added. 30 (WebCore::AudioBufferCallback::~AudioBufferCallback): 31 * webaudio/AudioBufferCallback.idl: Added. 32 * webaudio/AudioContext.cpp: 33 (WebCore::AudioContext::decodeAudioData): 34 * webaudio/AudioContext.h: 35 * webaudio/AudioContext.idl: 36 1 37 2011-06-22 Beth Dakin <bdakin@apple.com> 2 38 -
trunk/Source/WebCore/DerivedSources.make
r89406 r89478 56 56 Attr \ 57 57 AudioBuffer \ 58 AudioBufferCallback \ 58 59 AudioBufferSourceNode \ 59 60 AudioChannelSplitter \ -
trunk/Source/WebCore/WebCore.gypi
r89452 r89478 1416 1416 'storage/StorageInfoUsageCallback.idl', 1417 1417 'webaudio/AudioBuffer.idl', 1418 'webaudio/AudioBufferCallback.idl', 1418 1419 'webaudio/AudioBufferSourceNode.idl', 1419 1420 'webaudio/AudioChannelMerger.idl', … … 5993 5994 'webaudio/AudioBuffer.cpp', 5994 5995 'webaudio/AudioBuffer.h', 5996 'webaudio/AudioBufferCallback.h', 5995 5997 'webaudio/AudioBufferSourceNode.cpp', 5996 5998 'webaudio/AudioBufferSourceNode.h', … … 6023 6025 'webaudio/AudioProcessingEvent.h', 6024 6026 'webaudio/AudioSourceNode.h', 6027 'webaudio/AsyncAudioDecoder.cpp', 6028 'webaudio/AsyncAudioDecoder.h', 6025 6029 'webaudio/BiquadDSPKernel.cpp', 6026 6030 'webaudio/BiquadDSPKernel.h', -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r89431 r89478 5835 5835 FD537356137B653B00008DCE /* DynamicsCompressorKernel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD537354137B653B00008DCE /* DynamicsCompressorKernel.cpp */; }; 5836 5836 FD537357137B653B00008DCE /* DynamicsCompressorKernel.h in Headers */ = {isa = PBXBuildFile; fileRef = FD537355137B653B00008DCE /* DynamicsCompressorKernel.h */; }; 5837 FD5686C913AC180200B69C68 /* AsyncAudioDecoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD5686C713AC180200B69C68 /* AsyncAudioDecoder.cpp */; }; 5838 FD5686CA13AC180200B69C68 /* AsyncAudioDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = FD5686C813AC180200B69C68 /* AsyncAudioDecoder.h */; }; 5839 FD5686CC13AC181400B69C68 /* AudioBufferCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = FD5686CB13AC181400B69C68 /* AudioBufferCallback.h */; }; 5837 5840 FD6ED2C3136B8E42003CF072 /* DynamicsCompressorNode.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD6ED2C1136B8E42003CF072 /* DynamicsCompressorNode.cpp */; }; 5838 5841 FD6ED2C4136B8E42003CF072 /* DynamicsCompressorNode.h in Headers */ = {isa = PBXBuildFile; fileRef = FD6ED2C2136B8E42003CF072 /* DynamicsCompressorNode.h */; }; … … 5896 5899 FDF6BAF8134A4C9800822920 /* JSOfflineAudioCompletionEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDF6BAF6134A4C9800822920 /* JSOfflineAudioCompletionEvent.cpp */; }; 5897 5900 FDF6BAF9134A4C9800822920 /* JSOfflineAudioCompletionEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = FDF6BAF7134A4C9800822920 /* JSOfflineAudioCompletionEvent.h */; }; 5901 FDF7E9C313AC21DB00A51EAC /* JSAudioBufferCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FDF7E9C113AC21DB00A51EAC /* JSAudioBufferCallback.cpp */; }; 5902 FDF7E9C413AC21DB00A51EAC /* JSAudioBufferCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = FDF7E9C213AC21DB00A51EAC /* JSAudioBufferCallback.h */; }; 5898 5903 FE6FD4880F676E5700092873 /* Coordinates.h in Headers */ = {isa = PBXBuildFile; fileRef = FE6FD4850F676E5700092873 /* Coordinates.h */; settings = {ATTRIBUTES = (Private, ); }; }; 5899 5904 FE6FD48D0F676E9300092873 /* JSCoordinates.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE6FD48B0F676E9300092873 /* JSCoordinates.cpp */; }; … … 12532 12537 FD537354137B653B00008DCE /* DynamicsCompressorKernel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicsCompressorKernel.cpp; sourceTree = "<group>"; }; 12533 12538 FD537355137B653B00008DCE /* DynamicsCompressorKernel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicsCompressorKernel.h; sourceTree = "<group>"; }; 12539 FD5686C713AC180200B69C68 /* AsyncAudioDecoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AsyncAudioDecoder.cpp; sourceTree = "<group>"; }; 12540 FD5686C813AC180200B69C68 /* AsyncAudioDecoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AsyncAudioDecoder.h; sourceTree = "<group>"; }; 12541 FD5686CB13AC181400B69C68 /* AudioBufferCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioBufferCallback.h; sourceTree = "<group>"; }; 12542 FD5686CD13AC183E00B69C68 /* AudioBufferCallback.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioBufferCallback.idl; sourceTree = "<group>"; }; 12534 12543 FD6ED2C1136B8E42003CF072 /* DynamicsCompressorNode.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DynamicsCompressorNode.cpp; sourceTree = "<group>"; }; 12535 12544 FD6ED2C2136B8E42003CF072 /* DynamicsCompressorNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DynamicsCompressorNode.h; sourceTree = "<group>"; }; … … 12596 12605 FDF6BAF6134A4C9800822920 /* JSOfflineAudioCompletionEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSOfflineAudioCompletionEvent.cpp; sourceTree = "<group>"; }; 12597 12606 FDF6BAF7134A4C9800822920 /* JSOfflineAudioCompletionEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSOfflineAudioCompletionEvent.h; sourceTree = "<group>"; }; 12607 FDF7E9C113AC21DB00A51EAC /* JSAudioBufferCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioBufferCallback.cpp; sourceTree = "<group>"; }; 12608 FDF7E9C213AC21DB00A51EAC /* JSAudioBufferCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioBufferCallback.h; sourceTree = "<group>"; }; 12598 12609 FE49EF970DC51462004266E1 /* DashboardSupportCSSPropertyNames.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DashboardSupportCSSPropertyNames.in; sourceTree = "<group>"; }; 12599 12610 FE6FD4850F676E5700092873 /* Coordinates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Coordinates.h; sourceTree = "<group>"; }; … … 19811 19822 isa = PBXGroup; 19812 19823 children = ( 19824 FD5686C713AC180200B69C68 /* AsyncAudioDecoder.cpp */, 19825 FD5686C813AC180200B69C68 /* AsyncAudioDecoder.h */, 19813 19826 FD315FAC12B0267500C1A359 /* AudioBasicProcessorNode.cpp */, 19814 19827 FD315FAD12B0267500C1A359 /* AudioBasicProcessorNode.h */, … … 19816 19829 FD315FAF12B0267500C1A359 /* AudioBuffer.h */, 19817 19830 FD315FB012B0267500C1A359 /* AudioBuffer.idl */, 19831 FD5686CB13AC181400B69C68 /* AudioBufferCallback.h */, 19832 FD5686CD13AC183E00B69C68 /* AudioBufferCallback.idl */, 19818 19833 FD315FB112B0267500C1A359 /* AudioBufferSourceNode.cpp */, 19819 19834 FD315FB212B0267500C1A359 /* AudioBufferSourceNode.h */, … … 19991 20006 FDA15E8112B03EE1003A583A /* JSAudioBuffer.cpp */, 19992 20007 FDA15E8212B03EE1003A583A /* JSAudioBuffer.h */, 20008 FDF7E9C113AC21DB00A51EAC /* JSAudioBufferCallback.cpp */, 20009 FDF7E9C213AC21DB00A51EAC /* JSAudioBufferCallback.h */, 19993 20010 FDA15E8312B03EE1003A583A /* JSAudioBufferSourceNode.cpp */, 19994 20011 FDA15E8412B03EE1003A583A /* JSAudioBufferSourceNode.h */, … … 23015 23032 FD537353137B651800008DCE /* ZeroPole.h in Headers */, 23016 23033 985BB96E13A94058007A0B69 /* LinkRelAttribute.h in Headers */, 23034 FD5686CA13AC180200B69C68 /* AsyncAudioDecoder.h in Headers */, 23035 FD5686CC13AC181400B69C68 /* AudioBufferCallback.h in Headers */, 23036 FDF7E9C413AC21DB00A51EAC /* JSAudioBufferCallback.h in Headers */, 23017 23037 B1AD4E5D13A12A0B00846B27 /* CueIndex.h in Headers */, 23018 23038 B1AD4E5F13A12A0B00846B27 /* LoadableTextTrack.h in Headers */, … … 25771 25791 FD537352137B651800008DCE /* ZeroPole.cpp in Sources */, 25772 25792 985BB96D13A94058007A0B69 /* LinkRelAttribute.cpp in Sources */, 25793 FD5686C913AC180200B69C68 /* AsyncAudioDecoder.cpp in Sources */, 25794 FDF7E9C313AC21DB00A51EAC /* JSAudioBufferCallback.cpp in Sources */, 25773 25795 B1AD4E5C13A12A0B00846B27 /* CueIndex.cpp in Sources */, 25774 25796 B1AD4E5E13A12A0B00846B27 /* LoadableTextTrack.cpp in Sources */, -
trunk/Source/WebCore/webaudio/AudioContext.cpp
r88380 r89478 30 30 31 31 #include "ArrayBuffer.h" 32 #include "AsyncAudioDecoder.h" 32 33 #include "AudioBuffer.h" 34 #include "AudioBufferCallback.h" 33 35 #include "AudioBufferSourceNode.h" 34 36 #include "AudioChannelMerger.h" … … 247 249 } 248 250 251 void AudioContext::decodeAudioData(ArrayBuffer* audioData, PassRefPtr<AudioBufferCallback> successCallback, PassRefPtr<AudioBufferCallback> errorCallback, ExceptionCode& ec) 252 { 253 if (!audioData) { 254 ec = SYNTAX_ERR; 255 return; 256 } 257 m_audioDecoder.decodeAsync(audioData, sampleRate(), successCallback, errorCallback); 258 } 259 249 260 PassRefPtr<AudioBufferSourceNode> AudioContext::createBufferSource() 250 261 { -
trunk/Source/WebCore/webaudio/AudioContext.h
r88380 r89478 27 27 28 28 #include "ActiveDOMObject.h" 29 #include "AsyncAudioDecoder.h" 29 30 #include "AudioBus.h" 30 31 #include "AudioDestinationNode.h" … … 45 46 class ArrayBuffer; 46 47 class AudioBuffer; 48 class AudioBufferCallback; 47 49 class AudioBufferSourceNode; 48 50 class AudioChannelMerger; … … 93 95 PassRefPtr<AudioBuffer> createBuffer(unsigned numberOfChannels, size_t numberOfFrames, double sampleRate); 94 96 PassRefPtr<AudioBuffer> createBuffer(ArrayBuffer* arrayBuffer, bool mixToMono); 97 98 // Asynchronous audio file data decoding. 99 void decodeAudioData(ArrayBuffer*, PassRefPtr<AudioBufferCallback>, PassRefPtr<AudioBufferCallback>, ExceptionCode& ec); 95 100 96 101 // Keep track of this buffer so we can release memory after the context is shut down... … … 292 297 293 298 bool m_isOfflineContext; 299 300 AsyncAudioDecoder m_audioDecoder; 294 301 }; 295 302 -
trunk/Source/WebCore/webaudio/AudioContext.idl
r89148 r89478 53 53 [Custom] AudioBuffer createBuffer() 54 54 raises(DOMException); 55 56 // Asynchronous audio file data decoding. 57 void decodeAudioData(in ArrayBuffer audioData, in [Callback] AudioBufferCallback successCallback, in [Optional, Callback] AudioBufferCallback errorCallback) 58 raises(DOMException); 55 59 56 60 // Source
Note:
See TracChangeset
for help on using the changeset viewer.