| // Copyright 2017 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_CAMERA3_TEST_CAMERA3_PERF_LOG_H_ |
| #define CAMERA_CAMERA3_TEST_CAMERA3_PERF_LOG_H_ |
| |
| #include <map> |
| #include <string> |
| #include <utility> |
| #include <vector> |
| |
| #include <base/time/time.h> |
| |
| namespace camera3_test { |
| |
| enum class DeviceEvent { |
| OPENING, |
| OPENED, |
| PREVIEW_STARTED, |
| }; |
| |
| enum class FrameEvent { |
| SHUTTER, |
| PREVIEW_RESULT, |
| STILL_CAPTURE_RESULT, |
| VIDEO_RECORD_RESULT, |
| PORTRAIT_MODE_STARTED, |
| PORTRAIT_MODE_ENDED, |
| }; |
| |
| class Camera3PerfLog final { |
| public: |
| // Gets the singleton instance |
| static Camera3PerfLog* GetInstance(); |
| |
| void SetCameraNameMap(const std::map<int, std::string>& camera_name_map); |
| |
| // Update one-time performance log |
| bool UpdateDeviceEvent(int cam_id, DeviceEvent event, base::TimeTicks time); |
| |
| // Update per-frame performance log |
| bool UpdateFrameEvent(int cam_id, |
| uint32_t frame_number, |
| FrameEvent event, |
| base::TimeTicks time); |
| |
| private: |
| Camera3PerfLog() {} |
| |
| ~Camera3PerfLog(); |
| |
| // Get the camera name for a specific camera id, and fallback to "{id}" if not |
| // found in the map |
| std::string GetCameraNameForId(int id); |
| |
| std::vector<std::pair<std::string, int64_t>> CollectPerfLogs( |
| int cam_id) const; |
| |
| // The name used for output log for each id |
| std::map<int, std::string> camera_name_map_; |
| |
| // Record one-time performance logs with camera id and device event |
| std::map<int, std::map<DeviceEvent, base::TimeTicks>> device_events_; |
| |
| // Record per-frame performance logs with camera id and frame event |
| std::map<int, std::map<uint32_t, std::map<FrameEvent, base::TimeTicks>>> |
| frame_events_; |
| |
| DISALLOW_COPY_AND_ASSIGN(Camera3PerfLog); |
| }; |
| |
| } // namespace camera3_test |
| |
| #endif // CAMERA_CAMERA3_TEST_CAMERA3_PERF_LOG_H_ |