在机顶盒中demux部分相对来说是比较复杂的部分,对于机顶盒软件开发的新手来说通常在这里会遇到一些困难,今天特意研究了一下驱动层代码,有一点自己的理解,因此写下来记录一下学习过程。

机顶盒中数据是如何流向的呢?

清流数据大致流向: TS流-->tuner -->demux-->Buffer-->app

TS流中的数据是前段经过编码、复用、调制之后的数据,机顶盒通过tuner对TS流解调,demux解复用然后将数据送到buffer中,最后机顶盒通过读取buffer获得需要的数据。

那这个数据流是如何驱动的呢?

eg:播放节目:

软件在启动时会创建很多任务,其中一个就是过滤不同psi、SI表(pat/pmt等),它循环的向demux请求PSISI表(主要设置的参数包括PID、data、mask),demux的数据是从tuner过来的,因此请求之前需要tuner先锁定频点,解调出数据,之后就解复用,解析PMT表后可以获得音视频的pid,  然后将音视频、PCR的PID送到播放器中进行播放, 当然播放过程中也需要不停的根据PID请求音视频数据。

在demux中数据是如何过滤的呢?

demux中主要的资源有slot、  filter和 buffer

主要分为4个步骤:

1. 判断是否有空闲的filter,没有的话就直接退出了。每一个数据请求需要占用一个filter,如PAT/PMT等表的请求,通常是需要一直占用filter的。

2. 将app设置下来的PID设到SLOT里面,同时设置slot的数据输入端口,数据流的类型等, 然后根据这个slot创建一个虚拟通道,将slot、filter、buffer等联系在一起。

slot.in = DMX_INPUT_PORT;
slot.pid = ReqPid;
slot.type = DMX_CH_TYPE_SECTION;

3. 设置filter。首先设置filter的buffer,然后将app设置下来的data 、mask(data  mask相‘与’后来过滤数据)设置到filter中,filter将过滤后的数据放到buffer中。

4. 最后通过回调,将数据抛向app层。

机顶盒demux的流程相关推荐

  1. 数字有线机顶盒锁频流程

    本文所介绍的高频头以DVB-c tuner(数字有线电视)为例 一.硬件解析(对硬件原理不熟悉,只能说个大概) 高频头(tuner),也称之为调频器,主要有三个功能: 1)选择频道即选台,在硬件上应该 ...

  2. 机顶盒加密系统流程 ECM EMM CW SK

    随着数字视频广播(DVB)的发展,观众会面对越来越多的数字电视节目的选择.而广播业者由于投资成本的增加,则要求对用户收取一定的收视费用.条件接收系统(Conditional Access System ...

  3. Android多媒体软件开发入门(一)

    PART 1 OTT 是"Over The Top"的缩写,是指通过互联网向用户提供各种应用服务.目前,典型的OTT业务有互联网电视业务,苹果应用商店等.不少OTT服务商直接面向用 ...

  4. QIIME 2用户文档. 2插件工作流程概述(2019.7)

    前情提要 Nature Biotechnology:QIIME 2可重复.交互和扩展的微生物组数据分析平台 1简介和安装Introduction&Install QIIME 2插件工作流程概述 ...

  5. FFmpeg 直播黑屏问题分析解决

    背景 分析思路 解决思路 背景 FFmpeg是非常优秀的开源框架,在使用其进行二次开发及适配的过程中,难免会遇到各种各样的问题. 这次记录的是基于FFmpeg开发的播放器中,直播黑屏问题分析思路及解决 ...

  6. 机顶盒+linux服务,应用于低端Linux电视机顶盒内进程通信的系统及方法与流程

    本发明涉及低端电视机顶盒通信技术领域,具体涉及一种应用于低端linux电视机顶盒内进程通信的系统及方法. 背景技术: 现有的低端电视机顶盒因内存.flash的限制,一般采用linux操作系统,而lin ...

  7. 视频编解码(十二):播放器编解码流程source、demux、decoder、output

    一.播放器编解码流程source.demux.decoder.output 说白了播放器大致分为4大部分:source.demux.decoder.output. 1.source: 数据源,数据的来 ...

  8. 机顶盒软件组成及启动流程

    1.  软件结构组成 uboot        : 一种boot loader,负责机顶盒嵌入式linux的系统引导工作,引导系统启动,已经系统维护(镜像烧写,软件更新). env           ...

  9. ffmpeg对mp3媒体数据的demux和部分decode流程 【ffmpeg-3.3.7】

    目录 背景 mp3媒体资源的组成结构 函数调用流程图 ff_id3v2_read_dict id3v2_parse read_ttag mp3数据部分的格式解析 mp3_read_header 背景 ...

最新文章

  1. Google设想将《黑镜》情节变为现实,但要你的隐私作交换
  2. 数据库 1205 Error 'Lock wait timeout exceeded; try restarting transaction' on query
  3. Win64 驱动内核编程-30.枚举与删除线程回调
  4. hdu 2871 Memory Control(线段树)
  5. 找不到本地服务器,在本地站点中找不到全局编录服务器
  6. java this 三种用法
  7. IntelliJ IDEA tomcat配置
  8. javascript 判断字符串是否包含某字符串(indexOf)
  9. 达梦数据库如何连接MySQL_如何创建达梦数据库
  10. cocos2dx-lua 笔记 方向控制 v2
  11. Doris之数据模型的选择建议
  12. 百度ERNIE新突破!登顶中文医疗信息处理权威榜单CBLUE冠军
  13. JavaScript 作用域
  14. POJ_2258 The settlers of Catan (DFS)
  15. WINDOWS编译OpenJDK8的问题及解决办法
  16. 【转】WIFI-Direct(Wifi直连)、AirPlay、DLAN、Miracast功能介绍
  17. 如何绘制CIE1931xy色度图
  18. Alien Skin Exposure v6.x 最新通用完整版汉化补丁
  19. 产品初探:银行理财产品简介
  20. 如何按照DocNum+LineNum+流水号生成批次号

热门文章

  1. PPT设计思维(邵云蛟)读书笔记(一)——形状的功能及字体选择
  2. 最新远光软件笔试题面试题内容(2)
  3. MATLAB中ode23函数,龙格库塔函数
  4. Case ID 00755439 - HPE DL580 Gen9 机器问题
  5. MySQL的date_format()和str_to_date()
  6. 拿破仑的格言节选(含我的评论)
  7. 路由器端口映射帮助文档
  8. -------------混沌理论(Chaos theory)探讨--------------
  9. LeetCode 1346、检查整数及其两倍数是否存在
  10. 基于单片机的车辆防碰撞及自动刹车系统(STC89C52RC芯片+超声波传感器HC-SR04+液晶屏1602+继电器+蜂鸣器)