blob: 81366e7e149748592627167dadfae23e9221f8cd [file] [log] [blame]
// Copyright 2018 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_EXIF_VALIDATOR_H_
#define CAMERA_CAMERA3_TEST_CAMERA3_EXIF_VALIDATOR_H_
#include <base/logging.h>
#include <exif-data.h>
#include "camera3_test/camera3_device_fixture.h"
namespace camera3_test {
class Camera3ExifValidator {
public:
struct JpegExifInfo {
const ScopedBufferHandle& buffer_handle;
size_t buffer_size;
void* buffer_addr;
ResolutionInfo jpeg_resolution;
ExifData* exif_data;
JpegExifInfo(const ScopedBufferHandle& buffer, size_t size);
~JpegExifInfo();
bool Initialize();
};
struct ExifTestData {
ResolutionInfo thumbnail_resolution;
int32_t orientation;
uint8_t jpeg_quality;
uint8_t thumbnail_quality;
};
explicit Camera3ExifValidator(const Camera3Device::StaticInfo& cam_info)
: cam_info_(cam_info) {}
Camera3ExifValidator(const Camera3ExifValidator&) = delete;
Camera3ExifValidator& operator=(const Camera3ExifValidator&) = delete;
void ValidateExifKeys(const ResolutionInfo& jpeg_resolution,
const ExifTestData& exif_test_data,
const ScopedBufferHandle& buffer,
size_t buffer_size,
const camera_metadata_t& metadata,
const time_t& date_time) const;
int getExifOrientation(const ScopedBufferHandle& buffer, size_t buffer_size);
protected:
const Camera3Device::StaticInfo& cam_info_;
};
} // namespace camera3_test
#endif // CAMERA_CAMERA3_TEST_CAMERA3_EXIF_VALIDATOR_H_