/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

syntax = "proto2";

package perfetto.protos;

import "protos/perfetto/metrics/custom_options.proto";

// Ported from catapult's media_metric.html.
message MediaMetric {
  repeated double time_to_video_play = 1 [(unit) = "ms_smallerIsBetter"];
  repeated double time_to_audio_play = 2 [(unit) = "ms_smallerIsBetter"];
  repeated int64 dropped_frame_count = 3 [(unit) = "count_smallerIsBetter"];
  repeated double buffering_time = 4 [(unit) = "ms_smallerIsBetter"];
  repeated double roughness = 5 [(unit) = "count_smallerIsBetter"];
  repeated double freezing = 6 [(unit) = "ms_smallerIsBetter"];

  // These have multiple dynamic histogram names in the TBMv2 version. Because
  // TBMv3 doesn't support dynamic names, we report one value per seek into each
  // of these two combined histograms.
  repeated double seek_time = 8 [(unit) = "ms_smallerIsBetter"];
  repeated double pipeline_seek_time = 9 [(unit) = "ms_smallerIsBetter"];
}
