Logo

The Linux Kernel

6.12.0-rc1

Quick search

Contents

  • Development process
  • Submitting patches
  • Code of conduct
  • Maintainer handbook
  • All development-process docs
  • Core API
  • Driver APIs
    • General information for driver authors
    • Useful support libraries
    • Bus-level documentation
    • Subsystem-specific APIs
      • Linux 802.11 Driver Developer’s Guide
      • ACPI Support
      • Kernel driver lp855x
      • The Common Clk Framework
      • Console Drivers
      • Crypto Drivers
      • DMAEngine documentation
      • The Linux kernel dpll subsystem
      • Error Detection And Correction (EDAC) Devices
      • Linux Firmware API
      • FPGA Subsystem
      • Frame Buffer Library
      • Managing Ownership of the Framebuffer Aperture
      • Generic Counter Interface
      • General Purpose Input/Output (GPIO)
      • High Speed Synchronous Serial Interface (HSI)
      • The Linux Hardware Timestamping Engine (HTE)
      • I2C and SMBus Subsystem
      • Industrial I/O
      • InfiniBand and Remote DMA (RDMA) Interfaces
      • Input Subsystem
      • Generic System Interconnect Subsystem
      • IPMB Driver for a Satellite MC
      • The Linux IPMI Driver
      • libATA Developer’s Guide
      • The Common Mailbox Framework
      • RAID
      • Media subsystem kernel internal API
      • Intel(R) Management Engine Interface (Intel(R) MEI)
      • Memory Controller drivers
      • Message-based devices
      • Miscellaneous Devices
      • Parallel Port Devices
      • 16x50 UART Driver
      • Pulse-Width Modulation (PWM)
      • MMC/SD/SDIO card support
      • Memory Technology Device (MTD)
      • MTD NAND Driver Programming Interface
      • Near Field Communication
      • NTB Drivers
      • Non-Volatile Memory Device (NVDIMM)
      • NVMEM Subsystem
      • PARPORT interface documentation
      • Generic PHY Framework
      • PINCTRL (PIN CONTROL) subsystem
      • PLDM Firmware Flash Update Library
      • Overview of the pldmfw library
      • PPS - Pulse Per Second
      • PTP hardware clock infrastructure for Linux
      • Pulse Width Modulation (PWM) interface
      • Power Sequencing API
      • Voltage and current regulator API
      • Reset controller API
      • rfkill - RF kill switch support
      • Writing s390 channel device drivers
      • SCSI Interfaces Guide
      • Support for Serial devices
      • SM501 Driver
      • SoundWire Documentation
      • Serial Peripheral Interface (SPI)
      • Surface System Aggregator Module (SSAM)
      • Linux Switchtec Support
      • Sync File API Guide
      • target and iSCSI Interfaces Guide
      • TEE (Trusted Execution Environment) driver API
      • Thermal
      • TTY
      • WBRF - Wifi Band RFI Mitigations
      • WMI Driver API
      • Xilinx FPGA
      • Writing Device Drivers for Zorro Devices
  • Subsystems
  • Locking
  • Licensing rules
  • Writing documentation
  • Development tools
  • Testing guide
  • Hacking guide
  • Tracing
  • Fault injection
  • Livepatching
  • Rust
  • Administration
  • Build system
  • Reporting issues
  • Userspace tools
  • Userspace API
  • Firmware
  • Firmware and Devicetree
  • CPU architectures
  • Unsorted documentation
  • Translations

This Page

  • Show Source

2.29. V4L2 JPEG header related functions and data structures¶

struct v4l2_jpeg_reference¶

reference into the JPEG buffer

Definition:

struct v4l2_jpeg_reference {
    u8 *start;
    size_t length;
};

Members

start

pointer to the start of the referenced segment or table

length

size of the referenced segment or table

Description

Wnen referencing marker segments, start points right after the marker code, and length is the size of the segment parameters, excluding the marker code.

struct v4l2_jpeg_frame_component_spec¶

frame component-specification

Definition:

struct v4l2_jpeg_frame_component_spec {
    u8 component_identifier;
    u8 horizontal_sampling_factor;
    u8 vertical_sampling_factor;
    u8 quantization_table_selector;
};

Members

component_identifier

C[i]

horizontal_sampling_factor

H[i]

vertical_sampling_factor

V[i]

quantization_table_selector

quantization table destination selector Tq[i]

struct v4l2_jpeg_frame_header¶

JPEG frame header

Definition:

struct v4l2_jpeg_frame_header {
    u16 height;
    u16 width;
    u8 precision;
    u8 num_components;
    struct v4l2_jpeg_frame_component_spec component[V4L2_JPEG_MAX_COMPONENTS];
    enum v4l2_jpeg_chroma_subsampling subsampling;
};

Members

height

Y

width

X

precision

P

num_components

Nf

component

component-specification, see v4l2_jpeg_frame_component_spec

subsampling

decoded subsampling from component-specification

struct v4l2_jpeg_scan_component_spec¶

scan component-specification

Definition:

struct v4l2_jpeg_scan_component_spec {
    u8 component_selector;
    u8 dc_entropy_coding_table_selector;
    u8 ac_entropy_coding_table_selector;
};

Members

component_selector

Cs[j]

dc_entropy_coding_table_selector

Td[j]

ac_entropy_coding_table_selector

Ta[j]

struct v4l2_jpeg_scan_header¶

JPEG scan header

Definition:

struct v4l2_jpeg_scan_header {
    u8 num_components;
    struct v4l2_jpeg_scan_component_spec component[V4L2_JPEG_MAX_COMPONENTS];
};

Members

num_components

Ns

component

component-specification, see v4l2_jpeg_scan_component_spec

enum v4l2_jpeg_app14_tf¶

APP14 transform flag According to Rec. ITU-T T.872 (06/2012) 6.5.3 APP14 segment is for color encoding, it contains a transform flag, which may have values of 0, 1 and 2 and are interpreted as follows:

Constants

V4L2_JPEG_APP14_TF_CMYK_RGB

CMYK for images encoded with four components RGB for images encoded with three components

V4L2_JPEG_APP14_TF_YCBCR

an image encoded with three components using YCbCr

V4L2_JPEG_APP14_TF_YCCK

an image encoded with four components using YCCK

V4L2_JPEG_APP14_TF_UNKNOWN

indicate app14 is not present

struct v4l2_jpeg_header¶

parsed JPEG header

Definition:

struct v4l2_jpeg_header {
    struct v4l2_jpeg_reference sof;
    struct v4l2_jpeg_reference sos;
    unsigned int num_dht;
    struct v4l2_jpeg_reference dht[V4L2_JPEG_MAX_TABLES];
    unsigned int num_dqt;
    struct v4l2_jpeg_reference dqt[V4L2_JPEG_MAX_TABLES];
    struct v4l2_jpeg_frame_header frame;
    struct v4l2_jpeg_scan_header *scan;
    struct v4l2_jpeg_reference *quantization_tables;
    struct v4l2_jpeg_reference *huffman_tables;
    u16 restart_interval;
    size_t ecs_offset;
    enum v4l2_jpeg_app14_tf app14_tf;
};

Members

sof

pointer to frame header and size

sos

pointer to scan header and size

num_dht

number of entries in dht

dht

pointers to huffman tables and sizes

num_dqt

number of entries in dqt

dqt

pointers to quantization tables and sizes

frame

parsed frame header

scan

pointer to parsed scan header, optional

quantization_tables

references to four quantization tables, optional

huffman_tables

references to four Huffman tables in DC0, DC1, AC0, AC1 order, optional

restart_interval

number of MCU per restart interval, Ri

ecs_offset

buffer offset in bytes to the entropy coded segment

app14_tf

transform flag from app14 data

Description

When this structure is passed to v4l2_jpeg_parse_header, the optional scan, quantization_tables, and huffman_tables pointers must be initialized to NULL or point at valid memory.

int v4l2_jpeg_parse_header(void *buf, size_t len, struct v4l2_jpeg_header *out)¶

locate marker segments and optionally parse headers

Parameters

void *buf

address of the JPEG buffer, should start with a SOI marker

size_t len

length of the JPEG buffer

struct v4l2_jpeg_header *out

returns marker segment positions and optionally parsed headers

Description

The out->scan_header pointer must be initialized to NULL or point to a valid v4l2_jpeg_scan_header structure. The out->huffman_tables and out->quantization_tables pointers must be initialized to NULL or point to a valid array of 4 v4l2_jpeg_reference structures each.

Returns 0 or negative error if parsing failed.

int v4l2_jpeg_parse_frame_header(void *buf, size_t len, struct v4l2_jpeg_frame_header *frame_header)¶

parse frame header

Parameters

void *buf

address of the frame header, after the SOF0 marker

size_t len

length of the frame header

struct v4l2_jpeg_frame_header *frame_header

returns the parsed frame header

Description

Returns 0 or negative error if parsing failed.

int v4l2_jpeg_parse_scan_header(void *buf, size_t len, struct v4l2_jpeg_scan_header *scan_header)¶

parse scan header

Parameters

void *buf

address of the scan header, after the SOS marker

size_t len

length of the scan header

struct v4l2_jpeg_scan_header *scan_header

returns the parsed scan header

Description

Returns 0 or negative error if parsing failed.

int v4l2_jpeg_parse_quantization_tables(void *buf, size_t len, u8 precision, struct v4l2_jpeg_reference *q_tables)¶

parse quantization tables segment

Parameters

void *buf

address of the quantization table segment, after the DQT marker

size_t len

length of the quantization table segment

u8 precision

sample precision (P) in bits per component

struct v4l2_jpeg_reference *q_tables

returns four references into the buffer for the four possible quantization table destinations

Description

Returns 0 or negative error if parsing failed.

int v4l2_jpeg_parse_huffman_tables(void *buf, size_t len, struct v4l2_jpeg_reference *huffman_tables)¶

parse huffman tables segment

Parameters

void *buf

address of the Huffman table segment, after the DHT marker

size_t len

length of the Huffman table segment

struct v4l2_jpeg_reference *huffman_tables

returns four references into the buffer for the four possible Huffman table destinations, in the order DC0, DC1, AC0, AC1

Description

Returns 0 or negative error if parsing failed.

©The kernel development community. | Powered by Sphinx 5.3.0 & Alabaster 0.7.12 | Page source