blob: 48a241ea988083e85cb0c2d7ac9c639766991c13 [file] [log] [blame]
/* Copyright 2022 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_HAL_FAKE_METADATA_HANDLER_H_
#define CAMERA_HAL_FAKE_METADATA_HANDLER_H_
#include <camera/camera_metadata.h>
#include "hal/fake/hal_spec.h"
#include "hardware/camera3.h"
namespace cros {
constexpr android_pixel_format_t kSupportedHalFormats[] = {
HAL_PIXEL_FORMAT_BLOB,
HAL_PIXEL_FORMAT_YCBCR_420_888,
// The HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED for fake HAL returns exactly
// the same content as HAL_PIXEL_FORMAT_YCBCR_420_888.
HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED,
};
bool FillDefaultMetadata(android::CameraMetadata* static_metadata,
android::CameraMetadata* request_metadata,
const CameraSpec& spec);
bool FillResultMetadata(android::CameraMetadata* metadata, uint64_t timestamp);
// MetadataHandler is used for saving metadata states of CameraClient.
class MetadataHandler {
public:
MetadataHandler(const android::CameraMetadata& request_template,
const CameraSpec& spec);
const camera_metadata_t* GetDefaultRequestSettings(int template_type);
private:
android::CameraMetadata CreateDefaultRequestSettings(int template_type);
bool FillDefaultPreviewSettings(android::CameraMetadata* metadata);
bool FillDefaultStillCaptureSettings(android::CameraMetadata* metadata);
bool FillDefaultVideoRecordSettings(android::CameraMetadata* metadata);
bool FillDefaultVideoSnapshotSettings(android::CameraMetadata* metadata);
bool FillDefaultZeroShutterLagSettings(android::CameraMetadata* metadata);
bool FillDefaultManualSettings(android::CameraMetadata* metadata);
const android::CameraMetadata& request_template_;
const CameraSpec& spec_;
// Static array of standard camera settings templates.
android::CameraMetadata template_settings_[CAMERA3_TEMPLATE_COUNT];
};
} // namespace cros
#endif // CAMERA_HAL_FAKE_METADATA_HANDLER_H_