libcamera: colorspace: Rectify the ColorSpace::Srgb preset
Rectify the ColorSpace::Srgb to denote that it does not use any Y'Cbcr encoding and uses full range. The kernel on the other hand, recommends to use Rec601 as the encoding for V4L2_COLORSPACE_SRGB. It is not very explicit but it can be inferred that the kernel assumes V4L2_COLORSPACE_SRGB is a YUV-encoded one. However, when the data is in RGB, no encoding is required (and this is denoted by YcbcrEncoding::None in libcamera). Hence, to be clear on the libcamera colorspace API, rectify the ColorSpace::Srgb preset to use YcbcrEncoding::None and full range. Signed-off-by: Umang Jain <umang.jain@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
This commit is contained in:
parent
e52729e7ec
commit
d09c2bb127
2 changed files with 15 additions and 10 deletions
|
@ -746,7 +746,11 @@ void V4L2Device::eventAvailable()
|
|||
|
||||
static const std::map<uint32_t, ColorSpace> v4l2ToColorSpace = {
|
||||
{ V4L2_COLORSPACE_RAW, ColorSpace::Raw },
|
||||
{ V4L2_COLORSPACE_SRGB, ColorSpace::Srgb },
|
||||
{ V4L2_COLORSPACE_SRGB, {
|
||||
ColorSpace::Primaries::Rec709,
|
||||
ColorSpace::TransferFunction::Srgb,
|
||||
ColorSpace::YcbcrEncoding::Rec601,
|
||||
ColorSpace::Range::Limited } },
|
||||
{ V4L2_COLORSPACE_JPEG, ColorSpace::Sycc },
|
||||
{ V4L2_COLORSPACE_SMPTE170M, ColorSpace::Smpte170m },
|
||||
{ V4L2_COLORSPACE_REC709, ColorSpace::Rec709 },
|
||||
|
@ -772,7 +776,6 @@ static const std::map<uint32_t, ColorSpace::Range> v4l2ToRange = {
|
|||
|
||||
static const std::vector<std::pair<ColorSpace, v4l2_colorspace>> colorSpaceToV4l2 = {
|
||||
{ ColorSpace::Raw, V4L2_COLORSPACE_RAW },
|
||||
{ ColorSpace::Srgb, V4L2_COLORSPACE_SRGB },
|
||||
{ ColorSpace::Sycc, V4L2_COLORSPACE_JPEG },
|
||||
{ ColorSpace::Smpte170m, V4L2_COLORSPACE_SMPTE170M },
|
||||
{ ColorSpace::Rec709, V4L2_COLORSPACE_REC709 },
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue