fleeta-api-lib
Version:
A comprehensive library for fleet management applications - API, Auth, Device management
114 lines • 3.4 kB
TypeScript
/**
* Quality Manager
* Manages adaptive quality control for multi-device WebRTC streaming
*/
import type { StreamQuality, MultiDeviceStats, DeviceStats } from './types';
import { type QualityAdaptationConfig } from './types';
/**
* Quality adaptation decision
*/
export interface QualityDecision {
psn: string;
currentQuality: StreamQuality;
recommendedQuality: StreamQuality;
reason: string;
confidence: number;
}
/**
* Quality Manager Class
* Provides intelligent quality adaptation based on system resources and network conditions
*/
export declare class QualityManager {
private config;
private adaptationHistory;
private lastAdaptationTime;
private readonly hysteresisBuffer;
constructor(config?: QualityAdaptationConfig);
/**
* Analyze current system state and recommend quality adjustments
* @param globalStats - Current global statistics
* @param deviceStats - Individual device statistics
* @returns Array of quality decisions for each device
*/
analyzeAndRecommend(globalStats: MultiDeviceStats, deviceStats: DeviceStats[]): QualityDecision[];
/**
* Evaluate quality for a specific device
* @param device - Device statistics
* @param systemResources - Current system resources
* @returns Quality decision or null if no change needed
*/
private evaluateDeviceQuality;
/**
* Evaluate quality based on device count
*/
private evaluateByDeviceCount;
/**
* Evaluate quality based on bandwidth
*/
private evaluateByBandwidth;
/**
* Evaluate quality based on memory usage
*/
private evaluateByMemory;
/**
* Select the most restrictive (lowest) quality from recommendations
*/
private selectMostRestrictiveQuality;
/**
* Apply global constraints to quality decisions
*/
private applyGlobalConstraints;
/**
* Calculate maximum number of high-quality streams system can handle
*/
private calculateMaxHighQualityStreams;
/**
* Check if adaptation should be skipped for this device
*/
private shouldSkipAdaptation;
/**
* Check if quality change passes hysteresis check
*/
private passesHysteresisCheck;
/**
* Get numeric difference between qualities
*/
private getQualityDifference;
/**
* Update adaptation history for a device
*/
private updateAdaptationHistory;
/**
* Generate human-readable reason for quality change
*/
private generateReason;
/**
* Calculate confidence score for quality decision
*/
private calculateConfidence;
/**
* Get current quality for a device (placeholder implementation)
*/
private getCurrentQuality;
/**
* Estimate available memory based on current usage
*/
private estimateAvailableMemory;
/**
* Update configuration
*/
updateConfig(newConfig: Partial<QualityAdaptationConfig>): void;
/**
* Get adaptation history for a device
*/
getAdaptationHistory(psn: string): StreamQuality[];
/**
* Clear adaptation history
*/
clearHistory(): void;
}
/**
* Create Quality Manager with default configuration
*/
export declare function createQualityManager(config?: Partial<QualityAdaptationConfig>): QualityManager;
//# sourceMappingURL=QualityManager.d.ts.map