| Index: webrtc/video/send_statistics_proxy.cc
 | 
| diff --git a/webrtc/video/send_statistics_proxy.cc b/webrtc/video/send_statistics_proxy.cc
 | 
| index 6407cdc62ea8e2257994ef90291f60c81ec42294..471e1af381c486ed2b1fe727c43eab195d2c59eb 100644
 | 
| --- a/webrtc/video/send_statistics_proxy.cc
 | 
| +++ b/webrtc/video/send_statistics_proxy.cc
 | 
| @@ -13,6 +13,7 @@
 | 
|  #include <algorithm>
 | 
|  #include <cmath>
 | 
|  #include <map>
 | 
| +#include <vector>
 | 
|  
 | 
|  #include "webrtc/base/checks.h"
 | 
|  #include "webrtc/base/logging.h"
 | 
| @@ -128,68 +129,68 @@ void SendStatisticsProxy::UmaSamplesContainer::UpdateHistograms(
 | 
|    int in_height = input_height_counter_.Avg(kMinRequiredSamples);
 | 
|    int in_fps = round(input_frame_rate_tracker_.ComputeTotalRate());
 | 
|    if (in_width != -1) {
 | 
| -    RTC_HISTOGRAMS_COUNTS_10000(kIndex, uma_prefix_ + "InputWidthInPixels",
 | 
| -                                in_width);
 | 
| -    RTC_HISTOGRAMS_COUNTS_10000(kIndex, uma_prefix_ + "InputHeightInPixels",
 | 
| -                                in_height);
 | 
| -    RTC_HISTOGRAMS_COUNTS_100(kIndex, uma_prefix_ + "InputFramesPerSecond",
 | 
| -                              in_fps);
 | 
| +    RTC_LHISTOGRAMS_COUNTS_10000(kIndex, uma_prefix_ + "InputWidthInPixels",
 | 
| +                                 in_width);
 | 
| +    RTC_LHISTOGRAMS_COUNTS_10000(kIndex, uma_prefix_ + "InputHeightInPixels",
 | 
| +                                 in_height);
 | 
| +    RTC_LHISTOGRAMS_COUNTS_100(kIndex, uma_prefix_ + "InputFramesPerSecond",
 | 
| +                               in_fps);
 | 
|    }
 | 
|    int sent_width = sent_width_counter_.Avg(kMinRequiredSamples);
 | 
|    int sent_height = sent_height_counter_.Avg(kMinRequiredSamples);
 | 
|    int sent_fps = round(sent_frame_rate_tracker_.ComputeTotalRate());
 | 
|    if (sent_width != -1) {
 | 
| -    RTC_HISTOGRAMS_COUNTS_10000(kIndex, uma_prefix_ + "SentWidthInPixels",
 | 
| -                                sent_width);
 | 
| -    RTC_HISTOGRAMS_COUNTS_10000(kIndex, uma_prefix_ + "SentHeightInPixels",
 | 
| -                                sent_height);
 | 
| -    RTC_HISTOGRAMS_COUNTS_100(kIndex, uma_prefix_ + "SentFramesPerSecond",
 | 
| -                              sent_fps);
 | 
| +    RTC_LHISTOGRAMS_COUNTS_10000(kIndex, uma_prefix_ + "SentWidthInPixels",
 | 
| +                                 sent_width);
 | 
| +    RTC_LHISTOGRAMS_COUNTS_10000(kIndex, uma_prefix_ + "SentHeightInPixels",
 | 
| +                                 sent_height);
 | 
| +    RTC_LHISTOGRAMS_COUNTS_100(kIndex, uma_prefix_ + "SentFramesPerSecond",
 | 
| +                               sent_fps);
 | 
|    }
 | 
|    int encode_ms = encode_time_counter_.Avg(kMinRequiredSamples);
 | 
|    if (encode_ms != -1) {
 | 
| -    RTC_HISTOGRAMS_COUNTS_1000(kIndex, uma_prefix_ + "EncodeTimeInMs",
 | 
| -                               encode_ms);
 | 
| +    RTC_LHISTOGRAMS_COUNTS_1000(kIndex, uma_prefix_ + "EncodeTimeInMs",
 | 
| +                                encode_ms);
 | 
|    }
 | 
|    int key_frames_permille = key_frame_counter_.Permille(kMinRequiredSamples);
 | 
|    if (key_frames_permille != -1) {
 | 
| -    RTC_HISTOGRAMS_COUNTS_1000(kIndex, uma_prefix_ + "KeyFramesSentInPermille",
 | 
| -                               key_frames_permille);
 | 
| +    RTC_LHISTOGRAMS_COUNTS_1000(kIndex, uma_prefix_ + "KeyFramesSentInPermille",
 | 
| +                                key_frames_permille);
 | 
|    }
 | 
|    int quality_limited =
 | 
|        quality_limited_frame_counter_.Percent(kMinRequiredSamples);
 | 
|    if (quality_limited != -1) {
 | 
| -    RTC_HISTOGRAMS_PERCENTAGE(kIndex,
 | 
| -                              uma_prefix_ + "QualityLimitedResolutionInPercent",
 | 
| -                              quality_limited);
 | 
| +    RTC_LHISTOGRAMS_PERCENTAGE(
 | 
| +        kIndex, uma_prefix_ + "QualityLimitedResolutionInPercent",
 | 
| +        quality_limited);
 | 
|    }
 | 
|    int downscales = quality_downscales_counter_.Avg(kMinRequiredSamples);
 | 
|    if (downscales != -1) {
 | 
| -    RTC_HISTOGRAMS_ENUMERATION(
 | 
| +    RTC_LHISTOGRAMS_ENUMERATION(
 | 
|          kIndex, uma_prefix_ + "QualityLimitedResolutionDownscales", downscales,
 | 
|          20);
 | 
|    }
 | 
|    int bw_limited = bw_limited_frame_counter_.Percent(kMinRequiredSamples);
 | 
|    if (bw_limited != -1) {
 | 
| -    RTC_HISTOGRAMS_PERCENTAGE(
 | 
| +    RTC_LHISTOGRAMS_PERCENTAGE(
 | 
|          kIndex, uma_prefix_ + "BandwidthLimitedResolutionInPercent",
 | 
|          bw_limited);
 | 
|    }
 | 
|    int num_disabled = bw_resolutions_disabled_counter_.Avg(kMinRequiredSamples);
 | 
|    if (num_disabled != -1) {
 | 
| -    RTC_HISTOGRAMS_ENUMERATION(
 | 
| +    RTC_LHISTOGRAMS_ENUMERATION(
 | 
|          kIndex, uma_prefix_ + "BandwidthLimitedResolutionsDisabled",
 | 
|          num_disabled, 10);
 | 
|    }
 | 
|    int delay_ms = delay_counter_.Avg(kMinRequiredSamples);
 | 
|    if (delay_ms != -1)
 | 
| -    RTC_HISTOGRAMS_COUNTS_100000(kIndex, uma_prefix_ + "SendSideDelayInMs",
 | 
| -                                 delay_ms);
 | 
| +    RTC_LHISTOGRAMS_COUNTS_100000(kIndex, uma_prefix_ + "SendSideDelayInMs",
 | 
| +                                  delay_ms);
 | 
|  
 | 
|    int max_delay_ms = max_delay_counter_.Avg(kMinRequiredSamples);
 | 
|    if (max_delay_ms != -1) {
 | 
| -    RTC_HISTOGRAMS_COUNTS_100000(kIndex, uma_prefix_ + "SendSideDelayMaxInMs",
 | 
| -                                 max_delay_ms);
 | 
| +    RTC_LHISTOGRAMS_COUNTS_100000(kIndex, uma_prefix_ + "SendSideDelayMaxInMs",
 | 
| +                                  max_delay_ms);
 | 
|    }
 | 
|  
 | 
|    if (first_rtcp_stats_time_ms_ != -1) {
 | 
| @@ -198,7 +199,7 @@ void SendStatisticsProxy::UmaSamplesContainer::UpdateHistograms(
 | 
|      if (elapsed_sec >= metrics::kMinRunTimeInSeconds) {
 | 
|        int fraction_lost = report_block_stats_.FractionLostInPercent();
 | 
|        if (fraction_lost != -1) {
 | 
| -        RTC_HISTOGRAMS_PERCENTAGE(
 | 
| +        RTC_LHISTOGRAMS_PERCENTAGE(
 | 
|              kIndex, uma_prefix_ + "SentPacketsLostInPercent", fraction_lost);
 | 
|        }
 | 
|  
 | 
| @@ -223,17 +224,17 @@ void SendStatisticsProxy::UmaSamplesContainer::UpdateHistograms(
 | 
|  
 | 
|          counters.Add(stream_counters);
 | 
|        }
 | 
| -      RTC_HISTOGRAMS_COUNTS_10000(kIndex,
 | 
| -                                  uma_prefix_ + "NackPacketsReceivedPerMinute",
 | 
| -                                  counters.nack_packets * 60 / elapsed_sec);
 | 
| -      RTC_HISTOGRAMS_COUNTS_10000(kIndex,
 | 
| -                                  uma_prefix_ + "FirPacketsReceivedPerMinute",
 | 
| -                                  counters.fir_packets * 60 / elapsed_sec);
 | 
| -      RTC_HISTOGRAMS_COUNTS_10000(kIndex,
 | 
| -                                  uma_prefix_ + "PliPacketsReceivedPerMinute",
 | 
| -                                  counters.pli_packets * 60 / elapsed_sec);
 | 
| +      RTC_LHISTOGRAMS_COUNTS_10000(kIndex,
 | 
| +                                   uma_prefix_ + "NackPacketsReceivedPerMinute",
 | 
| +                                   counters.nack_packets * 60 / elapsed_sec);
 | 
| +      RTC_LHISTOGRAMS_COUNTS_10000(kIndex,
 | 
| +                                   uma_prefix_ + "FirPacketsReceivedPerMinute",
 | 
| +                                   counters.fir_packets * 60 / elapsed_sec);
 | 
| +      RTC_LHISTOGRAMS_COUNTS_10000(kIndex,
 | 
| +                                   uma_prefix_ + "PliPacketsReceivedPerMinute",
 | 
| +                                   counters.pli_packets * 60 / elapsed_sec);
 | 
|        if (counters.nack_requests > 0) {
 | 
| -        RTC_HISTOGRAMS_PERCENTAGE(
 | 
| +        RTC_LHISTOGRAMS_PERCENTAGE(
 | 
|              kIndex, uma_prefix_ + "UniqueNackRequestsReceivedInPercent",
 | 
|              counters.UniqueNackRequestsInPercent());
 | 
|        }
 | 
| @@ -255,32 +256,32 @@ void SendStatisticsProxy::UmaSamplesContainer::UpdateHistograms(
 | 
|        StreamDataCounters rtp_rtx = rtp;
 | 
|        rtp_rtx.Add(rtx);
 | 
|  
 | 
| -      RTC_HISTOGRAMS_COUNTS_10000(
 | 
| +      RTC_LHISTOGRAMS_COUNTS_10000(
 | 
|            kIndex, uma_prefix_ + "BitrateSentInKbps",
 | 
|            static_cast<int>(rtp_rtx.transmitted.TotalBytes() * 8 / elapsed_sec /
 | 
|                             1000));
 | 
| -      RTC_HISTOGRAMS_COUNTS_10000(
 | 
| +      RTC_LHISTOGRAMS_COUNTS_10000(
 | 
|            kIndex, uma_prefix_ + "MediaBitrateSentInKbps",
 | 
|            static_cast<int>(rtp.MediaPayloadBytes() * 8 / elapsed_sec / 1000));
 | 
| -      RTC_HISTOGRAMS_COUNTS_10000(
 | 
| +      RTC_LHISTOGRAMS_COUNTS_10000(
 | 
|            kIndex, uma_prefix_ + "PaddingBitrateSentInKbps",
 | 
|            static_cast<int>(rtp_rtx.transmitted.padding_bytes * 8 / elapsed_sec /
 | 
|                             1000));
 | 
| -      RTC_HISTOGRAMS_COUNTS_10000(
 | 
| +      RTC_LHISTOGRAMS_COUNTS_10000(
 | 
|            kIndex, uma_prefix_ + "RetransmittedBitrateSentInKbps",
 | 
|            static_cast<int>(rtp_rtx.retransmitted.TotalBytes() * 8 /
 | 
|                             elapsed_sec / 1000));
 | 
|        if (!config.rtp.rtx.ssrcs.empty()) {
 | 
| -        RTC_HISTOGRAMS_COUNTS_10000(
 | 
| +        RTC_LHISTOGRAMS_COUNTS_10000(
 | 
|              kIndex, uma_prefix_ + "RtxBitrateSentInKbps",
 | 
|              static_cast<int>(rtx.transmitted.TotalBytes() * 8 / elapsed_sec /
 | 
|                               1000));
 | 
|        }
 | 
|        if (config.rtp.fec.red_payload_type != -1) {
 | 
| -        RTC_HISTOGRAMS_COUNTS_10000(kIndex,
 | 
| -                                    uma_prefix_ + "FecBitrateSentInKbps",
 | 
| -                                    static_cast<int>(rtp_rtx.fec.TotalBytes() *
 | 
| -                                                     8 / elapsed_sec / 1000));
 | 
| +        RTC_LHISTOGRAMS_COUNTS_10000(kIndex,
 | 
| +                                     uma_prefix_ + "FecBitrateSentInKbps",
 | 
| +                                     static_cast<int>(rtp_rtx.fec.TotalBytes() *
 | 
| +                                                      8 / elapsed_sec / 1000));
 | 
|        }
 | 
|      }
 | 
|    }
 | 
| 
 |