frameflow
Version:
Audio/Video stream processing library for JavaScript world
70 lines (69 loc) • 2.25 kB
TypeScript
/// <reference types="dom-webcodecs" />
import { SourceStream } from './globals';
import { FFWorker } from "./message";
import { ChunkData, SourceNode, SourceType, TargetNode, WriteChunkData } from "./types/graph";
import { BufferPool } from './utils';
declare type SourceStreamCreator = (seekPos: number) => Promise<SourceStream<ChunkData>>;
export declare function getSourceInfo(src: SourceType): Promise<{
size: number;
url?: string;
isHLS?: boolean;
}>;
export declare const sourceToStreamCreator: (src: SourceType) => SourceStreamCreator;
export declare class FileReader {
#private;
source: SourceType;
streamCreator: SourceStreamCreator;
stream: SourceStream<ChunkData> | undefined;
worker: FFWorker;
constructor(id: string, source: SourceType, worker: FFWorker);
get url(): string;
get end(): boolean;
}
export declare class StreamReader {
#private;
cacheData: ChunkData[];
worker: FFWorker;
stream: SourceStream<ChunkData>;
bufferPool: BufferPool;
constructor(id: string, cacheData: ChunkData[], stream: SourceStream<ChunkData>, worker: FFWorker);
get end(): boolean;
probe(): Promise<ChunkData | undefined>;
read(): Promise<Uint8Array | VideoFrame | AudioData | undefined>;
close(source: SourceNode): void;
}
declare type Reader = FileReader | StreamReader;
/**
* Generic data type for all data buffer with unified API.
*/
export declare class Chunk {
#private;
worker: FFWorker;
id: string;
constructor(data: ChunkData | WriteChunkData, worker: FFWorker, id: string);
get data(): Uint8Array | undefined;
get videoFrame(): VideoFrame | undefined;
get audioData(): AudioData | undefined;
get offset(): number;
close(): void;
}
/**
* stream output handler
*/
export declare function newExporter(node: TargetNode, worker: FFWorker): Promise<Exporter>;
/**
* Exporter is a class that exports data from a graph.
*/
export declare class Exporter {
id: string;
worker: FFWorker;
readers: Reader[];
constructor(id: string, worker: FFWorker, readers: Reader[]);
next(): Promise<{
output: Chunk[];
progress: number;
done: boolean;
}>;
close(): Promise<void>;
}
export {};