Logo

Linux 内核

6.13.0-rc6

快速搜索

目录

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