| Index: third_party/grpc/src/core/iomgr/exec_ctx.c
|
| diff --git a/third_party/WebKit/Source/platform/audio/AudioDSPKernel.h b/third_party/grpc/src/core/iomgr/exec_ctx.c
|
| similarity index 51%
|
| copy from third_party/WebKit/Source/platform/audio/AudioDSPKernel.h
|
| copy to third_party/grpc/src/core/iomgr/exec_ctx.c
|
| index 49466571abfd897cb5814994ba1d487d85268b7f..1fd79f6ebaccdb5a2703cb9fdce7b990150a2cbe 100644
|
| --- a/third_party/WebKit/Source/platform/audio/AudioDSPKernel.h
|
| +++ b/third_party/grpc/src/core/iomgr/exec_ctx.c
|
| @@ -1,5 +1,7 @@
|
| /*
|
| - * Copyright (C) 2010 Google Inc. All rights reserved.
|
| + *
|
| + * Copyright 2015-2016, Google Inc.
|
| + * All rights reserved.
|
| *
|
| * Redistribution and use in source and binary forms, with or without
|
| * modification, are permitted provided that the following conditions are
|
| @@ -26,55 +28,49 @@
|
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| + *
|
| */
|
|
|
| -#ifndef AudioDSPKernel_h
|
| -#define AudioDSPKernel_h
|
| -
|
| -#include "platform/audio/AudioDSPKernelProcessor.h"
|
| -#include "wtf/Allocator.h"
|
| +#include "src/core/iomgr/exec_ctx.h"
|
|
|
| -namespace blink {
|
| +#include <grpc/support/log.h>
|
|
|
| -// AudioDSPKernel does the processing for one channel of an AudioDSPKernelProcessor.
|
| -
|
| -class PLATFORM_EXPORT AudioDSPKernel {
|
| - USING_FAST_MALLOC(AudioDSPKernel);
|
| -public:
|
| - AudioDSPKernel(AudioDSPKernelProcessor* kernelProcessor)
|
| - : m_kernelProcessor(kernelProcessor)
|
| - , m_sampleRate(kernelProcessor->sampleRate())
|
| - {
|
| - }
|
| +#include "src/core/profiling/timers.h"
|
|
|
| - AudioDSPKernel(float sampleRate)
|
| - : m_kernelProcessor(nullptr)
|
| - , m_sampleRate(sampleRate)
|
| - {
|
| +bool grpc_exec_ctx_flush(grpc_exec_ctx *exec_ctx) {
|
| + bool did_something = 0;
|
| + GPR_TIMER_BEGIN("grpc_exec_ctx_flush", 0);
|
| + while (!grpc_closure_list_empty(exec_ctx->closure_list)) {
|
| + grpc_closure *c = exec_ctx->closure_list.head;
|
| + exec_ctx->closure_list.head = exec_ctx->closure_list.tail = NULL;
|
| + while (c != NULL) {
|
| + bool success = (bool)(c->final_data & 1);
|
| + grpc_closure *next = (grpc_closure *)(c->final_data & ~(uintptr_t)1);
|
| + did_something = true;
|
| + GPR_TIMER_BEGIN("grpc_exec_ctx_flush.cb", 0);
|
| + c->cb(exec_ctx, c->cb_arg, success);
|
| + GPR_TIMER_END("grpc_exec_ctx_flush.cb", 0);
|
| + c = next;
|
| }
|
| + }
|
| + GPR_TIMER_END("grpc_exec_ctx_flush", 0);
|
| + return did_something;
|
| +}
|
|
|
| - virtual ~AudioDSPKernel();
|
| -
|
| - // Subclasses must override process() to do the processing and reset() to reset DSP state.
|
| - virtual void process(const float* source, float* destination, size_t framesToProcess) = 0;
|
| - virtual void reset() = 0;
|
| -
|
| - float sampleRate() const { return m_sampleRate; }
|
| - double nyquist() const { return 0.5 * sampleRate(); }
|
| -
|
| - AudioDSPKernelProcessor* processor() { return m_kernelProcessor; }
|
| - const AudioDSPKernelProcessor* processor() const { return m_kernelProcessor; }
|
| -
|
| - virtual double tailTime() const = 0;
|
| - virtual double latencyTime() const = 0;
|
| -
|
| -protected:
|
| - // This raw pointer is safe because the AudioDSPKernelProcessor object is
|
| - // guaranteed to be kept alive while the AudioDSPKernel object is alive.
|
| - AudioDSPKernelProcessor* m_kernelProcessor;
|
| - float m_sampleRate;
|
| -};
|
| +void grpc_exec_ctx_finish(grpc_exec_ctx *exec_ctx) {
|
| + grpc_exec_ctx_flush(exec_ctx);
|
| +}
|
|
|
| -} // namespace blink
|
| +void grpc_exec_ctx_enqueue(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
|
| + bool success,
|
| + grpc_workqueue *offload_target_or_null) {
|
| + GPR_ASSERT(offload_target_or_null == NULL);
|
| + grpc_closure_list_add(&exec_ctx->closure_list, closure, success);
|
| +}
|
|
|
| -#endif // AudioDSPKernel_h
|
| +void grpc_exec_ctx_enqueue_list(grpc_exec_ctx *exec_ctx,
|
| + grpc_closure_list *list,
|
| + grpc_workqueue *offload_target_or_null) {
|
| + GPR_ASSERT(offload_target_or_null == NULL);
|
| + grpc_closure_list_move(list, &exec_ctx->closure_list);
|
| +}
|
|
|