Skip to content

Picture Quality T31 sc4336p

Lu-Fi edited this page Oct 19, 2026 · 1 revision

T31 / SC4336P: vendor vs open stack (2026-10-19)

Setup

  • SoC T31X, sensor SmartSens SC4336P (2560x1440), kernel 3.10.14, uClibc.
  • Open: open-tx-isp 56229bf4 (tx-isp-t31.ko isp_clk=200000000) + OpenIMP 26dbdebe, streamer timps (OpenIMP flavour).
  • Vendor: Ingenic tx-isp-t31.ko (version H20221206a, same module parameters) + sensor module built from the same SDK source without the open-stack registry hook + Ingenic libimp 1.1.6 (uclibc), timps built with USE_OPENIMP=0 from the same source. Loaded at runtime after a reboot without the open modules; nothing flashed.
  • Same camera, same position, same light (indoor, dark, IR illumination; both stacks in night mode). Captures 20 min apart (different boots).
  • Captures: JPEG snapshot of channel 0 (1920x1080) and frame 60 of the RTSP H.264 main stream. Sensor test pattern: register 0x4501 bit 3.

Results

T31-sc4336p-pattern.png

Sensor test pattern (column profile, 32 columns, mean Y of the middle third, H.264):

Stack Profile (left to right)
vendor 0 x10, 50 136 157 163 170 178 185 194 203 218 235 248 255 255 255 144, 0 x6
open 0 x10, 84 197 252 255 ... 255 144, 0 x6

The vendor ISP renders the pattern's ramp as a smooth gradient (50..248 over 12 columns); the open ISP saturates after 2-3 columns. Same sensor data, so the open stack applies more gain and/or a steeper tone curve in night mode.

Scene (night/IR, monochrome, so no colour values):

Metric vendor JPEG open JPEG vendor H.264 open H.264
mean Y 105.1 109.0 105.0 106.2
Y p1..p99 46..162 43..179 47..162 42..174
sharpness (Laplacian variance) 244 268 222 247
noise (flat blocks, Laplacian std) 2.41 2.31 1.47 1.44

Format markers (identical for both stacks):

vendor open
JPEG JFIF, full range (pc), BT.601 JFIF, full range (pc), BT.601
H.264 VUI video_signal_type present, full_range=0, BT.709 primaries/transfer/matrix same

Assessment

  • Scene brightness, sharpness and noise in night mode match the vendor within a few percent; open has a slightly wider highlight range (p99 179 vs 162).
  • Tone curve / gain on the sensor pattern differs clearly: the open stack clips the ramp. This needs a look at night-mode gamma and digital gain.
  • Both stacks mark H.264 as limited range while the data spans 0..255 (Y p1 ~0 on the pattern), so the mismatch is vendor behaviour too.

Open points

  • Daylight colour comparison (red/green, saturation, NR) still to do: the scene was dark during this run. An external user reports "red too weak, NR too strong" on T31 in daylight.
  • After a reboot the open stack's timps chose day mode at an exposure value where the vendor build chose night mode (dark picture).

Encoder test pattern (open stack, synthetic source)

The frame source hands a synthetic NV12 pattern (grey ramps, 32 px checkerboard 16/235, eight colour bars) to the encoders (OpenIMP OPENIMP_TEST_PATTERN=1, test hook, off by default). The stream is decoded on the host and compared with the ideal picture. The vendor libimp has no frame injection, so only the open side is measured. T31-sc4336p-encoder-pattern.png.

Stream PSNR Y PSNR U/V SSIM Y bar colour error checker 16/235
H.264 2560x1440 66.1 99/99 0.9998 0 exact
H.264 1280x720 61.8 99/99 0.9994 0 exact
H.264 640x360 63.5 99/99 0.9996 0 exact
H.264 320x180 56.8 57/57 0.9986 0 exact
JPEG 640x360 55.6 53.1/52.0 0.9979 -1 at U/V 16/34 (quantisation) exact
JPEG 320x180 51.0 43.0/46.0 0.9947 -1 same exact

H.264 signals limited range, BT.709; JPEG is JFIF full range, BT.601. No colour swap, shift or orientation error.

Open Ingenic camera stack: open-tx-isp

Clone this wiki locally