import { TResultSetParametersToSender } from '../tools'; import { TResolutionSize } from '../types'; import { ICodecProvider, IMainCamHeaders, IParametersSetter, ISenderFinder } from './types'; /** * Бизнес-логика балансировки отправителей * Отвечает за определение стратегии и применение параметров к отправителю */ export declare class SenderBalancer { private readonly ignoreForCodec?; private readonly senderFinder; private readonly codecProvider; private readonly parametersSetter; private readonly getMaxResolution; private readonly resultNoChanged; constructor({ senderFinder, codecProvider, parametersSetter, }: { senderFinder: ISenderFinder; codecProvider: ICodecProvider; parametersSetter: IParametersSetter; }, options: { ignoreForCodec?: string; getMaxResolution: () => TResolutionSize | undefined; }); /** * Выполняет балансировку на основе заголовков от сервера * @param connection - RTCPeerConnection для получения отправителей * @param headers - Заголовки от сервера с командами управления * @returns Promise с результатом балансировки */ balance(connection: RTCPeerConnection, headers?: IMainCamHeaders): Promise; /** * Сбрасывает все эффекты балансировки — восстанавливает параметры на основе разрешения трека * @param connection - RTCPeerConnection для получения отправителей * @returns Promise с результатом сброса */ reset(connection: RTCPeerConnection): Promise; /** * Обрабатывает отправитель в зависимости от команды управления * @param context - Контекст балансировки * @returns Promise с результатом обработки */ private processSender; /** * Понижает разрешение отправителя (пауза камеры) * @param context - Контекст балансировки * @returns Promise с результатом */ private downgradeResolutionSender; /** * Устанавливает битрейт на основе разрешения трека * @param context - Контекст балансировки * @returns Promise с результатом */ private setBitrateByTrackResolution; /** * Устанавливает разрешение отправителя на основе заголовка * @param resolutionMainCam - Разрешение главной камеры * @param context - Контекст балансировки * @returns Promise с результатом */ private setResolutionSender; }