DVB开发之TS流的接收,解码与播放

1、大概流程api

一、cable tside

    信号(signel)--》tuner--》demux-》video,audio解码编码-》输出显示编码

二、本地ts视频

    file--》demux-》video,audio解码编码-》输出显示内存

    若是有解扰逻辑,则须要在demux后对video,audio包解扰处理。资源

三、对cable ts 的录制即同步

    信号(signel)--》tuner--》demux-》磁盘--》demux--》video,audio解码编码-》输出显示,即多了一个步骤,须要将解扰的流保存到磁盘中,若是须要播放磁盘中的文件,则将磁盘中的文件数据传给demux,也就是一个逆向过程。固然demux的处理牵涉到section,filter另作讨论。it

2、如下将分节讨论io

一、TUNER 调谐器容器

    通常有有线cable,卫星satellite,地面territory 3种type。tuner工做须要知道频率freq,符号率symb,QAM大小,tuner获取到的信号signel有信号强度,误码率,质量,等级等,主要就是锁住某个须要的频点去获取信息(模拟信号-》数字信号)。通常问题就是锁不住频点,拿不到signel。

    目前通常是STB 的tuner某一时刻只能处理一个频点信息,也许之后会启动同时处理多个频点或多个tuner的双xx模式或多xx模式。终端屏幕的愈来愈大,彻底是能够在一个屏上显示多个流的。

二、Demux

    终端主要是解复用,也就是解析本身想要的数据,并分类的处理。这块须要专业的MPEG/DVB相关协议知识,主要是PSI/SI。

通常牵涉到的概念有filter,channel,section,pid等,通常来讲一个Channel对应一个PID,对应多个Filter。首现要知道频点,须要tuner到某个频点上去锁频,将模拟数据转换为数字信号。而后数字信号会送到Demux解复用,这一坨数据不少,你须要经过必定的规则去获取你想要的数据。

       filter过滤用,就是tuner拿到的那一坨数据有不少,但只须要将你想要的数据过滤出来。怎么过滤?通常咱们要知道咱们想要的数据在哪一个PID,对应的段数据可能还须要再细分类,那你还须要将section前几个字节(byte)传下去,让demux只过滤出PID下同时匹配section前几个字节数据对应的包数据。好比。。。xx xx xx 01(PID)xx 02 03 04 05 06 07 xx 。。。当前频点拿到的数据不少,但我只须要PID为0x, section前3个字节为02.03.04的表的数据,首先filter会过滤出pid为0x01的全部的数据,而后在这些数据中过滤出前3个字节为02 03 04 的那些数据。再细化分类的话拿到这些数据你就要按SI/PSI协议或你本身私有的协议来了。

     channe通道l咱们能够认为是一个容器,或再简单点就认为它是一块内存。这块容器就是用来装咱们filter出来的数据的,因此通常channel是挂在filter上的。一个filter能够有多个channels,或一个channel有多个filter,具体要看平台实现须要。

     固然因为硬件特性,signel环境,参数状况,可能获取不到咱们想要的数据,不可能一直让filter,channel一直去那那个不存在或有问题的数据的,就须要有一个超时机制:在这个时间段没法拿到数据,通知上层,demux拿不到你想要的数据,你改干吗干吗去吧。同时demux释放filter,channel等相关资源。

 demux处理后,filter过滤的数据经过回调或其余方式给上层,上层拿到想要的数据再实现具体的应用。

三、video,audio 编解码

    通常来讲解码后就能够输出output了。

    目前经常使用的数据电视用到的制式有PAL,NTSC等

    视频输出通常有CVBS,ypbpr,YUV,hdmi(高清用的多)等

    视频输出通常用到视频层,静态层(still,IFRAME通常用到)

    输出节目长度宽度比国内通常有4/3,16/9

    经常使用支持的视频有:MPEG1,2,4;H264等

    经常使用支持的音频有:MPEG1,2,ADTS,AC3,DTS等

    通常对音视频会分配专门的固定的filter,channel。要播放某个节目,必须经过SI/PSI获取到,freq,vpid,apid,pcrpid等。

播放音视频就是让tuner锁对应freq的频点,demux去过滤出vpid,apid的数据包。其中经过pcrpid能够获取一个时间参考系。        

    vpid拿到视频包,其中有I,P,B帧;

    apid拿到音频包,其中有I,P,B帧。音视频同步就是经过I,P,B帧的PTS去同步pcrpid获取的时间参考系。

相关文章
相关标签/搜索