linux DVB 驱动分析

本文简要介绍了Linux平台的数字电视驱动——DVB驱动,重点讲解了DVR节点、PVR硬件模块的工作原理。DVB核心通过demux将TS流输出到PVR,利用DMA技术进行数据传输,实现录制与播放功能。同时,PVR模块通过中断机制协调读写操作,确保ES流的解码与显示同步。
摘要由CSDN通过智能技术生成

linux平台的数字电视驱动被称作linux DVB 驱动

其框架称为DVB core

在此做简单介绍



Demux 简介



Demux  是一个硬件模块,的主要作用是处理从frontend过来的信号,从中分离出各种表,然后根据表中的信息分离出每个频道的音频信号和视频信号,最后将音频和视频信号送到decoder解码。





数字电视节目音频视频的ES流需要打包成PES(packetized elementary stream )包,一个PES包必须切为N个TS包来传送。每个TS  长188字节。

编码器为每一路的基本业务的传送包赋予一个唯一的包标志符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码流。
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值