use super::RTCReceivedRtpStreamStats;
use ::serde::{Deserialize, Serialize};
use shared::serde::instant_to_epoch;
use std::time::Instant;
#[derive(Debug, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RTCInboundRtpStreamStats {
#[serde(flatten)]
pub received_rtp_stream_stats: RTCReceivedRtpStreamStats,
pub track_identifier: String,
pub mid: String,
pub remote_id: String,
pub frames_decoded: u32,
pub key_frames_decoded: u32,
pub frames_rendered: u32,
pub frames_dropped: u32,
pub frame_width: u32,
pub frame_height: u32,
pub frames_per_second: f64,
pub qp_sum: u64,
pub total_decode_time: f64,
pub total_inter_frame_delay: f64,
pub total_squared_inter_frame_delay: f64,
pub pause_count: u32,
pub total_pauses_duration: f64,
pub freeze_count: u32,
pub total_freezes_duration: f64,
#[serde(with = "instant_to_epoch")]
pub last_packet_received_timestamp: Instant,
pub header_bytes_received: u64,
pub packets_discarded: u64,
pub fec_bytes_received: u64,
pub fec_packets_received: u64,
pub fec_packets_discarded: u64,
pub bytes_received: u64,
pub nack_count: u32,
pub fir_count: u32,
pub pli_count: u32,
pub total_processing_delay: f64,
#[serde(with = "instant_to_epoch")]
pub estimated_playout_timestamp: Instant,
pub jitter_buffer_delay: f64,
pub jitter_buffer_target_delay: f64,
pub jitter_buffer_emitted_count: u64,
pub jitter_buffer_minimum_delay: f64,
pub total_samples_received: u64,
pub concealed_samples: u64,
pub silent_concealed_samples: u64,
pub concealment_events: u64,
pub inserted_samples_for_deceleration: u64,
pub removed_samples_for_acceleration: u64,
pub audio_level: f64,
pub total_audio_energy: f64,
pub total_samples_duration: f64,
pub frames_received: u32,
pub decoder_implementation: String,
pub playout_id: String,
pub power_efficient_decoder: bool,
pub frames_assembled_from_multiple_packets: u32,
pub total_assembly_time: f64,
pub retransmitted_packets_received: u64,
pub retransmitted_bytes_received: u64,
pub rtx_ssrc: u32,
pub fec_ssrc: u32,
pub total_corruption_probability: f64,
pub total_squared_corruption_probability: f64,
pub corruption_measurements: u64,
}