1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later 2 3 .. _v4l2-pix-fmt-pisp-comp1-rggb: 4 .. _v4l2-pix-fmt-pisp-comp1-grbg: 5 .. _v4l2-pix-fmt-pisp-comp1-gbrg: 6 .. _v4l2-pix-fmt-pisp-comp1-bggr: 7 .. _v4l2-pix-fmt-pisp-comp1-mono: 8 .. _v4l2-pix-fmt-pisp-comp2-rggb: 9 .. _v4l2-pix-fmt-pisp-comp2-grbg: 10 .. _v4l2-pix-fmt-pisp-comp2-gbrg: 11 .. _v4l2-pix-fmt-pisp-comp2-bggr: 12 .. _v4l2-pix-fmt-pisp-comp2-mono: 13 14 ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 15 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') 16 ************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************** 17 18 ================================================ 19 Raspberry Pi PiSP compressed 8-bit Bayer formats 20 ================================================ 21 22 Description 23 =========== 24 25 The Raspberry Pi ISP (PiSP) uses a family of three fixed-rate compressed Bayer 26 formats. A black-level offset may be subtracted to improve compression 27 efficiency; the nominal black level and amount of offset must be signalled out 28 of band. Each scanline is padded to a multiple of 8 pixels wide, and each block 29 of 8 horizontally-contiguous pixels is coded using 8 bytes. 30 31 Mode 1 uses a quantization and delta-based coding scheme which preserves up to 32 12 significant bits. Mode 2 is a simple sqrt-like companding scheme with 6 PWL 33 chords, preserving up to 12 significant bits. Mode 3 combines both companding 34 (with 4 chords) and the delta scheme, preserving up to 14 significant bits. 35 36 The remainder of this description applies to Modes 1 and 3. 37 38 Each block of 8 pixels is separated into even and odd phases of 4 pixels, 39 coded independently by 32-bit words at successive locations in memory. 40 The two LS bits of each 32-bit word give its "quantization mode". 41 42 In quantization mode 0, the lowest 321 quantization levels are multiples of 43 FSD/4096 and the remaining levels are successive multiples of FSD/2048. 44 Quantization modes 1 and 2 use linear quantization with step sizes of 45 FSD/1024 and FSD/512 respectively. Each of the four pixels is quantized 46 independently, with rounding to the nearest level. 47 In quantization mode 2 where the middle two samples have quantized values 48 (q1,q2) both in the range [384..511], they are coded using 9 bits for q1 49 followed by 7 bits for (q2 & 127). Otherwise, for quantization modes 50 0, 1 and 2: a 9-bit field encodes MIN(q1,q2) which must be in the range 51 [0..511] and a 7-bit field encodes (q2-q1+64) which must be in [0..127]. 52 53 Each of the outer samples (q0,q3) is encoded using a 7-bit field based 54 on its inner neighbour q1 or q2. In quantization mode 2 where the inner 55 sample has a quantized value in the range [448..511], the field value is 56 (q0-384). Otherwise for quantization modes 0, 1 and 2: The outer sample 57 is encoded as (q0-MAX(0,q1-64)). q3 is likewise coded based on q2. 58 Each of these values must be in the range [0..127]. All these fields 59 of 2, 9, 7, 7, 7 bits respectively are packed in little-endian order 60 to give a 32-bit word with LE byte order. 61 62 Quantization mode 3 has a "7.5-bit" escape, used when none of the above 63 encodings will fit. Each pixel value is quantized to the nearest of 176 64 levels, where the lowest 95 levels are multiples of FSD/256 and the 65 remaining levels are multiples of FSD/128 (level 175 represents values 66 very close to FSD and may require saturating arithmetic to decode). 67 68 Each pair of quantized pixels (q0,q1) or (q2,q3) is jointly coded 69 by a 15-bit field: 2816*(q0>>4) + 16*q1 + (q0&15). 70 Three fields of 2, 15, 15 bits are packed in LE order {15,15,2}. 71 72 An implementation of a software decoder of compressed formats is available 73 in `Raspberry Pi camera applications code base 74 <https://github.com/raspberrypi/rpicam-apps/blob/main/image/dng.cpp>`_.
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.