能否通过LinuxTV API获取204字节的ISDB-T/Tb传输流数据包?
能否通过LinuxTV API获取ISDB-T/Tb的204字节原始传输流数据包?
结论:部分支持ISDB-T/Tb的设备可以实现,但LinuxTV API没有统一的标准接口来控制是否保留尾部16字节,具体取决于硬件驱动的实现。
- 核心逻辑:LinuxTV API的数据包返回行为由调谐器硬件和对应内核驱动决定。绝大多数DVB驱动默认会剥离调制端的16字节Reed Solomon FEC部分,仅返回标准188字节TS包。但针对ISDB-T/Tb标准的设备,部分驱动会保留原始204字节包(其中前8字节含ISDB调制信息,后8字节为RS FEC)。
- 验证与配置方式:
- 直接测试读取:尝试调用
read()请求204字节数据,若设备支持,会返回完整的204字节包;若不支持,会返回188字节或错误。 - 查看驱动私有实现:部分厂商会在驱动中提供私有
ioctl命令或配置选项来控制是否剥离尾部字节,可查看对应设备的内核驱动源码或私有头文件(而非仅依赖标准的frontend.h/dmx.h)。
- 直接测试读取:尝试调用
- TSduck的适配:TSduck项目中已包含针对这类设备的检测逻辑,会尝试读取204字节包并验证结构,以此判断是否启用原始包读取模式。
- 局限性:如果硬件或驱动本身已经剥离了16字节信息,LinuxTV API无法恢复这部分内容,因为数据在前端处理阶段就已丢失。
内容的提问来源于stack exchange,提问作者Thierry Lelegard
相关产品推荐
相关产品推荐

