2.6.1.2. V4L2_PIX_FMT_PISP_COMP1_RGGB (‘PC1R’), V4L2_PIX_FMT_PISP_COMP1_GRBG (‘PC1G’), V4L2_PIX_FMT_PISP_COMP1_GBRG (‘PC1g’), V4L2_PIX_FMT_PISP_COMP1_BGGR (‘PC1B), V4L2_PIX_FMT_PISP_COMP1_MONO (‘PC1M’), V4L2_PIX_FMT_PISP_COMP2_RGGB (‘PC2R’), V4L2_PIX_FMT_PISP_COMP2_GRBG (‘PC2G’), V4L2_PIX_FMT_PISP_COMP2_GBRG (‘PC2g’), V4L2_PIX_FMT_PISP_COMP2_BGGR (‘PC2B), V4L2_PIX_FMT_PISP_COMP2_MONO (‘PC2M’)¶
2.6.1.2.1. Raspberry Pi PiSP 壓縮的 8 位 Bayer 格式¶
2.6.1.2.1.1. 描述¶
Raspberry Pi ISP (PiSP) 使用一組三種固定速率壓縮的 Bayer 格式。可以減去黑電平偏移以提高壓縮效率;標稱黑電平和偏移量必須帶外發出訊號。每條掃描線都填充到 8 畫素寬的倍數,每 8 個水平連續畫素的塊使用 8 位元組編碼。
模式 1 使用量化和基於增量的編碼方案,可保留多達 12 個有效位。模式 2 是一種簡單的類平方根壓擴方案,具有 6 個 PWL 和絃,可保留多達 12 個有效位。模式 3 結合了壓擴(帶 4 個和絃)和增量方案,可保留多達 14 個有效位。
本描述的其餘部分適用於模式 1 和模式 3。
每 8 個畫素的塊被分為偶數和奇數相位的 4 個畫素,透過記憶體中連續位置的 32 位字獨立編碼。每個 32 位字的兩個最低有效位給出其“量化模式”。
在量化模式 0 中,最低的 321 個量化級別是 FSD/4096 的倍數,其餘級別是 FSD/2048 的連續倍數。量化模式 1 和 2 使用線性量化,步長分別為 FSD/1024 和 FSD/512。四個畫素中的每一個都獨立量化,並四捨五入到最近的級別。在量化模式 2 中,如果中間兩個樣本的量化值 (q1,q2) 都在 [384..511] 範圍內,則它們使用 9 位編碼 q1,然後是 7 位編碼 (q2 & 127)。否則,對於量化模式 0、1 和 2:一個 9 位欄位編碼 MIN(q1,q2),其值必須在 [0..511] 範圍內,一個 7 位欄位編碼 (q2-q1+64),其值必須在 [0..127] 範圍內。
每個外部樣本 (q0,q3) 都使用一個 7 位欄位編碼,該欄位基於其內部鄰居 q1 或 q2。在量化模式 2 中,如果內部樣本的量化值在 [448..511] 範圍內,則欄位值為 (q0-384)。否則,對於量化模式 0、1 和 2:外部樣本編碼為 (q0-MAX(0,q1-64))。q3 也類似地基於 q2 編碼。這些值中的每一個都必須在 [0..127] 範圍內。這些分別為 2、9、7、7、7 位的欄位按小端序打包,以生成具有小端位元組序的 32 位字。
量化模式 3 具有“7.5 位”轉義,用於上述編碼都不適用時。每個畫素值量化到 176 個級別中最接近的一個,其中最低的 95 個級別是 FSD/256 的倍數,其餘級別是 FSD/128 的倍數(級別 175 表示非常接近 FSD 的值,可能需要飽和算術才能解碼)。
每對量化畫素 (q0,q1) 或 (q2,q3) 透過一個 15 位欄位共同編碼:2816*(q0>>4) + 16*q1 + (q0&15)。三個 2、15、15 位欄位按 LE 順序打包 {15,15,2}。
壓縮格式的軟體解碼器實現在 Raspberry Pi 攝像頭應用程式程式碼庫中提供。