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
指向结构体
v4l2_enc_idx
的指针。
7.28.4. 描述¶
VIDIOC_G_ENC_INDEX ioctl 提供有关压缩视频流的元数据,该视频流与当前从驱动程序读取的相同或另一个应用程序,这对于随机访问流而无需解码它非常有用。
要读取数据,应用程序必须使用指向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 |
|
ISO 13818-1中定义的此图片的33位演示时间戳。 |
__u32 |
|
此图片的字节长度。 |
__u32 |
|
包含此图片的编码类型的标志,请参阅索引条目标志。 |
__u32 |
|
保留供将来扩展。 驱动程序必须将数组设置为零。 |
|
0x00 |
这是一个帧内编码图片。 |
|
0x01 |
这是一个预测编码图片。 |
|
0x02 |
这是一个双向预测编码图片。 |
|
0x0F |
用此掩码AND标志字段以获取图片编码类型。 |
7.28.5. 返回值¶
成功时返回0,发生错误时返回-1,并适当地设置errno
变量。 泛型错误代码在通用错误代码章节中描述。