import { type ChannelMediaOptions, type EncodingPreference, type IRtcEngineEx, type MediaSourceType, type VideoSourceType, type VideoViewSetupMode, type Size } from 'shengwang-electron-sdk'; import { AgoraRtcConnection, AgoraRtcDeviceInfo, AgoraRtcMediaSourceIndex, AgoraRtcRenderMode, AgoraRtcRenderResultType, AgoraRtcRenderSourceType, AgoraRtcVideoEncoderConfiguration, AgoraRtcRegion, AgoraRtcStreamLayer } from '../../../core/rtc/type'; import { AgoraRtcCanvasHelper, AgoraRtcCanvasTagPool } from '../../../core/rtc/canvas'; import { AgoraRtcSourceManager } from '../../../core/rtc/source-manager'; import { AgoraRtcError } from './type'; import { Logger } from '../../../imports'; export declare const createInvalidParamsError: (errorMessage: string) => AgoraRtcError; export type VideoRenderParams = { rtcEngine: IRtcEngineEx; sourceId: string; view: HTMLElement; renderMode: AgoraRtcRenderMode; isMirror: boolean; sourceType: AgoraRtcRenderSourceType; canvasHelper: AgoraRtcCanvasHelper; canvasTagPool: AgoraRtcCanvasTagPool; sourceManager: AgoraRtcSourceManager; connection?: AgoraRtcConnection; }; type VideoEncoderParams = { config: AgoraRtcVideoEncoderConfiguration; streamLayer: AgoraRtcStreamLayer; rtcEngine: IRtcEngineEx; rtcConnection: AgoraRtcConnection; encodingPreference?: EncodingPreference; }; /** * 将摄像头源类型转换为发布配置 * @param sourceType - 摄像头源类型 * @param publish - 是否发布 * @returns 频道媒体选项 */ export declare const convertCameraSourceTypeToPublishConfig: (sourceType: VideoSourceType, publish: boolean) => ChannelMediaOptions; /** * 摄像头视频源类型列表 */ export declare const cameraVideoSourceTypes: readonly [0, 1, 11, 12]; /** * 比较两个设备信息 Map,返回新增和移除的设备列表 * @param oldMap - 旧设备信息 Map * @param newMap - 新设备信息 Map * @returns 新增和移除的设备列表 */ export declare const diffMap: (oldMap: Map, newMap: Map) => { addedList: string[]; removedList: string[]; }; /** * 将源索引转换为源类型 * @param index - 摄像头源索引 * @returns 视频源类型 */ export declare const convertSourceIndexToSourceType: (index: AgoraRtcMediaSourceIndex) => VideoSourceType; /** * 将源类型转换为源索引(反向映射) * @param sourceType - 视频源类型 * @returns 摄像头源索引 */ export declare const convertSourceTypeToSourceIndex: (sourceType: VideoSourceType) => AgoraRtcMediaSourceIndex; /** * 将源索引转换为媒体源类型 * @param index - 摄像头源索引 * @returns 媒体源类型 */ export declare const convertSourceIndexToMediaSourceType: (index: AgoraRtcMediaSourceIndex) => MediaSourceType; /** * 将渲染类型转换为设置模式 * @param renderType - 渲染结果类型 * @returns 视频视图设置模式 */ export declare const convertRenderTypeToSetupMode: (renderType: AgoraRtcRenderResultType) => VideoViewSetupMode; export declare const VOLUME_INDICATION_INTERVAL = 66; export declare const VOLUME_INDICATION_SMOOTH = 2; export declare const VIDEO_PLACEMENT_REF_CLASSNAME = "rtc-video-placement"; /** * 创建视频渲染器占位元素 * @param view - 父视图元素 * @returns 创建的占位元素 */ export declare const createVideoRendererPlacement: (view: HTMLElement) => HTMLElement; /** * 开始视频渲染 * @param params - 视频渲染参数 * @returns 渲染结果代码 */ export declare const startVideoRender: ({ rtcEngine, sourceId, view, renderMode, isMirror, sourceType, canvasHelper, canvasTagPool, sourceManager, connection, }: VideoRenderParams, logger: Logger) => number; /** * 设置视频编码器配置 * @param params - 视频编码器参数 * @returns 设置结果代码 */ export declare const setVideoEncoderConfig: ({ config, streamLayer, rtcEngine, rtcConnection, encodingPreference }: VideoEncoderParams, logger: Logger) => number; export declare const disableDualStream: (rtcEngine: IRtcEngineEx, rtcConnection: AgoraRtcConnection, lowVideoEncoderConfig: AgoraRtcVideoEncoderConfiguration, logger: Logger) => number; export declare const defaultThumbSize: Size; export declare const defaultWindowIconSize: Size; export declare const defaultDisplayIconSize: Size; /** * 加载 Electron SDK * @returns SDK 实例或 undefined */ export declare const loadElectronSdk: (logger: Logger) => any; /** * 解析默认日志路径 * @returns 日志文件路径 */ export declare const resolveDefaultLogsPath: () => string; /** * 将区域映射到区域代码 * @param region - Agora RTC 区域 * @returns 区域代码 */ export declare const mapRegionToAreaCode: (region: AgoraRtcRegion) => number; /** * 解析域名限制配置 * @param domainLimit - 域名限制配置 * @param logger - 日志记录器 * @returns 解析后的域名限制配置 */ export declare const resolveDomainLimit: (domainLimit: boolean | undefined, logger: Logger) => boolean; /** * 判断 element 是否是 HTMLElement 类型 * @param element - 要检查的元素 * @returns 如果是 HTMLElement 类型则返回 true,否则返回 false * @description 子窗口和主窗口不在同一个上下文中,子窗口的 Dom 通过 instanceof HTMLElement 判断会失效,需要通过属性判断。 * @description 如果属性看起来像是 HTMLElement。 那么就当它是 HTMLElement 类型。 * */ export declare const isHTMLElement: (element: any) => boolean; export {};