import { clContext as nodenCLContext, OpenCLBuffer } from 'nodencl'; import { RedioPipe, RedioEnd } from 'redioactive'; import { Frame } from 'beamcoder'; import { Channel } from '../channel'; import { ConfigParams, VideoFormat, DeviceConfig, ConsumerConfig } from '../config'; import { ClJobs } from '../clJobQueue'; export interface Consumer { initialise(): Promise; connect(mixAudio: RedioPipe, mixVideo: RedioPipe): void; } export interface ConsumerFactory { createConsumer(chanID: string, params: ConfigParams, format: VideoFormat, device: DeviceConfig, clJobs: ClJobs): T; } export declare class ConsumerRegistry { private readonly consumerFactories; private readonly consumers; private readonly chanIDs; private readonly formats; private consumerIndex; constructor(clContext: nodenCLContext); createConsumer(chanNum: number, consumerIndex: number, params: ConfigParams, device: DeviceConfig, clJobs: ClJobs): Consumer; removeConsumer(chanNum: number, _channel: Channel, consumerIndex: number, params: ConfigParams): void; createConsumers(chanNum: number, chanID: string, config: ConsumerConfig, clJobs: ClJobs): Consumer[]; }