UNPKG

fleeta-api-lib

Version:

A comprehensive library for fleet management applications - API, Auth, Device management

114 lines 3.4 kB
/** * 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