@100mslive/hms-video-store
Version:
@100mslive Core SDK which abstracts the complexities of webRTC while providing a reactive store for data management with a unidirectional data flow
104 lines (103 loc) • 3.38 kB
TypeScript
interface BaseStatsPayload {
sequence_num: number;
max_window_sec: number;
joined_at: number;
cpu_pressure_state?: string;
}
export interface PublishAnalyticPayload extends BaseStatsPayload {
video: Array<LocalAudioTrackAnalytics>;
audio: Array<LocalAudioTrackAnalytics>;
}
export interface SubscribeAnalyticPayload extends BaseStatsPayload {
video: Array<RemoteVideoTrackAnalytics>;
audio: Array<RemoteAudioTrackAnalytics>;
}
interface TrackAnalytics<Sample> {
track_id: string;
rid?: string;
ssrc: string;
source: string;
samples: Array<Sample>;
}
export declare type LocalAudioTrackAnalytics = TrackAnalytics<LocalBaseSample>;
export declare type LocalVideoTrackAnalytics = TrackAnalytics<LocalVideoSample>;
export declare type RemoteAudioTrackAnalytics = TrackAnalytics<RemoteAudioSample>;
export declare type RemoteVideoTrackAnalytics = TrackAnalytics<RemoteVideoSample>;
export interface LocalBaseSample {
timestamp: number;
sample_start_ts?: number;
sample_end_ts?: number;
sample_duration_ms?: number;
avg_round_trip_time_ms?: number;
avg_jitter_ms?: number;
total_packets_lost?: number;
avg_bitrate_bps?: number;
avg_available_outgoing_bitrate_bps?: number;
total_packets_sent?: number;
total_packet_sent_delay_sec?: number;
total_nack_count?: number;
total_fir_count?: number;
total_pli_count?: number;
cpu_pressure_state?: string;
track_settings?: MediaTrackSettings;
effects_metrics?: Record<string, Record<string, unknown> | undefined>;
}
export interface LocalVideoSample extends LocalBaseSample {
total_quality_limitation?: QualityLimitation;
avg_fps?: number;
resolution?: Resolution;
/**
* Source/capture stats from media-source (pre-encoding).
*/
source_resolution?: Resolution;
source_avg_fps?: number;
source_total_frames?: number;
source_total_frames_dropped?: number;
}
export interface QualityLimitation {
bandwith_sec?: number;
cpu_sec?: number;
other_sec?: number;
}
export interface Resolution {
width_px?: number;
height_px?: number;
}
interface RemoteBaseSample {
timestamp: number;
sample_start_ts?: number;
sample_end_ts?: number;
sample_duration_ms?: number;
estimated_playout_timestamp?: number;
avg_jitter_buffer_delay?: number;
avg_bitrate_bps?: number;
}
export interface RemoteAudioSample extends RemoteBaseSample {
audio_level?: number;
audio_concealed_samples?: number;
audio_total_samples_received?: number;
audio_concealment_events?: number;
fec_packets_discarded?: number;
fec_packets_received?: number;
total_samples_duration?: number;
total_packets_received?: number;
total_packets_lost?: number;
jitter_buffer_delay_high_seconds?: number;
}
export interface RemoteVideoSample extends RemoteBaseSample {
avg_frames_received_per_sec?: number;
avg_frames_dropped_per_sec?: number;
avg_frames_decoded_per_sec?: number;
total_pli_count?: number;
total_nack_count?: number;
avg_av_sync_ms?: number;
frame_width?: number;
frame_height?: number;
expected_frame_width?: number;
expected_frame_height?: number;
pause_count?: number;
pause_duration_seconds?: number;
freeze_count?: number;
freeze_duration_seconds?: number;
}
export {};