/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2021, Raspberry Pi (Trading) Limited * * color_space.h - color space definitions */ #pragma once #include #include 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); }; bool operator==(const ColorSpace &lhs, const ColorSpace &rhs); static inline bool operator!=(const ColorSpace &lhs, const ColorSpace &rhs) { return !(lhs == rhs); } } /* namespace libcamera */