mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
e31cd426d8
We use a custom AudioNodeEngine for the destination nodes belonging to OfflineAudioContexts, and there we record the rendered buffer. Once the buffer is full, we resample it if the sampling rate of the OfflineAudioContext is different than the ideal sampling rate, and then we hand it off to the main thread in order for the complete event to be dispatched.
52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim:set ts=2 sw=2 sts=2 et cindent: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef OfflineAudioCompletionEvent_h_
|
|
#define OfflineAudioCompletionEvent_h_
|
|
|
|
#include "nsDOMEvent.h"
|
|
#include "AudioBuffer.h"
|
|
#include "AudioContext.h"
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
|
|
class OfflineAudioCompletionEvent : public nsDOMEvent,
|
|
public EnableWebAudioCheck
|
|
{
|
|
public:
|
|
OfflineAudioCompletionEvent(AudioContext* aOwner,
|
|
nsPresContext *aPresContext,
|
|
nsEvent *aEvent);
|
|
|
|
NS_DECL_ISUPPORTS_INHERITED
|
|
NS_FORWARD_TO_NSDOMEVENT
|
|
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(OfflineAudioCompletionEvent, nsDOMEvent)
|
|
|
|
virtual JSObject* WrapObject(JSContext* aCx,
|
|
JS::Handle<JSObject*> aScope) MOZ_OVERRIDE;
|
|
|
|
void InitEvent(AudioBuffer* aRenderedBuffer)
|
|
{
|
|
InitEvent(NS_LITERAL_STRING("complete"), false, false);
|
|
mRenderedBuffer = aRenderedBuffer;
|
|
}
|
|
|
|
AudioBuffer* RenderedBuffer() const
|
|
{
|
|
return mRenderedBuffer;
|
|
}
|
|
|
|
private:
|
|
nsRefPtr<AudioBuffer> mRenderedBuffer;
|
|
};
|
|
|
|
}
|
|
}
|
|
|
|
#endif
|
|
|