1 QTV Architecture

QTV的高通的音视频解码方案,来自packetvideo的PV:Player。Architecture如下:

(1)QCT Mediaplayer Application:为OEM提供的播放器,使用Brew API;通常若OEM移植上自己的UI后,不会使用原生的播放器。而是调用IMedia API实现自己的播放器。
(2)IMedia API:Brew API的一部分,如IMEDIA_RegisterNotify,IMEDIA_SetMediaParam,IMEDIA_GetMediaParam,IMEDIA_Play,IMEDIA_Stop等等。相关接口的声明在文件AEEMedia.h中。

其中Create Media根据文件格式和码流格式,创建Media示例;AEEMediaData是Data Source/Sink(输入输出)的封装。

(3)QTV Player(MPEG4 Video Engine):是最核心的部分,包括:Streaming协议--基于TCP的RTSP/SDP,基于UDP的RTP/RTCP;MPEG4 playback;码流解析;音视频同步。

(4)QTV Audio/Video Codec API:Audio API--CMX;Video API—QTV Decoder API。CMX API要通过snd ,vocoder,qdsp,驱动dsp来获取到解码后的数据。

(5)QTV Audio/Video Codec:ARM负责huffman、shape、texture;DSP负责运动补偿,IDCT,后处理。后处理实质使用的是MDP。

2 QTV Tasks

QTV包含7个Sub Task,他们按任务优先级从高到底排列是:Player,Audio Player,Streamer,Renderer,Decoder,Timed Text,Parser,其中Streamer仅在播放网络流时会被创建,其他在创建qtv实例时总是被创建。高通推荐不要去改变这些任务的相对优先级,并且把他作为一个整体放在最低优先级(仅高于sleep task)。具体原因可去参考《LINUX内核设计与实现》中I/O消耗性任务和CPU消耗性任务的定义和优先级安排。

下面说明一下相对比较复杂,与data service相关的PV:Streamer。Streamer task运行时,其调用流程如下:

Scheduler负责维护一个结构体队列,结构体中包含函数指针。队列的初始状态和成员,由brew注册。当队列成员删除或增加时,调用的函数会相应改变。比如退出VOD播放时,Scheduler会删除当前运行的成员,执行队列中下一个成员,进行断开网络close session等动作。

在函数NetInput::recvFrom中,对调用一个指向data service的函数指针,该函数指针指向的函数去获取输入的TCP或者UDP包。在双模手机上,获取不同网络的数据,该指针就会指向不同的data service函数。

3 Real-Time Protocol

(1)Protocol简介:RTP/RTCP/RTSP/SIP/SDP

(2)Qualcomm 网络数据传输

4 QTV输出视频帧的显示

QTV由Brew调用,QTV的视频输出也由Brew进行控制。相应的Brew API为IDisplay,在文件AEEDisp.h中。

5 QTV的heap管理

QTV的heap分配使用OEM Heap Manager。

Qualcomm QTV Player相关推荐

  1. QuickTime Player 支持的媒体格式

    QuickTime Player 支持以下媒体文件格式和编解码器. 以下是 Mac OS X v10.6.x 或更高版本中 QuickTime Player 可打开的媒体格式和编解码器: 媒体类型 文 ...

  2. 用Windows Media Player截图的方法

    视频截图方法: 关闭"视频加速功能即可". 以Windows Media Player 9.0为例,选择菜单"工具→选项",找到"性能"选项 ...

  3. 使用Cumulus和Flash Player搭建视频会议示例

    该篇文档取材于Cumulus官网上的视频会议代码,详见 https://github.com/OpenRTMFP/Cumulus/wiki/Server-Application,-Samples 我根 ...

  4. Flash Builder 找不到所需的Adobe Flash Player调试器版本的解决办法

    Flash Builder在Debug时出现的问题:Flash Builder 找不到所需的Adobe Flash Player调试器版本 解决方法: 1. 进入Flash Builder的安装目录 ...

  5. 【Qt】Qt再学习(八):Media Player(Qt实现多媒体播放器)

    1.简介 Media Player演示了一个简单的多媒体播放器,该播放器可以使用各种编解码器播放音频和/或视频文件. 涉及到的类有 QMediaPlayer.QMediaPlaylist.QVideo ...

  6. Flash Player漏洞利用Exploiting Flash Reliably

    以下消息来自幻影论坛[Ph4nt0m]邮件组   前两天推荐过Mark Dowd的Paper "Exploiting Flash Reliably" [url]http://hi. ...

  7. 在 Ubuntu 14.04 Chrome中安装Flash Player(转)

    在 Ubuntu 14.04 中安装 Pepper Flash Player For Chromium 一个 Pepper Flash Player For Chromium 的安装器已经被 Ubun ...

  8. Ubuntu 64位系统安装flash player

    ubuntu 64下 flash player 安装方法  1 下载 http://labs.adobe.com/downloads/flashplayer10_square.html wget ht ...

  9. Scene Player初始版本完成

    转载请注明出处为KlayGE游戏引擎,本文地址为http://www.klayge.org/2012/03/21/scene-player%e5%88%9d%e5%a7%8b%e7%89%88%e6% ...

最新文章

  1. Unity中创建本地多人游戏完整案例视频教程 Learn To Create A Local Multiplayer Game In Unity
  2. STM32 串口ISP下载
  3. python3除法运算_Python2和Python3中除法操作/的不同
  4. 论文笔记_S2D.55_2019_SLAM综述_Huang B. A Survey of Simultaneous Localization and Mapping
  5. 在Windows下运行UNIX程序
  6. java 打印日志乱码
  7. php如何获取当前几号,PHP如何获取当前时间
  8. 图像旋转(任意角度)matlab
  9. LinkedIn开源数据发现和管理工具 WhereHows
  10. 智慧城市大数据运营中心,发挥大数据价值
  11. 考研强化阶段选书怎么选
  12. dorado7时间格式调整
  13. java 几何平均数_统计学——平均数
  14. 项目经理的工具箱---走出软件作坊:三五个人十来条枪 如何成为开发正规军(三)...
  15. UVALive 4850 Installations 贪心
  16. 首届“中新人工智能高峰论坛”即将召开,周志华、李德毅......与你一起对话未来!...
  17. vector<PII>v
  18. uniapp登录授权获取微信手机号组件封装
  19. 机器学习之聚类常用方法
  20. 在使用开源IOT平台Thingsboard时,遇到的编译问题一initial exceeded maximum budget

热门文章

  1. DNSPod十问花生壳陈宇晔:远程办公领域的下一个“独角兽”?
  2. 2018年区块链十大发展势头
  3. Python调用腾讯API发送短信验证码
  4. 设计模式之责任链模式
  5. 机器学习(三)防止语句歧义、平凡解、支持向量机
  6. 强化学习之Q-learning算法
  7. 如何掌握程序语言(王垠)
  8. Ubuntu深度学习环境部署——显卡驱动、CUDA、cuDNN、pytorch
  9. 无畏先锋服务器没响应,LOL:为啥不删除“郊区”?无畏先锋人气惨淡,21分钟匹配不到人...
  10. myeclipse building workspace如何禁止及提高myeclipse速度