mirror of
https://git.libcamera.org/libcamera/libcamera.git
synced 2025-07-26 01:55:51 +03:00
libcamera: Add ColorSpace class
This class represents a color space by defining its color primaries, the transfer (gamma) function it uses, the YCbCr encoding and whether the output is full or limited range. Signed-off-by: David Plowman <david.plowman@raspberrypi.com> Reviewed-by: Naushir Patuck <naush@raspberrypi.com> Reviewed-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
015fa7f718
commit
ddb5e9d37e
4 changed files with 389 additions and 0 deletions
70
include/libcamera/color_space.h
Normal file
70
include/libcamera/color_space.h
Normal file
|
@ -0,0 +1,70 @@
|
|||
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
||||
/*
|
||||
* Copyright (C) 2021, Raspberry Pi (Trading) Limited
|
||||
*
|
||||
* color_space.h - color space definitions
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <optional>
|
||||
#include <string>
|
||||
|
||||
namespace libcamera {
|
||||
|
||||
class ColorSpace
|
||||
{
|
||||
public:
|
||||
enum class Primaries {
|
||||
Raw,
|
||||
Smpte170m,
|
||||
Rec709,
|
||||
Rec2020,
|
||||
};
|
||||
|
||||
enum class TransferFunction {
|
||||
Linear,
|
||||
Srgb,
|
||||
Rec709,
|
||||
};
|
||||
|
||||
enum class YcbcrEncoding {
|
||||
None,
|
||||
Rec601,
|
||||
Rec709,
|
||||
Rec2020,
|
||||
};
|
||||
|
||||
enum class Range {
|
||||
Full,
|
||||
Limited,
|
||||
};
|
||||
|
||||
constexpr ColorSpace(Primaries p, TransferFunction t, YcbcrEncoding e, Range r)
|
||||
: primaries(p), transferFunction(t), ycbcrEncoding(e), range(r)
|
||||
{
|
||||
}
|
||||
|
||||
static const ColorSpace Raw;
|
||||
static const ColorSpace Jpeg;
|
||||
static const ColorSpace Srgb;
|
||||
static const ColorSpace Smpte170m;
|
||||
static const ColorSpace Rec709;
|
||||
static const ColorSpace Rec2020;
|
||||
|
||||
Primaries primaries;
|
||||
TransferFunction transferFunction;
|
||||
YcbcrEncoding ycbcrEncoding;
|
||||
Range range;
|
||||
|
||||
std::string toString() const;
|
||||
static std::string toString(const std::optional<ColorSpace> &colorSpace);
|
||||
};
|
||||
|
||||
bool operator==(const ColorSpace &lhs, const ColorSpace &rhs);
|
||||
static inline bool operator!=(const ColorSpace &lhs, const ColorSpace &rhs)
|
||||
{
|
||||
return !(lhs == rhs);
|
||||
}
|
||||
|
||||
} /* namespace libcamera */
|
|
@ -5,6 +5,7 @@ libcamera_include_dir = 'libcamera' / 'libcamera'
|
|||
libcamera_public_headers = files([
|
||||
'camera.h',
|
||||
'camera_manager.h',
|
||||
'color_space.h',
|
||||
'controls.h',
|
||||
'fence.h',
|
||||
'framebuffer.h',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue