@meframe/core
Version:
Next generation media processing framework based on WebCodecs
89 lines • 2.49 kB
TypeScript
/**
* Utility functions for handling Transferable objects
* Simplifies the process of transferring ownership of objects between workers
*/
/**
* Check if an object is transferable
*/
export declare function isTransferable(obj: any): obj is Transferable;
/**
* Extract transferable objects from a payload
*/
export declare function extractTransferables(payload: any): Transferable[];
/**
* Wrap VideoFrame for transfer with metadata
*/
export declare function wrapVideoFrame(frame: VideoFrame): {
frame: VideoFrame;
metadata: {
timestamp: number;
duration: number | null;
codedWidth: number;
codedHeight: number;
displayWidth: number;
displayHeight: number;
format: VideoPixelFormat | null;
};
};
/**
* Wrap AudioData for transfer with metadata
*/
export declare function wrapAudioData(audio: AudioData): {
audio: AudioData;
metadata: {
timestamp: number;
duration: number;
numberOfFrames: number;
numberOfChannels: number;
sampleRate: number;
format: AudioSampleFormat | null;
};
};
/**
* Convert EncodedVideoChunk to transferable format
*/
export declare function encodedVideoChunkToTransferable(chunk: EncodedVideoChunk): {
data: ArrayBuffer;
type: EncodedVideoChunkType;
timestamp: number;
duration: number | null;
};
/**
* Convert EncodedAudioChunk to transferable format
*/
export declare function encodedAudioChunkToTransferable(chunk: EncodedAudioChunk): {
data: ArrayBuffer;
type: EncodedAudioChunkType;
timestamp: number;
duration: number | null;
};
/**
* Recreate EncodedVideoChunk from transferable format
*/
export declare function transferableToEncodedVideoChunk(transferable: {
data: ArrayBuffer;
type: 'key' | 'delta';
timestamp: number;
duration?: number;
}): EncodedVideoChunk;
/**
* Recreate EncodedAudioChunk from transferable format
*/
export declare function transferableToEncodedAudioChunk(transferable: {
data: ArrayBuffer;
type: 'key' | 'delta';
timestamp: number;
duration?: number;
}): EncodedAudioChunk;
/**
* Transfer OffscreenCanvas control to worker
*/
export declare function transferCanvas(canvas: HTMLCanvasElement): OffscreenCanvas;
/**
* Create a transferable stream pair
*/
export declare function createStreamPair<T>(): {
readable: ReadableStream<T>;
writable: WritableStream<T>;
};
//# sourceMappingURL=transferable-helper.d.ts.map