UNPKG

fleeta-api-lib

Version:

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

192 lines 5.02 kB
/** * Enhanced WebRTC Connection for Multi-Device Provider * Extends the existing WebRTC connection with multi-device specific features */ import type { ConnectionState, StreamQuality, CameraChannel, VoiceCommState, TwoWayAudioStatus } from './types'; /** * Connection configuration for multi-device WebRTC */ export interface MultiDeviceConnectionConfig { deviceId: string; channel: CameraChannel; quality: StreamQuality; clientId: string; role: 'VIEWER' | 'MASTER'; enableStats: boolean; statsInterval: number; enableVoiceComm: boolean; onStateChange?: (state: ConnectionState) => void; onError?: (error: Error) => void; onStreamReceived?: (stream: MediaStream) => void; onStatsUpdate?: (stats: ConnectionStats) => void; onVoiceCommStateChange?: (state: VoiceCommState) => void; } /** * Connection statistics for multi-device monitoring */ export interface ConnectionStats { bytesReceived: number; packetsReceived: number; packetsLost: number; jitter: number; roundTripTime: number; connectionId: string; deviceId: string; channel: CameraChannel; quality: StreamQuality; timestamp: number; } /** * Enhanced WebRTC Connection for Multi-Device scenarios * 기존 WebRTCConnection을 확장하여 다중 디바이스 지원 */ export declare class MultiDeviceWebRTCConnection { private config; private webrtcConfig; private state; private error; private connectionId; private peerConnection; private signalingClient; private stream; private stats; private statsInterval; private currentQuality; private qualityConstraints; private voiceCommState; private localAudioStream; private remoteAudioStream; private remoteAudioElement; /** * Create enhanced WebRTC connection for multi-device streaming */ constructor(config: MultiDeviceConnectionConfig); /** * Start WebRTC connection with multi-device support */ connect(): Promise<void>; /** * Disconnect WebRTC connection */ disconnect(): Promise<void>; /** * Change channel while maintaining connection */ changeChannel(newChannel: CameraChannel): Promise<void>; /** * Change stream quality */ changeQuality(newQuality: StreamQuality): Promise<void>; /** * Start voice communication * 양방향 음성 통신 시작 */ startVoiceComm(): Promise<TwoWayAudioStatus>; /** * Stop voice communication * 양방향 음성 통신 중지 */ stopVoiceComm(): Promise<TwoWayAudioStatus>; /** * Toggle local audio (microphone mute/unmute) */ setLocalAudioEnabled(enabled: boolean): void; /** * Set remote audio volume */ setRemoteAudioVolume(volume: number): void; /** * Get voice communication state */ getVoiceCommState(): VoiceCommState; /** * Get current MediaStream */ getStream(): MediaStream | null; /** * Get current connection state */ getState(): ConnectionState; /** * Get current connection statistics */ getStats(): ConnectionStats | null; /** * Get connection information */ getConnectionInfo(): { id: string; deviceId: string; channel: CameraChannel; quality: StreamQuality; state: ConnectionState; }; /** * Clean up all resources */ destroy(): void; /** * Initialize WebRTC connection with KVS WebRTC SDK */ private initializeWebRTCConnection; /** * Setup signaling client event handlers */ private setupSignalingHandlers; /** * Generate quality constraints based on quality level */ private generateQualityConstraints; /** * Renegotiate connection with new quality settings */ private renegotiateWithNewQuality; /** * Start WebRTC audio streams for voice communication */ private startWebRTCAudio; /** * Stop WebRTC audio streams */ private stopWebRTCAudio; /** * Handle remote audio stream received */ private handleRemoteAudioStream; /** * Renegotiate peer connection for audio */ private renegotiateForAudio; /** * Update voice communication state and notify callbacks */ private updateVoiceCommState; /** * Start connection statistics monitoring */ private startStatsMonitoring; /** * Stop connection statistics monitoring */ private stopStatsMonitoring; /** * Set connection state and notify callbacks */ private setState; /** * Set error and notify callbacks */ private setError; } declare global { interface Window { KVSWebRTC: { SignalingClient: any; Role: { VIEWER: string; MASTER: string; }; }; } } //# sourceMappingURL=WebRTCConnection.d.ts.map