| /* |
| * Copyright (c) 2022 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. |
| */ |
| |
| syntax = "proto3"; |
| |
| package webrtc.test_metrics; |
| |
| // Root message of the proto file. Contains collection of all the metrics. |
| message MetricsSet { |
| repeated Metric metrics = 1; |
| // Metadata associated with the whole metrics set. |
| map<string, string> metadata = 2; |
| } |
| |
| enum Unit { |
| // Default value that has to be defined. |
| UNDEFINED_UNIT = 0; |
| // General unitless value. Can be used either for dimensionless quantities |
| // (ex ratio) or for units not presented in this enum and too specific to add |
| // to this enum. |
| UNITLESS = 1; |
| MILLISECONDS = 2; |
| PERCENT = 3; |
| BYTES = 4; |
| KILOBITS_PER_SECOND = 5; |
| HERTZ = 6; |
| COUNT = 7; |
| } |
| |
| enum ImprovementDirection { |
| // Default value that has to be defined. |
| UNDEFINED_IMPROVEMENT_DIRECTION = 0; |
| BIGGER_IS_BETTER = 1; |
| NEITHER_IS_BETTER = 2; |
| SMALLER_IS_BETTER = 3; |
| } |
| |
| // Single performance metric with all related metadata. |
| message Metric { |
| // Metric name, for example PSNR, SSIM, decode_time, etc. |
| string name = 1; |
| Unit unit = 2; |
| ImprovementDirection improvement_direction = 3; |
| // If the metric is generated by a test, this field can be used to specify |
| // this information. |
| string test_case = 4; |
| // Metadata associated with the whole metric. |
| map<string, string> metric_metadata = 5; |
| |
| message TimeSeries { |
| message Sample { |
| // Timestamp in microseconds associated with a sample. For example, |
| // the timestamp when the sample was collected. |
| int64 timestamp_us = 1; |
| double value = 2; |
| // Metadata associated with this particular sample. |
| map<string, string> sample_metadata = 3; |
| } |
| // All samples collected for this metric. It can be empty if the Metric |
| // object only contains `stats`. |
| repeated Sample samples = 1; |
| } |
| // Contains all samples of the metric collected during test execution. |
| // It can be empty if the user only stores precomputed statistics into |
| // `stats`. |
| TimeSeries time_series = 6; |
| |
| // Contains metric's precomputed statistics based on the `time_series` or if |
| // `time_series` is omitted (has 0 samples) contains precomputed statistics |
| // provided by the metric's calculator. |
| message Stats { |
| // Sample mean of the metric |
| // (https://en.wikipedia.org/wiki/Sample_mean_and_covariance). |
| optional double mean = 1; |
| // Standard deviation (https://en.wikipedia.org/wiki/Standard_deviation). |
| // Is undefined if `time_series` contains only a single sample. |
| optional double stddev = 2; |
| optional double min = 3; |
| optional double max = 4; |
| } |
| Stats stats = 7; |
| } |