2.10. 压缩格式

压缩图像格式

标识符

代码

详细信息

V4L2_PIX_FMT_JPEG

‘JPEG’

待定。另请参阅 VIDIOC_G_JPEGCOMP, VIDIOC_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_SPS, V4L2_CID_STATELESS_H264_PPS, V4L2_CID_STATELESS_H264_SCALING_MATRIX, V4L2_CID_STATELESS_H264_SLICE_PARAMSV4L2_CID_STATELESS_H264_DECODE_PARAMS 控制进行传递。请参阅 相关的编解码器控制 ID。必须为此像素格式提供正好一个输出缓冲区和一个捕获缓冲区。输出缓冲区必须包含适当数量的宏块,以将完整的相应帧解码为匹配的捕获缓冲区。

此格式的语法记录在 ITU-T Rec. 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_SPS, V4L2_CID_MPEG_VIDEO_HEVC_PPS, 和 V4L2_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。必须为此像素格式提供一个输出缓冲区和一个捕获缓冲区。输出缓冲区必须包含适当数量的宏块,以将完整对应的帧解码到匹配的捕获缓冲区。