RayBench EmbeddedInteractive engineering labs
DSP

Camera Engineering from Sensor to Image

A complete imaging pipeline course covering pixels, exposure, noise, raw formats, ISP stages, MIPI CSI-2, drivers, tuning, and validation.

Reviewed 2026-08-224,328 wordsEmbedded, Linux, imaging, and computer-vision engineers who need system-level camera understanding.

Begin with photon collection

A pixel integrates photo-generated charge over exposure time. Full-well capacity, conversion gain, read noise, dark current, shot noise, and quantization shape the raw signal. Exposure time, aperture, illumination, and analog or digital gain have different effects, so the lab tracks where signal and noise enter rather than using one generic brightness control.

Raw data is sampled color

A color-filter array records only one color component at each photosite. Black-level correction, defect correction, lens shading, demosaicing, color correction, white balance, denoising, sharpening, tone mapping, and gamma transform the raw mosaic into a display image. Every stage can create artifacts and destroy information needed by later stages.

Transport and software must preserve meaning

MIPI CSI-2 packets, lane rate, virtual channels, data types, line timing, receiver configuration, DMA, memory layout, and pixel format must agree. Linux media-controller graphs and V4L2 queues add another layer of ownership and negotiation. The course traces a frame across these boundaries and identifies where corruption patterns originate.

Tune with evidence

A visually pleasing scene is not sufficient validation. Charts, controlled illumination, flat fields, dark frames, resolution targets, color patches, temporal sequences, and raw captures isolate different mechanisms. Measurements are tied to repeatable conditions and pipeline settings so changes can be compared rather than judged from memory.

What you will be able to do

  • Trace photons through sensor readout and image processing
  • Explain exposure, gain, dynamic range, and noise tradeoffs
  • Size camera links and buffers
  • Debug artifacts across sensor, transport, driver, ISP, and application layers

From scene photons to a frame in memory

A camera is a sampled measurement system. Optics map rays from the scene onto a two-dimensional sensor; each photosite integrates arriving photons during exposure, converts charge to a voltage and then a number, and a processing/transport pipeline turns those numbers into a timed image buffer.

The scene is continuous in space, time, wavelength and intensity. The camera discretizes all four: pixels sample space, frames sample time, the color filter array samples wavelength, and the ADC quantizes intensity.

The lens does not merely zoom. Focal length sets field of view, aperture controls light and diffraction, focus maps one object plane sharply, and aberrations make the point-spread function vary across the image.

A photosite is not an RGB pixel. Most single-sensor color cameras measure one filtered component at each location; the missing components are estimated later by demosaicing.

A frame is also a timing object. Exposure start/end, row readout, blanking, synchronization and DMA completion decide what moment each sample represents.

The useful engineering chain is scene -> optics -> photodiode -> analog front end -> ADC -> raw transport -> ISP/DSP -> memory -> encoder/display/vision. Debug from left to right and prove each boundary.

Vocabulary

photosite
Light-sensitive location that accumulates photoelectrons; it is not automatically a full-color output pixel.
frame
A two-dimensional set of samples plus timing, format, stride and metadata.
ISP
Image signal processor: hardware/software stages that correct and transform sensor-domain data.
metadata
Exposure, gain, timestamp, temperature, lens and statistics data required to interpret pixels.

Equations

spatial sampling
samples = width x height - Resolution counts sample locations; it does not alone guarantee resolved detail.
frame period
Tframe = 1 / fps - The total capture deadline per frame, including readout and blanking.

Common mistakes

  • Treating megapixels as image quality
  • Ignoring timestamps and exposure timing
  • Calling raw Bayer an RGB image

Optics, focus, field of view and diffraction

The lens projects angular scene content onto a finite sensor. Focal length and sensor size determine field of view; aperture and exposure control photon count; focus, motion, diffraction and aberrations determine how sharply a point is spread across pixels.

For a rectilinear lens, field of view is derived from sensor dimension and focal length. A smaller sensor with the same lens crops the angular field; digital resolution does not recover the missing view.

The f-number N=f/D is focal length divided by entrance-pupil diameter. Lower N admits more light but usually reduces depth of field and may expose lens aberrations.

Focus is geometric, but sharpness is a system property. Defocus blur, diffraction, motion blur, pixel aperture and ISP sharpening all combine in the modulation transfer function (MTF).

At small apertures the diffraction Airy disk grows approximately with wavelength and f-number. If it spans several pixel pitches, more megapixels cannot recover the lost spatial frequencies.

Lens shading and chief-ray angle change illumination/color across the sensor. Production cameras use calibrated lens-shading correction rather than a generic radial boost.

Vocabulary

focal length
Lens property that, with sensor size, sets angular field of view and magnification.
f-number
N=f/D; ratio governing irradiance and diffraction, not a physical aperture diameter by itself.
PSF / MTF
Point-spread function describes blur in space; MTF describes contrast transfer versus spatial frequency.
depth of field
Range of object distances accepted as sufficiently sharp for a chosen blur criterion.

Equations

field of view
FOV = 2 atan(sensor_dimension / (2 focal_length)) - Compute separately for horizontal, vertical and diagonal sensor dimensions.
motion blur
blur_pixels = image_velocity_pixels_per_second x exposure_seconds - Shorter exposure freezes motion but collects fewer photons.
Airy diameter
d ~= 2.44 lambda N - First-zero diffraction diameter for a circular aperture.

Common mistakes

  • Confusing focal length with field of view without sensor size
  • Stopping down indefinitely for sharpness
  • Using digital sharpening to hide optical defocus

CMOS sensor electronics and noise

Photoelectrons accumulate in a photodiode, are converted to voltage by a sense node, sampled and amplified, then quantized by an ADC. The result contains photon shot noise, read noise, dark signal, fixed-pattern effects and clipping—not a perfect measure of scene brightness.

Photon arrival is statistical. Shot-noise standard deviation grows roughly as the square root of collected signal, so signal-to-shot-noise improves with more photons.

Conversion gain maps electrons to voltage or digital numbers. Analog gain can lift a weak signal before downstream quantization/read stages but cannot recreate photons or recover clipped highlights.

Full-well capacity limits stored charge; ADC bit depth limits code granularity; read noise sets the dark-end floor. Dynamic range depends on the ratio of saturation signal to temporal noise, not bit depth alone.

Dark current grows with temperature and exposure time. Pixel response non-uniformity and dark-signal non-uniformity create spatial patterns that calibration can reduce.

Correlated double sampling subtracts a reset reference from the signal sample to suppress reset noise and offsets. Sensor architecture and timing determine what noise remains.

Vocabulary

quantum efficiency
Fraction of incident photons that produce collected electrons at a wavelength.
full well
Approximate electron capacity before a photosite saturates.
read noise
Temporal uncertainty added by pixel readout, analog chain and conversion, often expressed in electrons RMS.
conversion gain
Relationship between collected charge and output voltage or digital code.

Equations

shot noise
sigma_shot ~= sqrt(N_electrons) - A fundamental Poisson limit, independent of algorithm cleverness.
dynamic range
DR_dB = 20 log10(full_well_e / read_noise_e) - Use comparable electron-domain quantities.
ideal quantization SNR
SNR_dB ~= 6.02 bits + 1.76 - Only for a full-scale ideal sinusoid and ideal converter; not camera dynamic range.

Common mistakes

  • Equating 12-bit output with 72 dB sensor DR
  • Expecting gain to improve photon shot noise
  • Calibrating hot pixels from one frame

Exposure, gain, rolling shutter and synchronization

Exposure controls the integration interval; gain controls electronic scaling. A global shutter exposes pixels together, while a rolling shutter offsets row timing, so motion and flicker can reshape geometry and brightness even when every received byte is correct.

Auto-exposure is a feedback loop over scene statistics with constraints on exposure time, analog gain, digital gain, frame period and motion. Poor damping produces visible pumping.

Rolling-shutter exposure may be identical per row but begin at different times. Readout time—not just exposure time—sets geometric skew for moving subjects.

Global shutter usually needs in-pixel or near-pixel storage and may trade fill factor, noise or cost for simultaneity. Global reset release is not necessarily full global shutter readout.

Mains-powered lighting can flicker at line-frequency harmonics. Exposure and row timing interact with PWM/LED drivers to create horizontal bands.

Multi-camera systems need a common timebase, defined trigger latency, exposure-active semantics and timestamp provenance. Software calls issued together do not guarantee synchronized photons.

Vocabulary

integration time
Interval during which photocharge is accumulated.
rolling shutter
Rows begin/end exposure at offset times, creating a time surface across the frame.
frame sync
Signal or protocol mechanism aligning frame/exposure timing across components.
blanking
Non-active line/frame timing used for readout and protocol scheduling; still consumes time and sometimes bandwidth.

Equations

row time
Trow = line_length_pck / pixel_clock - Includes horizontal blanking defined by sensor timing registers.
frame time
Tframe = frame_length_lines x Trow - Exposure must fit the sensor's timing rules, often with a margin.
rolling skew
Tskew ~= (active_rows - 1) x Trow - Difference between first and last row sampling time.

Common mistakes

  • Using FPS as exposure time
  • Calling software timestamps exposure timestamps
  • Fixing flicker with gain

Bayer, RAW packing, RGB and YCbCr

Meaning comes from format plus dimensions, stride, packing, Bayer phase, bit depth, range and colorimetry. RAW10 is not an array of 16-bit pixels, YUYV is not RGB, and identical-looking four-character codes can still require plane and stride rules.

Common Bayer phases RGGB, BGGR, GRBG and GBRG depend on the first active pixel after crop/flip. A one-pixel crop can change the phase even if the sensor's native mosaic did not.

Packed RAW10 commonly stores four 10-bit samples in five bytes, while unpacked containers may place each sample in 16 bits with alignment defined by the API. Never infer layout from bit depth alone.

RGB describes three components but not their primaries, transfer function, white point or numeric range. Those metadata are required for color-correct interchange.

YCbCr separates luma-like and chroma-difference components. 4:2:2 and 4:2:0 reduce chroma samples; siting, matrix and limited/full range matter.

Stride may exceed visible row bytes for alignment. Plane offsets and cache/DMA alignment must use the negotiated buffer layout, not width multiplied by bytes per pixel.

Vocabulary

CFA
Color filter array over photosites, commonly a Bayer mosaic.
stride
Byte distance between corresponding positions in adjacent rows; may include padding.
chroma subsampling
Lower spatial sampling of color-difference components, such as 4:2:2 or 4:2:0.
FourCC / media-bus code
Format identifiers at different API boundaries; they do not replace full layout/color metadata.

Equations

packed row minimum
row_bytes = ceil(width x bits_per_pixel / 8) - Protocols may add group alignment, padding and packet overhead.
active payload
payload_bps = width x height x fps x bits_per_pixel - Then account for blanking, packets, encoding and safety margin.

Common mistakes

  • Hard-coding stride=width*bpp
  • Swapping U/V or limited/full range
  • Demosaicing with the native phase after an odd crop

Control plane, pixel transport and camera interfaces

Camera systems separate a low-bandwidth control plane from a high-bandwidth pixel plane. I2C/CCI or SPI programs registers; DVP or CSI-2 transports sensor samples; USB, Ethernet or serial/deserializer links package cameras at a larger system boundary.

A sensor's I2C address and register map select mode, timing, gain and test patterns. Successful register writes prove control only; they do not prove clocks, lanes, packet type or receiver configuration.

Parallel DVP uses pixel data plus clock and synchronization signals. It is easy to probe at modest rates but consumes pins and creates simultaneous-switching and timing-closure challenges.

MIPI CSI-2 is a packet protocol commonly carried over D-PHY or C-PHY. Lanes, virtual channels, data types, short/long packets, ECC/CRC and low-power/high-speed transitions belong to different layers.

Board-level and cable interfaces solve different reach, EMC, power and interoperability problems. CSI-2 is not the same category as UVC, GigE Vision or a proprietary automotive SerDes link.

Bandwidth spreadsheets must include the exact wire encoding and overhead for the chosen layer, plus measured margin. Do not apply one universal 15 percent factor to every interface.

Vocabulary

control plane
Low-rate configuration/status path, often I2C/CCI or SPI.
pixel plane
High-rate stream carrying image payload and frame/line structure.
CSI-2
MIPI camera packet protocol; not itself the electrical PHY.
virtual channel
CSI-2 stream identifier used to multiplex logical streams on one link.

Equations

link utilization
utilization = required_wire_rate / aggregate_lane_capacity - Keep deterministic headroom for overhead and implementation limits.
DVP sample rate
pixel_clock ~= total_pixels_per_frame x fps - Total timing includes horizontal and vertical blanking.

Common mistakes

  • Calling CSI-2 an electrical standard
  • Assuming I2C ACK means frames exist
  • Ignoring lane order/polarity and continuous-clock mode

The ISP pipeline, stage by stage

An ISP applies sensor-domain corrections, reconstructs color, estimates scene parameters, transforms color, manages dynamic range, reduces noise and sharpens/encodes output. Stage order matters because operations change noise, clipping and the meaning of neighboring samples.

A representative raw path is black-level subtraction -> defect correction -> lens shading -> white balance -> demosaic -> color correction -> tone/gamma -> chroma conversion -> denoise/sharpen. Real pipelines branch and may reorder coupled stages.

Black level must be removed before multiplicative gains or color matrices; otherwise offsets become color casts. Optical-black rows or calibrated tables can track drift.

White balance applies channel gains to compensate illuminant/sensor response. Auto-white-balance estimates are ambiguous when the scene itself lacks neutral information.

A 3x3 color-correction matrix maps camera-native linear RGB toward a target color space under a calibration illuminant. It cannot correct clipping or arbitrary spatial/spectral metamerism.

Tone mapping and transfer functions are nonlinear presentation operations. Applying linear-light convolution assumptions after an unknown gamma can create halos and incorrect photometry.

Vocabulary

black level
Code offset representing zero light after readout; may vary by channel, gain, exposure and temperature.
demosaic
Estimate missing color components at each CFA location using neighboring samples and edge structure.
CCM
Color-correction matrix converting linear camera RGB to an intended linear color representation.
tone map
Nonlinear mapping from scene-referred range to a display/output range.

Equations

white balance
[R G B]wb = [gR*R, gG*G, gB*B] - Use adequate precision and headroom; gains can clip highlights.
color correction
rgb_out = M3x3 x rgb_camera - Usually applied to linear, black-corrected data.
convolution
y[x,y] = sum_i sum_j h[i,j] x[x-i,y-j] - Foundation for blur, denoise, gradients and sharpening.

Common mistakes

  • Demosaicing before black-level correction
  • Applying a gamma-domain color matrix
  • Sharpening noise before denoising

Where DSP actually matters

DSP matters wherever samples are filtered, estimated, resampled or transformed: demosaic, denoise, edge detection, scaling, stabilization, autofocus metrics, flicker analysis, HDR merge, color transforms and compression. The hard part is preserving detail and latency under noise, bandwidth and fixed-point limits.

Spatial filters trade noise reduction against edge/detail loss. Edge-aware and bilateral methods alter weights using local intensity differences; temporal filters add motion/ghosting failure modes.

Demosaicing is interpolation under a color-sampling lattice. Bilinear is cheap but creates zippering and false color; edge-directed methods improve structure at higher compute/memory cost.

Scaling requires anti-alias low-pass filtering before downsampling. Dropping pixels aliases high spatial frequencies into false low-frequency patterns such as moire.

Autofocus often maximizes a high-frequency/contrast metric over a region. Noise, textureless scenes, flicker and local maxima can fool a naive hill-climber.

Embedded DSP optimization begins with the dataflow: line buffers, separable kernels, vector width, fixed-point range, cache/DMA ownership and fusion. Counting multiplies alone misses memory bandwidth.

Vocabulary

aliasing
Indistinguishable folding caused by sampling content above the supported spatial or temporal bandwidth.
separable kernel
2D filter expressible as horizontal then vertical 1D filters, reducing operations and storage.
line buffer
Small rolling storage for neighboring rows, enabling streaming kernels without a full-frame copy.
fixed point
Integer representation with an implied binary scale; needs explicit range, rounding and saturation policy.

Equations

spatial Nyquist
f_spatial < 1 / (2 pixel_pitch) - The optical MTF and CFA complicate the practical limit, but sampling still constrains recoverable detail.
Sobel gradient
magnitude ~= |Gx| + |Gy| - Cheap autofocus/edge proxy; sqrt(Gx^2+Gy^2) is more exact.
frame compute budget
cycles_per_pixel = CPU_Hz / (width x height x fps) - A hard first check before choosing an algorithm.

Common mistakes

  • Downsampling without anti-alias filtering
  • Benchmarking only arithmetic
  • Allowing fixed-point wraparound in an image pipeline

Color, HDR and objective image quality

Correctness depends on the application and a defined measurement chain. Camera characterization separates sensitivity, noise, linearity, non-uniformity, spatial resolution, color error, dynamic range and temporal behavior instead of collapsing everything into a subjective screenshot.

Scene-referred linear values, nonlinear RGB code values and display luminance are different domains. Primaries, white point, transfer function, matrix coefficients and numeric range must travel with the buffer.

HDR can mean a high-dynamic-range sensor mode, multi-exposure merge, a scene-referred working representation or an HDR display transfer function. Name the layer.

Multi-exposure HDR requires motion handling and knowledge of exposure/gain response. Saturated or under-noise-floor samples cannot be repaired by simple averaging.

EMVA 1288 provides a measurement framework for sensor/camera sensitivity, noise, linearity and non-uniformity. Resolution chart standards address a different question.

PSNR/SSIM can compare processed images but may not predict task performance or color fidelity. Machine vision should also measure detection/measurement accuracy under controlled conditions.

Vocabulary

linear light
Values proportional to physical light/scene exposure before a display-oriented transfer function.
color space
Defined primaries, white point and transfer/encoding rules—not merely 'RGB'.
HDR merge
Combine samples captured at different exposures/gains to extend usable scene range.
SNR
Signal-to-noise ratio under a stated measurement method and operating point.

Equations

SNR
SNR_dB = 20 log10(signal_rms / noise_rms) - State the domain, ROI, temporal/spatial method and black subtraction.
PSNR
PSNR = 10 log10(MAX^2 / MSE) - Useful for error comparison, not a universal quality score.

Common mistakes

  • Saying BT.709 while using full-range JPEG coefficients
  • Calling tone-mapped output raw HDR
  • Comparing auto-exposed screenshots as sensor tests

Embedded pipeline architecture and zero-copy buffers

A reliable embedded camera uses explicit buffer ownership, bounded queues, negotiated layouts, DMA-safe memory, timestamps and backpressure/drop policy. Zero-copy means avoiding payload copies—not avoiding synchronization, cache maintenance or lifetime rules.

Model every frame as a state machine: FREE -> SENSOR/DMA -> CAPTURED -> PROCESSING -> CONSUMER -> FREE. Only one owner may mutate a buffer at a time.

Allocate enough buffers for pipeline depth and jitter, but do not hide overload with an unbounded queue. Real-time viewing often drops oldest frames; recording may require backpressure or a guaranteed sink rate.

On non-coherent systems, DMA and CPU caches require clean/invalidate operations with correct direction and barriers. Alignment and whole-cache-line ownership prevent unrelated data corruption.

Linux V4L2 streaming uses queued buffers; DMABUF can share allocations across capture, ISP, GPU or encoder. Format/plane modifiers and fences still define interoperability.

End-to-end latency is exposure midpoint to useful consumer output. Queue depth may dominate even when each algorithm is fast. Instrument sequence number and timestamps at every boundary.

Vocabulary

backpressure
Mechanism that slows/stops a producer when downstream capacity is exhausted.
DMABUF
Linux file-descriptor mechanism for sharing DMA-capable buffers between devices/subsystems.
cache coherency
Rules ensuring CPU/device observers agree on memory contents; not guaranteed for all DMA paths.
fence
Synchronization object signaling when asynchronous buffer access has completed.

Equations

raw memory rate
bytes_per_second = stride x height x fps x passes - Every read/write pass matters; intermediate formats may expand data.
buffer memory
memory = sum(plane_size) x buffer_count - Include alignment, metadata and all concurrent pipeline pools.
Little's Law
in_flight ~= throughput x latency - Relates pipeline occupancy, steady throughput and end-to-end time.

Common mistakes

  • Requeueing while a consumer still reads
  • Calling DMABUF automatically coherent
  • Using a deep queue to 'fix' dropped frames

Linux V4L2, media controller and camera drivers

Simple cameras may look like one video node; complex SoCs expose a media graph of sensor, CSI receiver, ISP, scaler and DMA subdevices. Userspace negotiates formats, controls and routes, queues buffers, starts streaming, then dequeues completed frames with metadata.

VIDIOC_QUERYCAP discovers node capabilities. Enumerate formats/frame sizes/intervals rather than assuming a mode, then use TRY_FMT/S_FMT and read back what the driver accepted.

Streaming I/O commonly follows REQBUFS -> QUERYBUF/map or DMABUF setup -> QBUF all -> STREAMON -> poll/DQBUF/process/QBUF -> STREAMOFF.

Media-controller-centric systems expose entities, pads and links. Format compatibility must propagate across each enabled link before the video node can stream.

Sensor controls include exposure, analogue gain, blanking and test pattern; ISP controls/statistics may be separate. Atomic request APIs matter when controls must apply to a specific frame.

Device-tree/firmware endpoints describe clocks, regulators, GPIOs, bus type, data lanes, link frequencies and graph connections. Probe success is only the start of validation.

Vocabulary

video node
Userspace-facing /dev/videoX endpoint for captured/output buffers.
subdevice
V4L2 representation of a pipeline component such as sensor, CSI receiver or scaler.
media graph
Entities connected by pads/links, representing configurable dataflow topology.
request API
Mechanism to group per-frame controls and buffers for atomic application.

Equations

application latency
latency ~= queued_frames / fps + processing + display - Dequeuing the newest frame may be preferable for control/preview workloads.

Common mistakes

  • Hard-coding /dev/video0
  • Not reading back S_FMT
  • Configuring only the terminal video node on an MC-centric pipeline

Bring-up, validation and failure forensics

Bring-up is a layered proof: rails/reset/clock, control bus, sensor timing, physical link, protocol packets, receiver errors, DMA buffers, pixel interpretation and ISP quality. Use sensor test patterns and counters to isolate the first boundary that violates its contract.

Start with schematics and a power/reset/clock timeline. Measure rails and master clock at the device; do not infer them from register writes.

Read chip ID and mode registers, then enable a deterministic sensor test pattern. A correct pattern bypasses optics and scene uncertainty while preserving most of the digital path.

Collect CSI receiver counters: start-of-transmission sync, ECC, CRC, FIFO overflow, data-type/virtual-channel mismatch, frame/line counts and lane state transitions.

If geometry is correct but colors are wrong, inspect Bayer phase, bit alignment, black level and color order before tuning matrices. If rows tear, inspect stride, buffer lifetime and cache synchronization.

Production validation includes temperature, voltage corners, long-duration frame continuity, ESD/EMI, cable variation, suspend/resume, hot-plug where applicable and fault recovery.

Vocabulary

test pattern
Sensor-generated deterministic pixels used to validate timing, transport, packing and receiver behavior.
ECC / CRC
CSI-2 header error correction and payload integrity checks; counter meaning is receiver-specific.
frame sequence
Monotonic identifier used to detect drops, duplicates and reordering.
golden frame
Versioned known input/output with controlled conditions, useful for regression—not a substitute for full characterization.

Equations

drop rate
drops = expected_sequence_delta - received_frames - Correlate with receiver, DMA and application counters.
latency jitter
jitter = percentile(latency) - median(latency) - Report distributions and tail percentiles, not only averages.

Common mistakes

  • Tuning ISP before transport is proven
  • Power-cycling until it works
  • Reporting FPS without drop and latency evidence

More in DSP

  • Audio AnalyzerAudio analyzer: real-time FFT spectrum, waveform, and spectrogram with adjustable sample rate and windowing. Interactive simulator.
  • Fourier TransformInteractive Fourier transform simulator for continuous-time signals: time-frequency duality, sinc functions, and convolution theorem.
  • FFTInteractive FFT lab for real-time embedded audio. Explore radix-2 algorithm, butterfly operations, and computational complexity for spectrum analysis.
  • Z-TransformInteractive Z-Transform lab for embedded engineers. Visualize pole-zero plots, region of convergence, and transfer functions for discrete-time systems.
  • ModulationInteractive modulation simulator for embedded communications. Explore AM, FM, and QAM schemes, visualize carrier waves, and analyze modulated spectra.
  • DFTInteractive DFT simulator: frequency sampling of discrete signals, spectral leakage, windowing, and time-frequency bin relationships.
  • FIRInteractive FIR filter designer using the windowing method: impulse response, magnitude/phase response, and linear phase property.
  • IIRIIR filter design lab: Butterworth and Chebyshev types, pole-zero stability, and frequency response with feedback. Interactive simulator.
  • DSPFourier, filters, modulation, audio and complete camera engineering—from photons, sensors and CSI-2 through ISP/DSP, DMA, V4L2 and production validation.

References and further reading