blob: 32b710a62fc9f8dccb22ec010f546a5149b3f547 [file] [log] [blame] [edit]
/*
* Copyright 2021 The ChromiumOS Authors
* 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_CONFIG_H_
#define CAMERA_FEATURES_HDRNET_HDRNET_CONFIG_H_
#include <base/containers/flat_map.h>
#include <base/files/file_path.h>
#include <base/files/file_path_watcher.h>
#include <base/synchronization/lock.h>
#include <base/values.h>
namespace cros {
// The Config class holds all the settings that controls the operation and
// behaviors of the HDRnet pipeline.
class HdrNetConfig {
public:
// By default the config is loaded from the feature config file path specified
// in the feature profile. For testing or debugging, the feature config can be
// override by the config override file below. The file should contain a JSON
// map for the options defined below.
static constexpr const char kOverrideHdrNetConfigFile[] =
"/run/camera/hdrnet_config.json";
struct Options {
// Enables the HDRnet pipeline to produce output frames.
bool hdrnet_enable = false;
// Dumps intermediate processing buffers for debugging.
bool dump_buffer = false;
// Whether to log per-frame metadata using MetadataLogger.
bool log_frame_metadata = false;
// The HDR ratio use for HDRnet rendering. Only effective if Gcam AE isn't
// running.
float hdr_ratio = 1.0f;
// |max_gain_blend_threshold| is a value in [0.0, 1.0] that defines a
// threshold for the pixel luma intensity below which the HDR ratio applied
// to the pixel will be linearly interpolated between [1.0, |hdr_ratio|]. If
// set to 0, the interpolation is disabled.
float max_gain_blend_threshold = 0.0f;
// Spatial and temporal filtering parameters for the HDRnet grid. Setting
// the parameters to 0 disables the filtering.
float spatial_filter_sigma = 0.0f;
float range_filter_sigma = 0.0f;
float iir_filter_strength = 0.0f;
// Whether to enable the spatiotemporal denoiser.
bool denoiser_enable = false;
// The temporal denoising filter strength of the denoiser in [0.0, 1.0].
// Value close to 1.0 will result in stronger denoising.
float iir_temporal_convergence = 0.7f;
// The number of spatial denoising passes to run. Disabled by default
// because experiments show that temporal denoising is good enough for
// HDRnet.
int num_spatial_passes = 0;
// The spatial denoising filter strength multiplier. Larger value will
// result in stronger denoising.
float spatial_strength = 1.5f;
};
};
// Helper function to parse general HDRnet options from the give JSON values.
void ParseHdrnetJsonOptions(const base::Value::Dict& json_values,
HdrNetConfig::Options& options);
} // namespace cros
#endif // CAMERA_FEATURES_HDRNET_HDRNET_CONFIG_H_