// This is the definition for camera profiler message.
syntax = "proto2";

package profiler;

// Time stamp of start and end processing time.
message TimeStamp {
  optional uint64 start = 1;
  optional uint64 end = 2;
  optional uint32 count = 3;
  optional int32 request_id = 4;
}

// TimeSeries stores the target name and a series of time stamps and fps.
message TimeSeries {
  optional string name = 1;
  repeated TimeStamp runtime = 2;
}

// Profilering result stores the usecase name, and the targets' runtime it
// profiled.
message ProfilingResult {
  // The usecase indicates which mode/session it is profiling. For example,
  // camera preview, video preview, etc.
  optional string usecase = 1;
  repeated TimeSeries target = 2;
  optional string build_id = 3;
  optional string device_type = 4;
  optional string device_serial = 5;
  // Unix epoch timestamp when profile started.
  optional int64 profile_start_time_nanos = 6;
  // CLOCK_BOOTTIME value as near as possible to the same moment
  // as profile_start_time_millis.
  optional uint64 profile_start_boottime_nanos = 7;
  // Unix epoch timestamp when profile ended.
  optional int64 profile_end_time_nanos = 8;
}
