linux平台的数字电视驱动被称作linux DVB 驱动
其框架称为DVB core
在此做简单介绍
Demux 简介
编码器为每一路的基本业务的传送包赋予一个唯一的包标志符PID ,
同时将这些PID的赋值信息写入到节目映射表(PMT)的控制信息表中。每一路节目一个PMT表,记录的是该路节目的视频流的PID,音频流的PID。
各个PMT的PID统一记录在PAT表中。PAT的PID 为0。
TS流解析流程
TS流中查找PID为0的TS包,即PAT表
根据表获取不同频道的PMT表所使用的PID
根据这些PID获取不同频道的PMT
根据PMT表获取频道中的音视频PID
根据音视频PID 获取音视频TS包
获取到TS包之后,TS包->PES包->ES包->解码器。
linux DVB 驱动设备文件模型
DTV 播放,使用demux0
PVR Record , 使用demux1 DVR1
PVR Play, 使用demux0, DVR0
demux节点
/dev/dvb/adapter0/demux0
/dev/dvb/adapter0/demux1
1, open: 可以多次打开。每次打开将会分配一个新的 filter handle。
2, read : 读取sections,即PAT,PMT表
3,ioctl: DMX_SET_PES_FILTER
设置pes 过滤,即只读取某pid的TS码流。