~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/userspace-api/media/v4l/pixfmt-srggb8-pisp-comp.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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>`_.

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php