@eleven-am/transcoder
Version:
High-performance HLS transcoding library with hardware acceleration, intelligent client management, and distributed processing support for Node.js
57 lines • 2.06 kB
TypeScript
import { EventEmitter } from 'events';
import { TaskEither } from '@eleven-am/fp';
import { SegmentProcessingData, SegmentProcessingResult } from './distributed';
export interface PipelineMetrics {
activeSegments: number;
completedSegments: number;
failedSegments: number;
averageProcessingTime: number;
pipelineDepth: number;
}
/**
* Pipelined segment processor that allows overlapping segment processing
* for improved throughput and reduced latency
*/
export declare class SegmentPipelineProcessor extends EventEmitter {
private readonly pipeline;
private readonly processingTimes;
private completedCount;
private failedCount;
private readonly maxPipelineDepth;
private readonly maxProcessingTimes;
constructor(maxPipelineDepth?: number);
/**
* Process a segment with pipeline management
*/
processSegment(segmentNumber: number, processor: (data: SegmentProcessingData) => Promise<SegmentProcessingResult>, data: SegmentProcessingData): Promise<TaskEither<SegmentProcessingResult>>;
/**
* Process multiple segments in batches with pipeline optimization
*/
processBatch(segments: Array<{
number: number;
data: SegmentProcessingData;
}>, processor: (data: SegmentProcessingData) => Promise<SegmentProcessingResult>): Promise<TaskEither<SegmentProcessingResult[]>>;
/**
* Wait for all segments in pipeline to complete
*/
waitForPipeline(): Promise<void>;
/**
* Get current pipeline metrics
*/
getMetrics(): PipelineMetrics;
/**
* Dynamically adjust pipeline depth based on performance
*/
adjustPipelineDepth(cpuUsage: number, memoryUsage: number): void;
/**
* Clear the pipeline and reset metrics
*/
clear(): void;
private waitForPipelineSpace;
private handleSegmentSuccess;
private handleSegmentFailure;
private cleanupSegment;
private recordProcessingTime;
private calculateAverageProcessingTime;
}
//# sourceMappingURL=segmentPipelineProcessor.d.ts.map