blob: 35e5e1fbefc05becb41b5210417f0591a156f5bf [file] [log] [blame]
/* 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_HAL_USB_TEST_PATTERN_H_
#define CAMERA_HAL_USB_TEST_PATTERN_H_
#include <memory>
#include <camera/camera_metadata.h>
#include "hal/usb/common_types.h"
#include "hal/usb/frame_buffer.h"
namespace cros {
// Generates YU12 test pattern.
// This class is not thread-safe. Please call the functions on the same thread.
class TestPattern {
public:
explicit TestPattern(Size sensor_pixel_array_size, Size resolution);
TestPattern(const TestPattern&) = delete;
TestPattern& operator=(const TestPattern&) = delete;
~TestPattern();
// Sets pattern mode.
bool SetTestPatternMode(int32_t pattern_mode);
// Returns true if test pattern is enabled.
bool IsTestPatternEnabled() const;
// Returns the frame pointer since the ownership is kept in TestPattern.
FrameBuffer* GetTestPattern();
private:
bool GenerateTestPattern();
bool GenerateColorBar();
bool GenerateColorBarFadeToGray();
bool ConvertToYU12();
Size sensor_pixel_array_size_;
Size resolution_;
int32_t pattern_mode_;
std::unique_ptr<SharedFrameBuffer> pattern_image_rgb_;
std::unique_ptr<SharedFrameBuffer> pattern_image_yuv_;
};
} // namespace cros
#endif // CAMERA_HAL_USB_TEST_PATTERN_H_