All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.webrtc.Metrics Maven / Gradle / Ivy

/*
 *  Copyright 2016 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */

package org.webrtc;

import java.util.HashMap;
import java.util.Map;

// Java-side of androidmetrics.cc
//
// Rtc histograms can be queried through the API, getAndReset().
// The returned map holds the name of a histogram and its samples.
//
// Example of |map| with one histogram:
// |name|: "WebRTC.Video.InputFramesPerSecond"
//     |min|: 1
//     |max|: 100
//     |bucketCount|: 50
//     |samples|: [30]:1
//
// Most histograms are not updated frequently (e.g. most video metrics are an
// average over the call and recorded when a stream is removed).
// The metrics can for example be retrieved when a peer connection is closed.
public class Metrics {
  private static final String TAG = "Metrics";

  public final Map map =
      new HashMap(); // 

  @CalledByNative
  Metrics() {}

  /**
   * Class holding histogram information.
   */
  public static class HistogramInfo {
    public final int min;
    public final int max;
    public final int bucketCount;
    public final Map samples =
        new HashMap(); // 

    @CalledByNative("HistogramInfo")
    public HistogramInfo(int min, int max, int bucketCount) {
      this.min = min;
      this.max = max;
      this.bucketCount = bucketCount;
    }

    @CalledByNative("HistogramInfo")
    public void addSample(int value, int numEvents) {
      samples.put(value, numEvents);
    }
  }

  @CalledByNative
  private void add(String name, HistogramInfo info) {
    map.put(name, info);
  }

  // Enables gathering of metrics (which can be fetched with getAndReset()).
  // Must be called before PeerConnectionFactory is created.
  public static void enable() {
    nativeEnable();
  }

  // Gets and clears native histograms.
  public static Metrics getAndReset() {
    return nativeGetAndReset();
  }

  private static native void nativeEnable();
  private static native Metrics nativeGetAndReset();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy