@ngx-telly/plugin-vu-meter
Version:
Telly - Vu meter plugin
86 lines (80 loc) • 3.74 kB
TypeScript
import * as _angular_core from '@angular/core';
import { OnInit, OnDestroy, OnChanges, SimpleChanges, EnvironmentProviders } from '@angular/core';
import { BehaviorSubject, Subject } from 'rxjs';
import { PlayerComponent } from '@ngx-telly/player';
declare class VuMeterService {
show$: BehaviorSubject<boolean>;
reconfigure$: Subject<void>;
on(): void;
off(): void;
toggle(): void;
reconfigure(): void;
isVisible(): boolean;
static ɵfac: _angular_core.ɵɵFactoryDeclaration<VuMeterService, never>;
static ɵprov: _angular_core.ɵɵInjectableDeclaration<VuMeterService>;
}
interface Level {
channel: string;
rms: number;
db: number;
normalized: number;
peak: number;
}
declare class TellyVuMeterComponent implements OnInit, OnDestroy, OnChanges {
display: string;
fftSize: number;
channelCount: number;
channelNames: string[];
peakHoldTime: number;
peakDecayRate: number;
peakAccelerationFactor: number;
updateRateMs: number;
readonly service: VuMeterService;
readonly player: PlayerComponent;
private readonly subscription;
private readonly audioNodes;
private readonly analysisState;
private gestureAbortController?;
private reconfigureTimeout?;
private destroyed;
readonly levels: _angular_core.WritableSignal<Level[]>;
readonly initializing: _angular_core.WritableSignal<boolean>;
readonly reconfiguring: _angular_core.WritableSignal<boolean>;
readonly showVolumeWarning: _angular_core.WritableSignal<boolean>;
ngOnInit(): void;
ngOnChanges(changes: SimpleChanges): void;
ngOnDestroy(): void;
private setupVisibilitySubscription;
private reconfigure;
private updateChannelCount;
private initializeAudioAndStartAnalysis;
private initializeAudioContext;
private waitForUserGesture;
private waitForAudioTrack;
private usesCaptureStream;
private reconnectSource;
private connectAudioGraphAndStartAnalysis;
private buildAudioGraph;
private startAnalysis;
private runAnalysisLoop;
private calculateChannelLevel;
private updatePeakHold;
private stopAnalysis;
private getChannelNames;
private disconnectAudioGraph;
private cleanupAudioContext;
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TellyVuMeterComponent, never>;
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TellyVuMeterComponent, "telly-vu-meter", never, { "fftSize": { "alias": "fftSize"; "required": false; }; "channelCount": { "alias": "channelCount"; "required": false; }; "channelNames": { "alias": "channelNames"; "required": false; }; "peakHoldTime": { "alias": "peakHoldTime"; "required": false; }; "peakDecayRate": { "alias": "peakDecayRate"; "required": false; }; "peakAccelerationFactor": { "alias": "peakAccelerationFactor"; "required": false; }; "updateRateMs": { "alias": "updateRateMs"; "required": false; }; }, {}, never, never, true, never>;
}
declare class TellyVuMeterToggleComponent {
icon: _angular_core.InputSignal<string>;
size: _angular_core.InputSignal<string>;
service: VuMeterService;
title: string;
onClick(): void;
static ɵfac: _angular_core.ɵɵFactoryDeclaration<TellyVuMeterToggleComponent, never>;
static ɵcmp: _angular_core.ɵɵComponentDeclaration<TellyVuMeterToggleComponent, "telly-vu-meter-toggle", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}
declare function provideTellyVuMeter(): EnvironmentProviders;
export { TellyVuMeterComponent, TellyVuMeterToggleComponent, VuMeterService, provideTellyVuMeter };
export type { Level };