2.16. 在 V4L2 中定義色彩空間

在 V4L2 中,色彩空間由四個值定義。第一個是色彩空間識別符號 (enum v4l2_colorspace),它定義了色度、預設傳輸函式、預設 Y’CbCr 編碼和預設量化方法。第二個是傳輸函式識別符號 (enum v4l2_xfer_func),用於指定非標準傳輸函式。第三個是 Y’CbCr 編碼識別符號 (enum v4l2_ycbcr_encoding),用於指定非標準 Y’CbCr 編碼,第四個是量化識別符號 (enum v4l2_quantization),用於指定非標準量化方法。大多數時候,只需要填充 struct v4l2_pix_format 或 struct v4l2_pix_format_mplane 的色彩空間欄位。

HSV 格式中,色調定義為圓柱形顏色表示上的角度。通常這個角度以度為單位測量,即 0-360。當我們把這個角度值對映到 8 位時,有兩種基本方法:將角度值除以 2 (0-179),或者使用整個範圍 0-255,將角度值除以 1.41。enum v4l2_hsv_encoding 指定使用哪種編碼。

注意

所有色彩空間的預設 R’G’B’ 量化都是全範圍。HSV 格式始終是全範圍。

type v4l2_colorspace
V4L2 色彩空間

識別符號

詳情

V4L2_COLORSPACE_DEFAULT

預設色彩空間。應用程式可以使用它來讓驅動程式填充色彩空間。

V4L2_COLORSPACE_SMPTE170M

參見 色彩空間 SMPTE 170M (V4L2_COLORSPACE_SMPTE170M)

V4L2_COLORSPACE_REC709

參見 色彩空間 Rec. 709 (V4L2_COLORSPACE_REC709)

V4L2_COLORSPACE_SRGB

參見 色彩空間 sRGB (V4L2_COLORSPACE_SRGB)

V4L2_COLORSPACE_OPRGB

參見 色彩空間 opRGB (V4L2_COLORSPACE_OPRGB)

V4L2_COLORSPACE_BT2020

參見 色彩空間 BT.2020 (V4L2_COLORSPACE_BT2020)

V4L2_COLORSPACE_DCI_P3

參見 色彩空間 DCI-P3 (V4L2_COLORSPACE_DCI_P3)

V4L2_COLORSPACE_SMPTE240M

參見 色彩空間 SMPTE 240M (V4L2_COLORSPACE_SMPTE240M)

V4L2_COLORSPACE_470_SYSTEM_M

參見 色彩空間 NTSC 1953 (V4L2_COLORSPACE_470_SYSTEM_M)

V4L2_COLORSPACE_470_SYSTEM_BG

參見 色彩空間 EBU Tech. 3213 (V4L2_COLORSPACE_470_SYSTEM_BG)

V4L2_COLORSPACE_JPEG

參見 色彩空間 JPEG (V4L2_COLORSPACE_JPEG)

V4L2_COLORSPACE_RAW

原始色彩空間。這用於原始影像捕獲,其中影像經過最小處理,並且使用裝置的內部色彩空間。使用此“色彩空間”處理影像的軟體必須瞭解捕獲裝置的內部結構。

type v4l2_xfer_func
V4L2 傳輸函式

識別符號

詳情

V4L2_XFER_FUNC_DEFAULT

使用色彩空間定義的預設傳輸函式。

V4L2_XFER_FUNC_709

使用 Rec. 709 傳輸函式。

V4L2_XFER_FUNC_SRGB

使用 sRGB 傳輸函式。

V4L2_XFER_FUNC_OPRGB

使用 opRGB 傳輸函式。

V4L2_XFER_FUNC_SMPTE240M

使用 SMPTE 240M 傳輸函式。

V4L2_XFER_FUNC_NONE

不使用傳輸函式(即使用線性 RGB 值)。

V4L2_XFER_FUNC_DCI_P3

使用 DCI-P3 傳輸函式。

V4L2_XFER_FUNC_SMPTE2084

使用 SMPTE 2084 傳輸函式。參見 傳輸函式 SMPTE 2084 (V4L2_XFER_FUNC_SMPTE2084)

type v4l2_ycbcr_encoding
V4L2 Y’CbCr 編碼

識別符號

詳情

V4L2_YCBCR_ENC_DEFAULT

使用色彩空間定義的預設 Y’CbCr 編碼。

V4L2_YCBCR_ENC_601

使用 BT.601 Y’CbCr 編碼。

V4L2_YCBCR_ENC_709

使用 Rec. 709 Y’CbCr 編碼。

V4L2_YCBCR_ENC_XV601

使用擴充套件色域 xvYCC BT.601 編碼。

V4L2_YCBCR_ENC_XV709

使用擴充套件色域 xvYCC Rec. 709 編碼。

V4L2_YCBCR_ENC_BT2020

使用預設的非恆定亮度 BT.2020 Y’CbCr 編碼。

V4L2_YCBCR_ENC_BT2020_CONST_LUM

使用恆定亮度 BT.2020 Yc’CbcCrc 編碼。

V4L2_YCBCR_ENC_SMPTE_240M

使用 SMPTE 240M Y’CbCr 編碼。

type v4l2_hsv_encoding
V4L2 HSV 編碼

識別符號

詳情

V4L2_HSV_ENC_180

對於色調,每個 LSB 是兩度。

V4L2_HSV_ENC_256

對於色調,360 度被對映到 8 位,即每個 LSB 大約是 1.41 度。

type v4l2_quantization
V4L2 量化方法

識別符號

詳情

V4L2_QUANTIZATION_DEFAULT

使用色彩空間定義的預設量化編碼。對於 R’G’B’ 和 HSV,這始終是全範圍。對於 Y’CbCr,這通常是有限範圍。

V4L2_QUANTIZATION_FULL_RANGE

使用全範圍量化編碼。即範圍 [0…1] 被對映到 [0…255](可能裁剪到 [1…254] 以避免 0x00 和 0xff 值)。Cb 和 Cr 從 [-0.5…0.5] 對映到 [0…255](可能裁剪到 [1…254] 以避免 0x00 和 0xff 值)。

V4L2_QUANTIZATION_LIM_RANGE

使用有限範圍量化編碼。即範圍 [0…1] 被對映到 [16…235]。Cb 和 Cr 從 [-0.5…0.5] 對映到 [16…240]。有限範圍不能與 HSV 一起使用。