Handle basic state machine of recordings
This commit is contained in:
parent
afd53d8b53
commit
32e3ce3dea
9 changed files with 241 additions and 74 deletions
|
@ -25,6 +25,7 @@ import {IDestroyable} from "../utils/IDestroyable";
|
|||
import {Singleflight} from "../utils/Singleflight";
|
||||
import {PayloadEvent, WORKLET_NAME} from "./consts";
|
||||
import {arrayFastClone} from "../utils/arrays";
|
||||
import {UPDATE_EVENT} from "../stores/AsyncStore";
|
||||
|
||||
const CHANNELS = 1; // stereo isn't important
|
||||
const SAMPLE_RATE = 48000; // 48khz is what WebRTC uses. 12khz is where we lose quality.
|
||||
|
@ -79,6 +80,16 @@ export class VoiceRecording extends EventEmitter implements IDestroyable {
|
|||
return this.recorderContext.currentTime;
|
||||
}
|
||||
|
||||
public get isRecording(): boolean {
|
||||
return this.recording;
|
||||
}
|
||||
|
||||
public emit(event: string, ...args: any[]): boolean {
|
||||
super.emit(event, ...args);
|
||||
super.emit(UPDATE_EVENT, event, ...args);
|
||||
return true; // we don't ever care if the event had listeners, so just return "yes"
|
||||
}
|
||||
|
||||
private async makeRecorder() {
|
||||
this.recorderStream = await navigator.mediaDevices.getUserMedia({
|
||||
audio: {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue