Chromium Code Reviews| Index: third_party/WebKit/Source/modules/webaudio/AsyncAudioDecoder.cpp |
| diff --git a/third_party/WebKit/Source/modules/webaudio/AsyncAudioDecoder.cpp b/third_party/WebKit/Source/modules/webaudio/AsyncAudioDecoder.cpp |
| index 2c30b37c4134e5e64cb9cf795c1976b6b382f3a5..b7432b41a15ede884aeeb0016552f8a2db4d0e69 100644 |
| --- a/third_party/WebKit/Source/modules/webaudio/AsyncAudioDecoder.cpp |
| +++ b/third_party/WebKit/Source/modules/webaudio/AsyncAudioDecoder.cpp |
| @@ -30,21 +30,13 @@ |
| #include "platform/CrossThreadFunctional.h" |
| #include "platform/audio/AudioBus.h" |
| #include "platform/audio/AudioFileReader.h" |
| +#include "platform/threading/BackgroundTaskRunner.h" |
| #include "public/platform/Platform.h" |
| #include "public/platform/WebTraceLocation.h" |
| #include "wtf/PtrUtil.h" |
| namespace blink { |
| -AsyncAudioDecoder::AsyncAudioDecoder() |
| - : m_thread(wrapUnique(Platform::current()->createThread("Audio Decoder"))) |
| -{ |
| -} |
| - |
| -AsyncAudioDecoder::~AsyncAudioDecoder() |
| -{ |
| -} |
| - |
| void AsyncAudioDecoder::decodeAsync(DOMArrayBuffer* audioData, float sampleRate, AudioBufferCallback* successCallback, AudioBufferCallback* errorCallback, ScriptPromiseResolver* resolver, BaseAudioContext* context) |
| { |
| DCHECK(isMainThread()); |
| @@ -52,11 +44,13 @@ void AsyncAudioDecoder::decodeAsync(DOMArrayBuffer* audioData, float sampleRate, |
| if (!audioData) |
| return; |
| - m_thread->getWebTaskRunner()->postTask(BLINK_FROM_HERE, crossThreadBind(&AsyncAudioDecoder::decode, wrapCrossThreadPersistent(audioData), sampleRate, wrapCrossThreadPersistent(successCallback), wrapCrossThreadPersistent(errorCallback), wrapCrossThreadPersistent(resolver), wrapCrossThreadPersistent(context))); |
| + BackgroundTaskRunner::TaskSize taskSize = BackgroundTaskRunner::TaskSizeShortRunningTask; |
|
Raymond Toy
2016/08/24 23:08:46
Why short? Decoding long files is probably not a
hongchan
2016/08/24 23:10:19
TODO: The threshold for long/short task needs to b
|
| + BackgroundTaskRunner::postOnBackgroundThread(BLINK_FROM_HERE, crossThreadBind(&AsyncAudioDecoder::decodeOnBackgroundThread, wrapCrossThreadPersistent(audioData), sampleRate, wrapCrossThreadPersistent(successCallback), wrapCrossThreadPersistent(errorCallback), wrapCrossThreadPersistent(resolver), wrapCrossThreadPersistent(context)), taskSize); |
| } |
| -void AsyncAudioDecoder::decode(DOMArrayBuffer* audioData, float sampleRate, AudioBufferCallback* successCallback, AudioBufferCallback* errorCallback, ScriptPromiseResolver* resolver, BaseAudioContext* context) |
| +void AsyncAudioDecoder::decodeOnBackgroundThread(DOMArrayBuffer* audioData, float sampleRate, AudioBufferCallback* successCallback, AudioBufferCallback* errorCallback, ScriptPromiseResolver* resolver, BaseAudioContext* context) |
| { |
| + DCHECK(!isMainThread()); |
| RefPtr<AudioBus> bus = createBusFromInMemoryAudioFile(audioData->data(), audioData->byteLength(), false, sampleRate); |
| // Decoding is finished, but we need to do the callbacks on the main thread. |