linux dvb设备信息,Linux DVB api 笔记

Linux DVB interface

Demux

用途:硬件解复用

设备路径: /dev/dvb/adapter0/demux0

数据类型:

dmx_output_t

typedef enum

{

DMX_OUT_DECODER,

DMX_OUT_TAP,

DMX_OUT_TS_TAP

} dmx_output_t;

DMX_OUT_TAP:将流输出到调用ioctl的demux设备上

DMX_OUT_TS_TAP:将流输出到逻辑 DVR设备上 /dev/dvb/adapter0/dvr0 。输出一个ts流到该设备。并且复用所有设置了该标志的流。

函数调用

open: 在 /dev/dvb/adapter0/demux0 上使用,将会分配以后一个新的filter并返回一个handle用来持续的控制该filter。

该函数的每一次返回的文件描述附,是一个单独filter的引用。

/dev/dvb/adapter0/dvr0 是一个逻辑设备用来检索传输流。从该设备读取,将得到一个传输流,该流包含了所有设置了DMX_OUT_TS_TAP标志的filter的PES包。

read()

读取filtered中的数据。可能是secion或者PES数据。数据被存储在驱动内部的循环缓冲区中。

当返回的是secion数据,驱动则总是返回完整的单独section(即使有足够的空间放入其他数据)。如果数据超过缓冲区大小则在下次调用时继续返回。

内部缓冲默认为2*4096bytes(secion的两倍大小)

为了能够读取,必须通过ioctl设置要过滤的secion或者PES。并指定DMX_START 或者ioctl时指定DMX_IMMEDIATE_START 标记。

write()

仅对/dev/dvb/adapter0/dvr0管用,还是在内部于物理demux设备关联

ioctl()

DMX_START 开始filter

DMX_STOP 对应的停止

DMX_SET_FILTER

设置filter

struct dmx_sct_filter_params

{

uint16_t pid;

dmx_filter_t filter;

uint32_t timeout;

uint32_t flags;

#define DMX_CHECK_CRC 1

#define DMX_ONESHOT 2

#define DMX_IMMEDIATE_START 4

};

timeout:设置读取secion超时,0为永不超时

flags:指定了是否CRC检查,仅读取一次,DMX_SET_FILTER后立即开始filter

DMX_SET_PES_FILTER

用来设置一个PES filter。传输流的目标必须设定,一个PES可以直接送入video decoder。如果该filter之前设置过,则会取消当前的filter。并清空缓冲区。

DMX_SET_BUFFER_SIZE

设置缓冲区大小,默认2*4096bytes

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值