2.10. 压缩格式

压缩图像格式

标识符

代码

详情

V4L2_PIX_FMT_JPEG

‘JPEG’

待定。另请参见 VIDIOC_G_JPEGCOMPVIDIOC_S_JPEGCOMP

V4L2_PIX_FMT_MPEG

‘MPEG’

MPEG 复用流。实际格式由扩展控制 V4L2_CID_MPEG_STREAM_TYPE 确定,参见 编解码器控制 ID

V4L2_PIX_FMT_H264

‘H264’

H264 访问单元。解码器期望每个缓冲区一个访问单元。编码器每个缓冲区生成一个访问单元。如果 ioctl VIDIOC_ENUM_FMT 报告 V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM,则解码器没有要求,因为它能够从原始字节流中解析所有信息。

V4L2_PIX_FMT_H264_NO_SC

‘AVC1’

不带起始码的 H264 视频基本流。

V4L2_PIX_FMT_H264_MVC

‘M264’

H264 MVC 视频基本流。

V4L2_PIX_FMT_H264_SLICE

‘S264’

H264 解析后的切片数据,包括切片头,无论是否带起始码,均从 H264 比特流中提取。此格式适用于通过 内存到内存无状态视频解码器接口 实现 H264 流水线的无状态视频解码器。此像素格式有两个修饰符,必须至少通过 V4L2_CID_STATELESS_H264_DECODE_MODEV4L2_CID_STATELESS_H264_START_CODE 控制设置一次。此外,与要解码的帧相关的元数据必须通过 V4L2_CID_STATELESS_H264_SPSV4L2_CID_STATELESS_H264_PPSV4L2_CID_STATELESS_H264_SCALING_MATRIXV4L2_CID_STATELESS_H264_SLICE_PARAMSV4L2_CID_STATELESS_H264_DECODE_PARAMS 控制传递。参见相关的编解码器控制 ID。使用此像素格式时,必须提供一个输出缓冲区和一个捕获缓冲区。输出缓冲区必须包含足够数量的宏块,以解码一个完整的对应帧到匹配的捕获缓冲区。

此格式的语法记录在 ITU-T 建议 H.264 规范 (2017 年 4 月版) 第 7.3.2.8 节“无分区 RBSP 语法切片层”及后续章节中。

V4L2_PIX_FMT_H263

‘H263’

H263 视频基本流。

V4L2_PIX_FMT_SPK

‘SPK0’

Sorenson Spark 是 H.263 的一种实现,用于 Flash 视频和 Adobe Flash 文件。

V4L2_PIX_FMT_MPEG1

‘MPG1’

MPEG1 图像。每个缓冲区以图像头开始,随后是根据需要引入的其他头,最后是图像数据。如果 ioctl VIDIOC_ENUM_FMT 报告 V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM,则解码器没有要求,因为它能够从原始字节流中解析所有信息。

V4L2_PIX_FMT_MPEG2

‘MPG2’

MPEG2 图像。每个缓冲区以图像头开始,随后是根据需要引入的其他头,最后是图像数据。如果 ioctl VIDIOC_ENUM_FMT 报告 V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM,则解码器没有要求,因为它能够从原始字节流中解析所有信息。

V4L2_PIX_FMT_MPEG2_SLICE

‘MG2S’

MPEG-2 解析后的切片数据,从 MPEG-2 比特流中提取。此格式适用于通过 内存到内存无状态视频解码器接口 实现 MPEG-2 流水线的无状态视频解码器。与要解码的帧相关的元数据必须通过 V4L2_CID_STATELESS_MPEG2_SEQUENCEV4L2_CID_STATELESS_MPEG2_PICTURE 控制传递。量化矩阵可选择通过 V4L2_CID_STATELESS_MPEG2_QUANTISATION 控制指定。参见相关的编解码器控制 ID。使用此像素格式时,必须提供一个输出缓冲区和一个捕获缓冲区。输出缓冲区必须包含足够数量的宏块,以解码一个完整的对应帧到匹配的捕获缓冲区。

V4L2_PIX_FMT_MPEG4

‘MPG4’

MPEG4 视频基本流。

V4L2_PIX_FMT_XVID

‘XVID’

Xvid 视频基本流。

V4L2_PIX_FMT_VC1_ANNEX_G

‘VC1G’

VC1,符合 SMPTE 421M 附录 G 的流。

V4L2_PIX_FMT_VC1_ANNEX_L

‘VC1L’

VC1,符合 SMPTE 421M 附录 L 的流。

V4L2_PIX_FMT_VP8

‘VP80’

VP8 压缩视频帧。编码器每个缓冲区生成一个压缩帧,解码器每个缓冲区需要一个压缩帧。

V4L2_PIX_FMT_VP8_FRAME

‘VP8F’

VP8 解析帧,包括从容器中提取的帧头。此格式适用于通过 内存到内存无状态视频解码器接口 实现 VP8 流水线的无状态视频解码器。与要解码的帧相关的元数据必须通过 V4L2_CID_STATELESS_VP8_FRAME 控制传递。参见相关的编解码器控制 ID。使用此像素格式时,必须提供一个输出缓冲区和一个捕获缓冲区。输出缓冲区必须包含足够数量的宏块,以解码一个完整的对应帧到匹配的捕获缓冲区。

V4L2_PIX_FMT_VP9

‘VP90’

VP9 压缩视频帧。编码器每个缓冲区生成一个压缩帧,解码器每个缓冲区需要一个压缩帧。

V4L2_PIX_FMT_VP9_FRAME

‘VP9F’

VP9 解析帧,包括从容器中提取的帧头。此格式适用于通过 内存到内存无状态视频解码器接口 实现 VP9 流水线的无状态视频解码器。与要解码的帧相关的元数据必须通过 V4L2_CID_STATELESS_VP9_FRAMEV4L2_CID_STATELESS_VP9_COMPRESSED_HDR 控制传递。参见相关的编解码器控制 ID。使用此像素格式时,必须提供一个输出缓冲区和一个捕获缓冲区。输出缓冲区必须包含足够数量的宏块,以解码一个完整的对应帧到匹配的捕获缓冲区。

V4L2_PIX_FMT_HEVC

‘HEVC’

HEVC/H.265 访问单元。解码器期望每个缓冲区一个访问单元。编码器每个缓冲区生成一个访问单元。如果 ioctl VIDIOC_ENUM_FMT 报告 V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM,则解码器没有要求,因为它能够从原始字节流中解析所有信息。

V4L2_PIX_FMT_HEVC_SLICE

‘S265’

HEVC 解析切片数据,从 HEVC 比特流中提取。此格式适用于通过 视频内存到内存接口请求 API 实现 HEVC 流水线的无状态视频解码器。此像素格式有两个修饰符,必须至少通过 V4L2_CID_MPEG_VIDEO_HEVC_DECODE_MODEV4L2_CID_MPEG_VIDEO_HEVC_START_CODE 控制设置一次。与要解码的帧相关的元数据必须通过以下控制传递:V4L2_CID_MPEG_VIDEO_HEVC_SPSV4L2_CID_MPEG_VIDEO_HEVC_PPSV4L2_CID_MPEG_VIDEO_HEVC_SLICE_PARAMS。参见相关的编解码器控制 ID。与此像素格式关联的缓冲区必须包含足够数量的宏块,以解码一个完整的对应帧。

V4L2_PIX_FMT_FWHT

‘FWHT’

使用基于快速沃尔什-阿达玛变换的编解码器的视频基本流。此编解码器由 vicodec(“虚拟编解码器”)驱动实现。有关更多详情,请参见 codec-fwht.h 头文件。ioctl VIDIOC_ENUM_FMT 报告 V4L2_FMT_FLAG_CONTINUOUS_BYTESTREAM,因为解码器可以从原始字节流中解析所有信息。

V4L2_PIX_FMT_FWHT_STATELESS

‘SFWH’

与 V4L2_PIX_FMT_FWHT 格式相同,但需要无状态编解码器实现。与要解码的帧相关的元数据必须通过 V4L2_CID_STATELESS_FWHT_PARAMS 控制传递。参见相关的编解码器控制 ID

V4L2_PIX_FMT_RV30

‘RV30’

RealVideo,或也拼写为 Real Video,是 RealNetworks 开发的一套专有视频压缩格式 — 具体格式随版本而变化。RealVideo 编解码器由四字符代码标识。RV30 对应 RealVideo 8,据推测主要基于 H.264 的早期草案。

V4L2_PIX_FMT_RV40

‘RV40’

RV40 代表 RealVideo 9 和 RealVideo 10。RealVideo 9,据推测基于 H.264。RealVideo 10,又称 RV9 EHQ,指 RV9 格式的改进编码器,与 RV9 播放器完全向后兼容 — 格式和解码器未变,仅编码器改变。因此,它使用相同的 FourCC。

V4L2_PIX_FMT_AV1_FRAME

‘AV1F’

AV1 解析帧,包括从容器中提取的帧头。此格式适用于通过 内存到内存无状态视频解码器接口 实现 AV1 流水线的无状态视频解码器。与要解码的帧相关的元数据必须通过 V4L2_CID_STATELESS_AV1_SEQUENCEV4L2_CID_STATELESS_AV1_FRAMEV4L2_CID_STATELESS_AV1_TILE_GROUP_ENTRY 控制传递。参见相关的编解码器控制 ID。使用此像素格式时,必须提供一个输出缓冲区和一个捕获缓冲区。输出缓冲区必须包含足够数量的宏块,以解码一个完整的对应帧到匹配的捕获缓冲区。