text: /*
   * Copyright 2021 The Chromium OS Authors. All rights reserved.
   * Use of this source code is governed by a BSD-style license that can be
   * found in the LICENSE file.
   */
  
  #ifndef CAMERA_FEATURES_HDRNET_HDRNET_METRICS_H_
  #define CAMERA_FEATURES_HDRNET_HDRNET_METRICS_H_
  
  #include <base/containers/flat_map.h>
  
  #include <cros-camera/camera_metrics.h>
  
  namespace cros {
  
  // HdrnetMetrics contains the metrics that we want to track for each camera
  // session that enables HDRnet.
  struct HdrnetMetrics {
    // The type of streams configured.
    HdrnetStreamConfiguration stream_config =
        HdrnetStreamConfiguration::kSingleYuvStream;
  
    // The number of HDRnet streams that are configured concurrently.
    int num_concurrent_hdrnet_streams = 0;
  
    // The maximum size of the HDRnet streams configured for YUV output.
    int max_yuv_stream_size = 0;
  
    // The maximum size of the HDRnet streams configured for BLOB output.
    int max_blob_stream_size = 0;
  
    // The maximum number of buffers rendered with one HDRnet stream.
    int max_output_buffers_rendered = 0;
  
    // The number of occurrence for each error that can compromise the HDRnet
    // feature, either causing frame drops or stops the pipeline from running
    // completely.
    base::flat_map<HdrnetError, int> errors = {};
  
    // The number of HDRnet-rendered still shots taken.
    int num_still_shot_taken = 0;
  
    // The accumulated latency in us of the different HDRnet processing stages.
    int64_t accumulated_preprocessing_latency_us = 0;
    int64_t accumulated_rgb_pipeline_latency_us = 0;
    int64_t accumulated_postprocessing_latency_us = 0;
  
    // The total number of frames processed by the HDRnet pipeline.
    int num_frames_processed = 0;
  };
  
  }  // namespace cros
  
  #endif  // CAMERA_FEATURES_HDRNET_HDRNET_METRICS_H_
  