blob: eb1d62894d91948fa8b4bfd447bfe7b4bfae1075 [file] [log] [blame]
/*
* 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.
*/
#include "common/stream_manipulator.h"
#include <utility>
#if USE_CAMERA_FEATURE_HDRNET
#include <base/files/file_util.h>
#include "common/still_capture_processor_impl.h"
#include "cros-camera/camera_mojo_channel_manager.h"
#include "cros-camera/constants.h"
#include "cros-camera/jpeg_compressor.h"
#include "features/hdrnet/hdrnet_stream_manipulator.h"
#endif
#include "features/zsl/zsl_stream_manipulator.h"
namespace cros {
void MaybeEnableHdrNetStreamManipulator(
const StreamManipulator::Options& options,
std::vector<std::unique_ptr<StreamManipulator>>* out_stream_manipulators) {
#if USE_CAMERA_FEATURE_HDRNET
if (base::PathExists(base::FilePath(constants::kForceDisableHdrNetPath))) {
// HDRnet is forcibly disabled.
return;
}
if (base::PathExists(base::FilePath(constants::kForceEnableHdrNetPath)) ||
options.enable_hdrnet) {
// HDRnet is enabled forcibly or by the device setting.
// TODO(jcliang): Update the camera module name here when the names are
// updated in the HAL (b/194471449).
constexpr const char kIntelIpu6CameraModuleName[] =
"Intel Camera3HAL Module";
if (options.camera_module_name == kIntelIpu6CameraModuleName) {
std::unique_ptr<JpegCompressor> jpeg_compressor =
JpegCompressor::GetInstance(CameraMojoChannelManager::GetInstance());
out_stream_manipulators->emplace_back(
std::make_unique<HdrNetStreamManipulator>(
std::make_unique<StillCaptureProcessorImpl>(
std::move(jpeg_compressor))));
}
}
#endif
}
// static
std::vector<std::unique_ptr<StreamManipulator>>
StreamManipulator::GetEnabledStreamManipulators(Options options) {
std::vector<std::unique_ptr<StreamManipulator>> stream_manipulators;
MaybeEnableHdrNetStreamManipulator(options, &stream_manipulators);
if (options.enable_cros_zsl) {
stream_manipulators.emplace_back(std::make_unique<ZslStreamManipulator>());
}
return stream_manipulators;
}
} // namespace cros