7.28. ioctl VIDIOC_G_ENC_INDEX¶
7.28.1. 名称¶
VIDIOC_G_ENC_INDEX - 获取有关压缩视频流的元数据
7.28.2. 概要¶
-
VIDIOC_G_ENC_INDEX¶
int ioctl(int fd, VIDIOC_G_ENC_INDEX, struct v4l2_enc_idx *argp)
7.28.3. 参数¶
fd
由
open()
返回的文件描述符。argp
指向 struct
v4l2_enc_idx
的指针。
7.28.4. 描述¶
VIDIOC_G_ENC_INDEX ioctl 提供有关压缩视频流的元数据,该视频流与当前从驱动程序读取的同一或另一个应用程序相同,这对于在不解码的情况下随机访问流非常有用。
要读取数据,应用程序必须使用指向 struct v4l2_enc_idx
的指针调用 VIDIOC_G_ENC_INDEX。成功后,驱动程序将填充 entry
数组,将写入的元素数量存储在 entries
字段中,并初始化 entries_cap
字段。
entry
数组的每个元素都包含有关一个图片的元数据。VIDIOC_G_ENC_INDEX 调用最多从驱动程序缓冲区读取 V4L2_ENC_IDX_ENTRIES
个条目,该缓冲区最多可以容纳 entries_cap
个条目。此数字可以小于或大于 V4L2_ENC_IDX_ENTRIES
,但不能为零。当应用程序未能及时读取元数据时,最旧的条目将丢失。当缓冲区为空或未进行捕获/编码时,entries
将为零。
目前,此 ioctl 仅为 MPEG-2 程序流和视频基本流定义。
-
type v4l2_enc_idx¶
__u32 |
|
驱动程序存储在 |
__u32 |
|
驱动程序可以缓冲的条目数。必须大于零。 |
__u32 |
|
保留用于将来的扩展。驱动程序必须将数组设置为零。 |
struct |
|
有关压缩视频流的元数据。数组的每个元素对应于一个图片,按其 |
-
type v4l2_enc_idx_entry¶
__u64 |
|
从压缩视频流的开头到此图片开头的偏移量(以字节为单位),即 ISO 13818-1 中定义的PES 数据包头 或 ISO 13818-2 中定义的图片头。当编码器停止时,驱动程序会将偏移量重置为零。 |
__u64 |
|
此图片的 33 位显示时间戳,如 ISO 13818-1 中定义。 |
__u32 |
|
此图片的长度(以字节为单位)。 |
__u32 |
|
包含此图片的编码类型的标志,请参阅 索引条目标志。 |
__u32 |
|
保留用于将来的扩展。驱动程序必须将数组设置为零。 |
|
0x00 |
这是一个帧内编码图片。 |
|
0x01 |
这是一个预测编码图片。 |
|
0x02 |
这是一个双向预测编码图片。 |
|
0x0F |
使用此掩码AND标志字段以获取图片编码类型。 |
7.28.5. 返回值¶
成功时返回 0,失败时返回 -1,并适当地设置 errno
变量。通用错误代码在 通用错误代码 一章中进行了描述。