void input_stats_Compute(struct input_stats *stats, input_stats_t *st) { /* Input */ vlc_mutex_lock(&stats->input_bitrate.lock); st->i_read_packets = stats->input_bitrate.updates; st->i_read_bytes = stats->input_bitrate.value; st->f_input_bitrate = stats_GetRate(&stats->input_bitrate); vlc_mutex_unlock(&stats->input_bitrate.lock); vlc_mutex_lock(&stats->demux_bitrate.lock); st->i_demux_read_bytes = stats->demux_bitrate.value; st->f_demux_bitrate = stats_GetRate(&stats->demux_bitrate); vlc_mutex_unlock(&stats->demux_bitrate.lock); st->i_demux_corrupted = atomic_load_explicit(&stats->demux_corrupted, memory_order_relaxed); st->i_demux_discontinuity = atomic_load_explicit( &stats->demux_discontinuity, memory_order_relaxed); /* Aout */ st->i_decoded_audio = atomic_load_explicit(&stats->decoded_audio, memory_order_relaxed); st->i_played_abuffers = atomic_load_explicit(&stats->played_abuffers, memory_order_relaxed); st->i_lost_abuffers = atomic_load_explicit(&stats->lost_abuffers, memory_order_relaxed); /* Vouts */ st->i_decoded_video = atomic_load_explicit(&stats->decoded_video, memory_order_relaxed); st->i_displayed_pictures = atomic_load_explicit(&stats->displayed_pictures, memory_order_relaxed); st->i_lost_pictures = atomic_load_explicit(&stats->lost_pictures, memory_order_relaxed); }
void stats_ComputeInputStats(input_thread_t *input, input_stats_t *st) { input_thread_private_t *priv = input_priv(input); if (!libvlc_stats(input)) return; vlc_mutex_lock(&priv->counters.counters_lock); vlc_mutex_lock(&st->lock); /* Input */ st->i_read_packets = stats_GetTotal(priv->counters.p_read_packets); st->i_read_bytes = stats_GetTotal(priv->counters.p_read_bytes); st->f_input_bitrate = stats_GetRate(priv->counters.p_input_bitrate); st->i_demux_read_bytes = stats_GetTotal(priv->counters.p_demux_read); st->f_demux_bitrate = stats_GetRate(priv->counters.p_demux_bitrate); st->i_demux_corrupted = stats_GetTotal(priv->counters.p_demux_corrupted); st->i_demux_discontinuity = stats_GetTotal(priv->counters.p_demux_discontinuity); /* Decoders */ st->i_decoded_video = stats_GetTotal(priv->counters.p_decoded_video); st->i_decoded_audio = stats_GetTotal(priv->counters.p_decoded_audio); /* Sout */ if (priv->counters.p_sout_send_bitrate) { st->i_sent_packets = stats_GetTotal(priv->counters.p_sout_sent_packets); st->i_sent_bytes = stats_GetTotal(priv->counters.p_sout_sent_bytes); st->f_send_bitrate = stats_GetRate(priv->counters.p_sout_send_bitrate); } /* Aout */ st->i_played_abuffers = stats_GetTotal(priv->counters.p_played_abuffers); st->i_lost_abuffers = stats_GetTotal(priv->counters.p_lost_abuffers); /* Vouts */ st->i_displayed_pictures = stats_GetTotal(priv->counters.p_displayed_pictures); st->i_lost_pictures = stats_GetTotal(priv->counters.p_lost_pictures); vlc_mutex_unlock(&st->lock); vlc_mutex_unlock(&priv->counters.counters_lock); }