400 lines
12 KiB
TypeScript
400 lines
12 KiB
TypeScript
|
declare interface AgoraApiExecutor<T> {
|
|||
|
onSuccess: (result: T) => void;
|
|||
|
onError: (err: Error) => void;
|
|||
|
}
|
|||
|
|
|||
|
export declare abstract class AudioExtension<Q extends AudioProcessor> extends Extension<Q> implements IAudioExtension<Q> {
|
|||
|
}
|
|||
|
|
|||
|
export declare abstract class AudioProcessor extends BaseProcessor implements IAudioProcessor {
|
|||
|
get kind(): Kind;
|
|||
|
protected inputNode?: AudioNode;
|
|||
|
protected outputNode?: AudioNode;
|
|||
|
protected destination?: IBaseProcessor;
|
|||
|
protected context?: IAudioProcessorContext;
|
|||
|
pipe(processor: IBaseProcessor): IBaseProcessor;
|
|||
|
unpipe(): void;
|
|||
|
protected output(output: MediaStreamTrack | AudioNode, context: IAudioProcessorContext): void;
|
|||
|
updateInput(inputOptions: {
|
|||
|
track?: MediaStreamTrack;
|
|||
|
node?: AudioNode;
|
|||
|
context: IAudioProcessorContext;
|
|||
|
}): void;
|
|||
|
reset(): void;
|
|||
|
/**
|
|||
|
* methods implemented by extension developer
|
|||
|
* */
|
|||
|
protected onNode?(audioNode: AudioNode, context: IProcessorContext): void | Promise<void>;
|
|||
|
}
|
|||
|
|
|||
|
export declare type AutoAdjustConfig = {
|
|||
|
checkDuration: number;
|
|||
|
checkTimes: number;
|
|||
|
targetAverageTime: number;
|
|||
|
targetFps: number;
|
|||
|
};
|
|||
|
|
|||
|
declare abstract class BaseProcessor extends EventEmitter_2 implements IBaseProcessor {
|
|||
|
protected inputTrack?: MediaStreamTrack;
|
|||
|
protected outputTrack?: MediaStreamTrack;
|
|||
|
protected _enabled: boolean;
|
|||
|
_source?: BaseProcessor;
|
|||
|
readonly ID: string;
|
|||
|
abstract get kind(): Kind;
|
|||
|
get enabled(): boolean;
|
|||
|
protected output(track: MediaStreamTrack, context: IProcessorContext): void;
|
|||
|
protected destination?: IBaseProcessor;
|
|||
|
protected context?: IProcessorContext;
|
|||
|
constructor();
|
|||
|
enable(): void | Promise<void>;
|
|||
|
disable(): void | Promise<void>;
|
|||
|
/**
|
|||
|
* methods/properties called by SDK/extension user
|
|||
|
* */
|
|||
|
abstract pipe(processor: IBaseProcessor): IBaseProcessor;
|
|||
|
abstract unpipe(): void;
|
|||
|
abstract updateInput(inputOptions: {
|
|||
|
track?: MediaStreamTrack;
|
|||
|
node?: AudioNode;
|
|||
|
context: IProcessorContext;
|
|||
|
}): void;
|
|||
|
abstract reset(): void;
|
|||
|
/**
|
|||
|
* methods implemented by extension developer
|
|||
|
* */
|
|||
|
abstract name: string;
|
|||
|
protected onTrack?(track: MediaStreamTrack, context: IProcessorContext): void | Promise<void>;
|
|||
|
protected onEnableChange?(enabled: boolean): void | Promise<void>;
|
|||
|
protected onPiped?(context: IProcessorContext): void;
|
|||
|
protected onUnpiped?(context?: IProcessorContext): void;
|
|||
|
}
|
|||
|
|
|||
|
export declare function CreateAutoAdjuster(backend: 'cpu' | 'gpu', direction: 'local' | 'remote', procecssor: BaseProcessor, config: AutoAdjustConfig): IAutoAdjuster;
|
|||
|
|
|||
|
declare interface EventEmitter {
|
|||
|
on(event: string, listener: Function): void;
|
|||
|
off(event: string, listener: Function): void;
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @ignore
|
|||
|
*/
|
|||
|
/** @en
|
|||
|
* @ignore
|
|||
|
*/
|
|||
|
declare class EventEmitter_2 {
|
|||
|
private _events;
|
|||
|
/**
|
|||
|
* 指定一个事件名,获取当前所有监听这个事件的回调函数。
|
|||
|
*
|
|||
|
* @param event - 事件名称。
|
|||
|
*/
|
|||
|
/** @en
|
|||
|
* Gets all the listeners for a specified event.
|
|||
|
*
|
|||
|
* @param event The event name.
|
|||
|
*/
|
|||
|
getListeners(event: string): Function[];
|
|||
|
/**
|
|||
|
* 监听一个指定的事件,当事件触发时会调用传入的回调函数。
|
|||
|
*
|
|||
|
* @param event - 指定事件的名称。
|
|||
|
* @param listener - 传入的回调函数。
|
|||
|
*/
|
|||
|
/** @en
|
|||
|
* Listens for a specified event.
|
|||
|
*
|
|||
|
* When the specified event happens, the SDK triggers the callback that you pass.
|
|||
|
* @param event The event name.
|
|||
|
* @param listener The callback to trigger.
|
|||
|
*/
|
|||
|
on(event: string, listener: Function): void;
|
|||
|
/**
|
|||
|
* 监听一个指定的事件,当事件触发时会调用传入的回调函数。
|
|||
|
*
|
|||
|
* 当监听后事件第一次触发时,该监听和回调函数就会被立刻移除,也就是只监听一次指定事件。
|
|||
|
*
|
|||
|
* @param event - 指定事件的名称。
|
|||
|
* @param listener - 传入的回调函数。
|
|||
|
*/
|
|||
|
/** @en
|
|||
|
* Listens for a specified event once.
|
|||
|
*
|
|||
|
* When the specified event happens, the SDK triggers the callback that you pass and then removes the listener.
|
|||
|
* @param event The event name.
|
|||
|
* @param listener The callback to trigger.
|
|||
|
*/
|
|||
|
once(event: string, listener: Function): void;
|
|||
|
/**
|
|||
|
* 取消一个指定事件的监听。
|
|||
|
*
|
|||
|
* @param event - 指定事件的名称。
|
|||
|
* @param listener - 监听事件时传入的回调函数。
|
|||
|
*/
|
|||
|
/** @en
|
|||
|
* Removes the listener for a specified event.
|
|||
|
*
|
|||
|
* @param event The event name.
|
|||
|
* @param listener The callback that corresponds to the event listener.
|
|||
|
*/
|
|||
|
off(event: string, listener: Function): void;
|
|||
|
/**
|
|||
|
* 指定一个事件,取消其所有的监听。
|
|||
|
*
|
|||
|
* @param event - 指定事件的名称,如果没有指定事件,则取消所有事件的所有监听。
|
|||
|
*/
|
|||
|
/** @en
|
|||
|
* Removes all listeners for a specified event.
|
|||
|
*
|
|||
|
* @param event The event name. If left empty, all listeners for all events are removed.
|
|||
|
*/
|
|||
|
removeAllListeners(event?: string): void;
|
|||
|
private _indexOfListener;
|
|||
|
emitAsPromise<T = any>(event: string, ...args: any[]): Promise<T>;
|
|||
|
emitAsPromiseNoResponse(event: string, ...args: any[]): Promise<void>;
|
|||
|
}
|
|||
|
|
|||
|
export declare abstract class Extension<T extends BaseProcessor> implements IExtension<T> {
|
|||
|
protected readonly __registered__: boolean;
|
|||
|
private logger;
|
|||
|
private reporter;
|
|||
|
protected parameters: IExtensionParameters;
|
|||
|
protected abstract _createProcessor(): T;
|
|||
|
checkCompatibility?(): boolean;
|
|||
|
createProcessor(): T;
|
|||
|
static setLogLevel(level: number): void;
|
|||
|
}
|
|||
|
|
|||
|
export declare interface IAudioExtension<T extends IAudioProcessor> extends IExtension<T> {
|
|||
|
createProcessor(): T;
|
|||
|
}
|
|||
|
|
|||
|
export declare interface IAudioProcessor extends IBaseProcessor {
|
|||
|
/** @ignore */
|
|||
|
updateInput(inputOptions: {
|
|||
|
track?: MediaStreamTrack;
|
|||
|
node?: AudioNode;
|
|||
|
context: IAudioProcessorContext;
|
|||
|
}): void;
|
|||
|
}
|
|||
|
|
|||
|
export declare interface IAudioProcessorContext extends IProcessorContext {
|
|||
|
getAudioContext(): AudioContext;
|
|||
|
}
|
|||
|
|
|||
|
export declare interface IAutoAdjuster {
|
|||
|
setConfig(config: AutoAdjustConfig): void;
|
|||
|
reset(): void;
|
|||
|
setMediaStreamTrackInfo(id: string, framerate?: number): void;
|
|||
|
getTrackFramerate(): number;
|
|||
|
onProcessFrame(startTime: number, endTime: number): Promise<boolean>;
|
|||
|
shouldDisableProcessor(startTime: number, endTime: number): Promise<boolean>;
|
|||
|
disableProcessor(): Promise<void>;
|
|||
|
}
|
|||
|
|
|||
|
export declare interface IBaseProcessor extends EventEmitter {
|
|||
|
/**
|
|||
|
* 处理器的名称。
|
|||
|
*/
|
|||
|
/**
|
|||
|
* @en
|
|||
|
* The name of this processor.
|
|||
|
*/
|
|||
|
readonly name: string;
|
|||
|
/**
|
|||
|
* 处理器的 ID。
|
|||
|
*/
|
|||
|
/**
|
|||
|
* @en
|
|||
|
* The ID of this processor.
|
|||
|
*/
|
|||
|
readonly ID: string;
|
|||
|
/**
|
|||
|
* 处理器的类型,标识用于视频或者音频。
|
|||
|
*/
|
|||
|
/**
|
|||
|
* @en
|
|||
|
* The type of processor, identify it is to process audio or video.
|
|||
|
*/
|
|||
|
kind: "video" | "audio";
|
|||
|
/**
|
|||
|
* 标识处理器的状态。
|
|||
|
*/
|
|||
|
/**
|
|||
|
* @en
|
|||
|
* The enabled state of processor.
|
|||
|
*/
|
|||
|
enabled: boolean;
|
|||
|
/**
|
|||
|
* 连接下一个处理器或者音频/视频输出。
|
|||
|
* @param processor 下一个处理器或者音频/视频输出终点。
|
|||
|
*/
|
|||
|
/**
|
|||
|
* @en
|
|||
|
* Pipe the next processor or audio/video destination.
|
|||
|
* @param processor The next processor or audio/video destination.
|
|||
|
*/
|
|||
|
pipe(processor: IBaseProcessor): IBaseProcessor;
|
|||
|
/**
|
|||
|
* 取消当前处理器到下一个的连接。
|
|||
|
*/
|
|||
|
/**
|
|||
|
* @en
|
|||
|
* Unpipe this processor to the next one.
|
|||
|
*/
|
|||
|
unpipe(): void;
|
|||
|
/**
|
|||
|
* 禁用当前处理器,将当前处理器的输入作为输出。
|
|||
|
*/
|
|||
|
/**
|
|||
|
* @en
|
|||
|
* Disable this processor, make the input of this processor as the output.
|
|||
|
*/
|
|||
|
disable(): void | Promise<void>;
|
|||
|
/**
|
|||
|
* 启用当前处理器。
|
|||
|
*/
|
|||
|
/**
|
|||
|
* @en
|
|||
|
* Enable the current processor.
|
|||
|
*/
|
|||
|
enable(): void | Promise<void>;
|
|||
|
/** @ignore */
|
|||
|
updateInput(inputOptions: {
|
|||
|
track?: MediaStreamTrack;
|
|||
|
node?: AudioNode;
|
|||
|
context: IProcessorContext;
|
|||
|
}): void;
|
|||
|
/** @ignore */
|
|||
|
reset(): void;
|
|||
|
}
|
|||
|
|
|||
|
export declare interface IExtension<T extends IBaseProcessor> {
|
|||
|
createProcessor(): T;
|
|||
|
checkCompatibility?(): boolean;
|
|||
|
}
|
|||
|
|
|||
|
export declare interface IExtensionLogger {
|
|||
|
debug(...args: any): void;
|
|||
|
info(...args: any): void;
|
|||
|
warning(...args: any): void;
|
|||
|
error(...args: any): void;
|
|||
|
setLogLevel(level: number): void;
|
|||
|
}
|
|||
|
|
|||
|
declare interface IExtensionParameters {
|
|||
|
[key: string]: any;
|
|||
|
}
|
|||
|
|
|||
|
export declare interface IExtensionReporter {
|
|||
|
reportApiInvoke<T>(params: ReportApiInvokeParams, throttleTime?: number): AgoraApiExecutor<T>;
|
|||
|
}
|
|||
|
|
|||
|
export declare interface IProcessorContext {
|
|||
|
getConstraints(): Promise<MediaTrackConstraints>;
|
|||
|
requestApplyConstraints(constraints: MediaTrackConstraints, processor: IBaseProcessor): Promise<void>;
|
|||
|
requestRevertConstraints(processor: IBaseProcessor): Promise<void>;
|
|||
|
registerStats(processor: IBaseProcessor, type: string, cb: () => any): void;
|
|||
|
unregisterStats(processor: IBaseProcessor, type: string): void;
|
|||
|
gatherStats(): ProcessorStats[];
|
|||
|
registerUsage(processor: IBaseProcessor, cb: () => Usage | Promise<Usage>): void;
|
|||
|
unregisterUsage(processor: IBaseProcessor): void;
|
|||
|
getDirection(): "local" | "remote";
|
|||
|
gatherUsage(): Promise<UsageWithDirection[]>;
|
|||
|
}
|
|||
|
|
|||
|
export declare type Kind = "video" | "audio";
|
|||
|
|
|||
|
declare class Logger implements IExtensionLogger {
|
|||
|
private logLevel;
|
|||
|
private hookLog?;
|
|||
|
/**
|
|||
|
* 设置 SDK 的日志输出级别
|
|||
|
* @param level - SDK 日志级别依次为 NONE(4),ERROR(3),WARNING(2),INFO(1),DEBUG(0)。选择一个级别,
|
|||
|
* 你就可以看到在该级别及该级别以上所有级别的日志信息。
|
|||
|
*
|
|||
|
* 例如,如果你输入代码 Logger.setLogLevel(1);,就可以看到 INFO,ERROR 和 WARNING 级别的日志信息。
|
|||
|
*/
|
|||
|
setLogLevel(level: number): void;
|
|||
|
debug(...args: any): void;
|
|||
|
info(...args: any): void;
|
|||
|
warning(...args: any): void;
|
|||
|
error(...args: any): void;
|
|||
|
private log;
|
|||
|
}
|
|||
|
|
|||
|
export declare const logger: Logger;
|
|||
|
|
|||
|
export declare interface ProcessorStats {
|
|||
|
processorID: string;
|
|||
|
processorName: string;
|
|||
|
type: string;
|
|||
|
stats: any;
|
|||
|
}
|
|||
|
|
|||
|
export declare class PromiseMutex {
|
|||
|
private lockingPromise;
|
|||
|
private locks;
|
|||
|
private name;
|
|||
|
private lockId;
|
|||
|
constructor(name?: string);
|
|||
|
get isLocked(): boolean;
|
|||
|
lock(info?: string): Promise<() => void>;
|
|||
|
}
|
|||
|
|
|||
|
declare interface ReportApiInvokeParams {
|
|||
|
name: string;
|
|||
|
options: any;
|
|||
|
reportResult?: boolean;
|
|||
|
timeout?: number;
|
|||
|
}
|
|||
|
|
|||
|
declare class Reporter implements IExtensionReporter {
|
|||
|
private apiInvokeMsgQueue;
|
|||
|
private hookApiInvoke?;
|
|||
|
reportApiInvoke<T>(params: ReportApiInvokeParams): AgoraApiExecutor<T>;
|
|||
|
private sendApiInvoke;
|
|||
|
}
|
|||
|
|
|||
|
export declare const reporter: Reporter;
|
|||
|
|
|||
|
export declare class Ticker {
|
|||
|
type: TICKER_TYPE;
|
|||
|
interval: number;
|
|||
|
private fn?;
|
|||
|
private _running;
|
|||
|
get running(): boolean;
|
|||
|
private _osc?;
|
|||
|
constructor(type: TICKER_TYPE, interval: number);
|
|||
|
add(fn: Function): void;
|
|||
|
remove(): void;
|
|||
|
start(): void;
|
|||
|
stop(): void;
|
|||
|
}
|
|||
|
|
|||
|
declare type TICKER_TYPE = "Timer" | "RAF" | "Oscillator";
|
|||
|
|
|||
|
export declare interface Usage {
|
|||
|
id: string;
|
|||
|
value: number;
|
|||
|
level: number;
|
|||
|
}
|
|||
|
|
|||
|
export declare interface UsageWithDirection extends Usage {
|
|||
|
direction: "local" | "remote";
|
|||
|
}
|
|||
|
|
|||
|
export declare abstract class VideoProcessor extends BaseProcessor {
|
|||
|
get kind(): Kind;
|
|||
|
pipe(processor: IBaseProcessor): IBaseProcessor;
|
|||
|
unpipe(): void;
|
|||
|
updateInput(inputOptions: {
|
|||
|
track?: MediaStreamTrack;
|
|||
|
node?: AudioNode;
|
|||
|
context: IProcessorContext;
|
|||
|
}): void;
|
|||
|
reset(): void;
|
|||
|
}
|
|||
|
|
|||
|
export { }
|