3.1. 解复用器数据类型

enum dmx_output

解复用器的输出。

常量

DMX_OUT_DECODER

直接流向解码器。

DMX_OUT_TAP

输出到内存缓冲区(通过读取命令检索)。将流输出传递到调用 ioctl 的解复用器设备上。

DMX_OUT_TS_TAP

输出多路复用到新的 TS(通过从逻辑 DVR 设备读取来检索)。将输出路由到逻辑 DVR 设备 /dev/dvb/adapter?/dvr?,该设备提供从指定了 **DMX_OUT_TS_TAP** 的所有过滤器多路复用的 TS。

DMX_OUT_TSDEMUX_TAP

与 **DMX_OUT_TS_TAP** 类似,但从 DMX 设备检索。

enum dmx_input

解复用器的输入。

常量

DMX_IN_FRONTEND

来自前端设备的输入。

DMX_IN_DVR

来自逻辑 DVR 设备的输入。

enum dmx_ts_pes

PES 过滤器的类型。

常量

DMX_PES_AUDIO0

第一个音频 PID。也称为 **DMX_PES_AUDIO**。

DMX_PES_VIDEO0

第一个视频 PID。也称为 **DMX_PES_VIDEO**。

DMX_PES_TELETEXT0

第一个图文电视 PID。也称为 **DMX_PES_TELETEXT**。

DMX_PES_SUBTITLE0

第一个字幕 PID。也称为 **DMX_PES_SUBTITLE**。

DMX_PES_PCR0

第一个节目时钟参考 PID。也称为 **DMX_PES_PCR**。

DMX_PES_AUDIO1

第二个音频 PID。

DMX_PES_VIDEO1

第二个视频 PID。

DMX_PES_TELETEXT1

第二个图文电视 PID。

DMX_PES_SUBTITLE1

第二个字幕 PID。

DMX_PES_PCR1

第二个节目时钟参考 PID。

DMX_PES_AUDIO2

第三个音频 PID。

DMX_PES_VIDEO2

第三个视频 PID。

DMX_PES_TELETEXT2

第三个图文电视 PID。

DMX_PES_SUBTITLE2

第三个字幕 PID。

DMX_PES_PCR2

第三个节目时钟参考 PID。

DMX_PES_AUDIO3

第四个音频 PID。

DMX_PES_VIDEO3

第四个视频 PID。

DMX_PES_TELETEXT3

第四个图文电视 PID。

DMX_PES_SUBTITLE3

第四个字幕 PID。

DMX_PES_PCR3

第四个节目时钟参考 PID。

DMX_PES_OTHER

任何其他 PID。

struct dmx_filter

指定一个节头过滤器。

定义:

struct dmx_filter {
    __u8 filter[DMX_FILTER_SIZE];
    __u8 mask[DMX_FILTER_SIZE];
    __u8 mode[DMX_FILTER_SIZE];
};

成员

filter

在节头匹配的位数组。

mask

在过滤器位数组中有效的位。

mode

匹配模式:如果位为零,则如果相等(正匹配)则匹配;如果位为一,则如果该位被取反,则匹配。

注意

此结构中的所有数组的大小均为 DMX_FILTER_SIZE(16 字节)。

struct dmx_sct_filter_params

指定一个节过滤器。

定义:

struct dmx_sct_filter_params {
    __u16 pid;
    struct dmx_filter filter;
    __u32 timeout;
    __u32 flags;
#define DMX_CHECK_CRC       1;
#define DMX_ONESHOT         2;
#define DMX_IMMEDIATE_START 4;
};

成员

pid

要过滤的 PID。

filter

节头过滤器,由 struct dmx_filter 定义。

timeout

过滤的最大时间,以毫秒为单位。

flags

节过滤器的额外标志。

描述

携带 MPEG-TS 节过滤器的配置。

**flags** 可以是

  • DMX_CHECK_CRC - 仅传递 CRC 校验成功的节;

  • DMX_ONESHOT - 在传递一个节后禁用节过滤器;

  • DMX_IMMEDIATE_START - 立即启动过滤器,而无需 DMX_START

struct dmx_pes_filter_params

指定分组基本流 (PES) 过滤器参数。

定义:

struct dmx_pes_filter_params {
    __u16 pid;
    enum dmx_input  input;
    enum dmx_output output;
    enum dmx_ts_pes pes_type;
    __u32 flags;
};

成员

pid

要过滤的 PID。

input

解复用器输入,由 enum dmx_input 指定。

output

解复用器输出,由 enum dmx_output 指定。

pes_type

pes 过滤器的类型,由 enum dmx_pes_type 指定。

flags

解复用器 PES 标志。

struct dmx_stc

存储系统时间计数器 (STC) 信息。

定义:

struct dmx_stc {
    unsigned int num;
    unsigned int base;
    __u64 stc;
};

成员

num

输入数据:STC 的编号,从 0 到 N。

base

输出:STC 的除数,以获得 90 kHz 时钟。

stc

输出:以 **base** * 90 kHz 单位表示的 stc。

enum dmx_buffer_flags

DMX 内存映射缓冲区标志

常量

DMX_BUFFER_FLAG_HAD_CRC32_DISCARD

指示内核由于错误的 CRC32 校验和而丢弃了一个或多个帧。

DMX_BUFFER_FLAG_TEI

指示内核在过滤的 pid 上检测到传输错误指示符 (TEI)。

DMX_BUFFER_PKT_COUNTER_MISMATCH

指示内核在过滤的 pid 上检测到数据包计数器不匹配。

DMX_BUFFER_FLAG_DISCONTINUITY_DETECTED

指示内核检测到一个或多个帧不连续。

DMX_BUFFER_FLAG_DISCONTINUITY_INDICATOR

接收到至少一个带有帧不连续指示符的数据包。

struct dmx_buffer

dmx 缓冲区信息

定义:

struct dmx_buffer {
    __u32 index;
    __u32 bytesused;
    __u32 offset;
    __u32 length;
    __u32 flags;
    __u32 count;
};

成员

index

缓冲区的 ID 编号

bytesused

缓冲区中数据(有效负载)占用的字节数;

offset

对于 memory == DMX_MEMORY_MMAP 的缓冲区;此平面的设备内存起始位置的偏移量,(或应作为偏移量传递给 mmap() 的“cookie”)

length

缓冲区的字节大小

flags

缓冲区标志的位数组,由 enum dmx_buffer_flags 定义。仅在 DMX_DQBUF 时填充。

count

已填充缓冲区的单调计数器。有助于识别数据流丢失。仅在 DMX_DQBUF 时填充。

描述

包含应用程序和驱动程序使用一种流式 I/O 方法交换的数据。

请注意,对于 DMX_QBUF,仅应填充 **index**。在 DMX_DQBUF 调用时,所有字段将由内核填充。

struct dmx_requestbuffers

请求 dmx 缓冲区信息

定义:

struct dmx_requestbuffers {
    __u32 count;
    __u32 size;
};

成员

count

请求的缓冲区数量,

size

请求的缓冲区的大小(以字节为单位)

描述

包含用于请求 dmx 缓冲区的数据。所有保留字段必须设置为零。

struct dmx_exportbuffer

将 dmx 缓冲区导出为 DMABUF 文件描述符

定义:

struct dmx_exportbuffer {
    __u32 index;
    __u32 flags;
    __s32 fd;
};

成员

index

缓冲区的 ID 编号

flags

新创建文件的标志,当前仅支持 O_CLOEXEC,有关更多详细信息,请参阅 open 系统调用的手册

fd

与 DMABUF 关联的文件描述符(由驱动程序设置)

描述

包含用于将 dmx 缓冲区导出为 DMABUF 文件描述符的数据。该缓冲区由 DMX_QUERYBUF 返回的“cookie”标识(与用于将缓冲区 mmap() 到用户空间的 cookie 相同)。所有保留字段必须设置为零。字段 reserved0 预计会成为一个结构“type”,允许结构的替代布局。因此,此字段不应用于任何其他扩展。