1.16. JPEG Control Reference

The JPEG class includes controls for common features of JPEG encoders and decoders. Currently it includes features for codecs implementing progressive baseline DCT compression process with Huffman entrophy coding.

1.16.1. JPEG Control IDs

The JPEG class descriptor. Calling ioctls VIDIOC_QUERYCTRL, VIDIOC_QUERY_EXT_CTRL and VIDIOC_QUERYMENU for this control will return a description of this control class.
The chroma subsampling factors describe how each component of an input image is sampled, in respect to maximum sample rate in each spatial dimension. See ITU-T.81, clause A.1.1. for more details. The V4L2_CID_JPEG_CHROMA_SUBSAMPLING control determines how Cb and Cr components are downsampled after converting an input image from RGB to Y’CbCr color space.
V4L2_JPEG_CHROMA_SUBSAMPLING_444 No chroma subsampling, each pixel has Y, Cr and Cb values.
V4L2_JPEG_CHROMA_SUBSAMPLING_422 Horizontally subsample Cr, Cb components by a factor of 2.
V4L2_JPEG_CHROMA_SUBSAMPLING_420 Subsample Cr, Cb components horizontally and vertically by 2.
V4L2_JPEG_CHROMA_SUBSAMPLING_411 Horizontally subsample Cr, Cb components by a factor of 4.
V4L2_JPEG_CHROMA_SUBSAMPLING_410 Subsample Cr, Cb components horizontally by 4 and vertically by 2.
V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY Use only luminance component.
The restart interval determines an interval of inserting RSTm markers (m = 0..7). The purpose of these markers is to additionally reinitialize the encoder process, in order to process blocks of an image independently. For the lossy compression processes the restart interval unit is MCU (Minimum Coded Unit) and its value is contained in DRI (Define Restart Interval) marker. If V4L2_CID_JPEG_RESTART_INTERVAL control is set to 0, DRI and RSTm markers will not be inserted.

V4L2_CID_JPEG_COMPRESSION_QUALITY control determines trade-off between image quality and size. It provides simpler method for applications to control image quality, without a need for direct reconfiguration of luminance and chrominance quantization tables. In cases where a driver uses quantization tables configured directly by an application, using interfaces defined elsewhere, V4L2_CID_JPEG_COMPRESSION_QUALITY control should be set by driver to 0.

The value range of this control is driver-specific. Only positive, non-zero values are meaningful. The recommended range is 1 - 100, where larger values correspond to better image quality.

Specify which JPEG markers are included in compressed stream. This control is valid only for encoders.
V4L2_JPEG_ACTIVE_MARKER_APP0 Application data segment APP0.
V4L2_JPEG_ACTIVE_MARKER_APP1 Application data segment APP1.
V4L2_JPEG_ACTIVE_MARKER_COM Comment segment.
V4L2_JPEG_ACTIVE_MARKER_DQT Quantization tables segment.
V4L2_JPEG_ACTIVE_MARKER_DHT Huffman tables segment.

For more details about JPEG specification, refer to ITU-T.81, JFIF, W3C JPEG JFIF.