Logo

Linux 内核

6.16.0-rc4

快速搜索

目录

  • 开发流程
  • 提交补丁
  • 行为准则
  • 维护者手册
  • 所有开发流程文档
  • 核心 API
  • 驱动 API
    • 驱动作者通用信息
    • 有用的支持库
    • 总线级文档
    • 子系统特定 API
      • Linux 802.11 驱动开发者指南
      • ACPI 支持
      • 内核驱动 lp855x
      • 通用时钟框架
      • 机密计算
      • 控制台驱动
      • 加密驱动
      • DMAEngine 文档
      • Linux 内核 dpll 子系统
      • 错误检测和纠正 (EDAC) 设备
      • Extcon 设备子系统
      • Linux 固件 API
      • FPGA 子系统
      • 帧缓冲区库
      • 管理帧缓冲区孔径的所有权
      • 通用计数器接口
      • 通用输入/输出 (GPIO)
      • 高速同步串行接口 (HSI)
      • Linux 硬件时间戳引擎 (HTE)
      • I2C 和 SMBus 子系统
      • 工业 I/O
      • InfiniBand 和远程 DMA (RDMA) 接口
      • 输入子系统
      • 通用系统互连子系统
      • 卫星 MC 的 IPMB 驱动
      • Linux IPMI 驱动
      • libATA 开发者指南
      • 通用邮箱框架
      • RAID
      • 媒体子系统内核内部 API
      • Intel(R) 管理引擎接口 (Intel(R) MEI)
      • 内存控制器驱动
      • 基于消息的设备
      • 杂项设备
      • 并行端口设备
      • 16x50 UART 驱动
      • 脉冲宽度调制 (PWM)
      • MMC/SD/SDIO 卡支持
      • 内存技术设备 (MTD)
      • MTD NAND 驱动编程接口
      • 近场通信
      • NTB 驱动
      • 非易失性内存设备 (NVDIMM)
      • NVMEM 子系统
      • PARPORT 接口文档
      • 通用 PHY 框架
      • PINCTRL (引脚控制) 子系统
      • PLDM 固件闪存更新库
      • pldmfw 库概述
      • PPS - 每秒脉冲
      • Linux 的 PTP 硬件时钟基础设施
      • 脉冲宽度调制 (PWM) 接口
      • 电源排序 API
      • 电压和电流调节器 API
      • 复位控制器 API
      • rfkill - RF 开关支持
      • 编写 s390 通道设备驱动
      • SCSI 接口指南
      • 串行设备支持
      • SM501 驱动
      • SoundWire 文档
      • 串行外设接口 (SPI)
      • 表面系统聚合模块 (SSAM)
      • Linux Switchtec 支持
      • 同步文件 API 指南
      • target 和 iSCSI 接口指南
      • TEE (可信执行环境) 驱动 API
      • 散热
      • TTY
      • WBRF - Wifi 频段 RFI 缓解
      • WMI 驱动 API
      • Xilinx FPGA
      • 为 Zorro 设备编写设备驱动
  • 子系统
  • 锁定
  • 许可规则
  • 编写文档
  • 开发工具
  • 测试指南
  • Hacking 指南
  • 跟踪
  • 故障注入
  • 实时补丁
  • Rust
  • 管理
  • 构建系统
  • 报告问题
  • 用户空间工具
  • 用户空间 API
  • 固件
  • 固件和设备树
  • CPU 架构
  • 未分类文档
  • 翻译

本页

  • 显示源码

2.29. V4L2 JPEG 头部相关函数和数据结构¶

struct v4l2_jpeg_reference¶

对 JPEG 缓冲区的引用

定义:

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

成员

start

指向引用段或表的起始位置的指针

length

引用段或表的大小

描述

引用标记段时,start 指向紧随标记代码之后的位置,length 是段参数的大小,不包括标记代码。

struct v4l2_jpeg_frame_component_spec¶

帧组件规范

定义:

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

成员

component_identifier

C[i]

horizontal_sampling_factor

H[i]

vertical_sampling_factor

V[i]

quantization_table_selector

量化表目标选择器 Tq[i]

struct v4l2_jpeg_frame_header¶

JPEG 帧头部

定义:

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;
};

成员

height

Y

width

X

precision

P

num_components

Nf

component

组件规范,参见 v4l2_jpeg_frame_component_spec

subsampling

从组件规范解码的子采样

struct v4l2_jpeg_scan_component_spec¶

扫描组件规范

定义:

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

成员

component_selector

Cs[j]

dc_entropy_coding_table_selector

Td[j]

ac_entropy_coding_table_selector

Ta[j]

struct v4l2_jpeg_scan_header¶

JPEG 扫描头部

定义:

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

成员

num_components

Ns

component

组件规范,参见 v4l2_jpeg_scan_component_spec

enum v4l2_jpeg_app14_tf¶

APP14 转换标志 根据 Rec. ITU-T T.872 (06/2012) 6.5.3,APP14 段用于颜色编码,它包含一个转换标志,其值可能为 0、1 和 2,解释如下

常量

V4L2_JPEG_APP14_TF_CMYK_RGB

CMYK 用于使用四个组件编码的图像,RGB 用于使用三个组件编码的图像

V4L2_JPEG_APP14_TF_YCBCR

使用 YCbCr 编码的包含三个组件的图像

V4L2_JPEG_APP14_TF_YCCK

使用 YCCK 编码的包含四个组件的图像

V4L2_JPEG_APP14_TF_UNKNOWN

指示 app14 不存在

struct v4l2_jpeg_header¶

已解析的 JPEG 头部

定义:

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;
};

成员

sof

指向帧头部和大小的指针

sos

指向扫描头部和大小的指针

num_dht

dht 中的条目数

dht

指向霍夫曼表和大小的指针

num_dqt

dqt 中的条目数

dqt

指向量化表和大小的指针

frame

已解析的帧头部

scan

指向已解析的扫描头部的指针,可选

quantization_tables

对四个量化表的引用,可选

huffman_tables

对 DC0、DC1、AC0、AC1 顺序的四个霍夫曼表的引用,可选

restart_interval

每个重启间隔的 MCU 数量,Ri

ecs_offset

到熵编码段的字节缓冲区偏移量

app14_tf

来自 app14 数据的转换标志

描述

当此结构传递给 v4l2_jpeg_parse_header 时,可选的 scan、quantization_tables 和 huffman_tables 指针必须初始化为 NULL 或指向有效的内存。

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

定位标记段并选择性地解析头部

参数

void *buf

JPEG 缓冲区的地址,应以 SOI 标记开头

size_t len

JPEG 缓冲区的长度

struct v4l2_jpeg_header *out

返回标记段位置并选择性地解析头部

描述

out->scan_header 指针必须初始化为 NULL 或指向有效的 v4l2_jpeg_scan_header 结构。 out->huffman_tables 和 out->quantization_tables 指针必须初始化为 NULL 或指向每个包含 4 个 v4l2_jpeg_reference 结构的有效数组。

如果解析失败,则返回 0 或负错误。

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

解析帧头部

参数

void *buf

帧头部的地址,在 SOF0 标记之后

size_t len

帧头部的长度

struct v4l2_jpeg_frame_header *frame_header

返回已解析的帧头部

描述

如果解析失败,则返回 0 或负错误。

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

解析扫描头部

参数

void *buf

扫描头部的地址,在 SOS 标记之后

size_t len

扫描头部的长度

struct v4l2_jpeg_scan_header *scan_header

返回已解析的扫描头部

描述

如果解析失败,则返回 0 或负错误。

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

解析量化表段

参数

void *buf

量化表段的地址,在 DQT 标记之后

size_t len

量化表段的长度

u8 precision

每个组件的采样精度 (P),以位为单位

struct v4l2_jpeg_reference *q_tables

返回缓冲区中对四个可能的量化表目标的四个引用

描述

如果解析失败,则返回 0 或负错误。

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

解析霍夫曼表段

参数

void *buf

霍夫曼表段的地址,在 DHT 标记之后

size_t len

霍夫曼表段的长度

struct v4l2_jpeg_reference *huffman_tables

返回缓冲区中对四个可能的霍夫曼表目标的四个引用,顺序为 DC0、DC1、AC0、AC1

描述

如果解析失败,则返回 0 或负错误。

©内核开发社区。 | 由 Sphinx 5.3.0 & Alabaster 0.7.16 驱动 | 页面源码