Qualcomm QTV Player
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相关推荐
- QuickTime Player 支持的媒体格式
QuickTime Player 支持以下媒体文件格式和编解码器. 以下是 Mac OS X v10.6.x 或更高版本中 QuickTime Player 可打开的媒体格式和编解码器: 媒体类型 文 ...
- 用Windows Media Player截图的方法
视频截图方法: 关闭"视频加速功能即可". 以Windows Media Player 9.0为例,选择菜单"工具→选项",找到"性能"选项 ...
- 使用Cumulus和Flash Player搭建视频会议示例
该篇文档取材于Cumulus官网上的视频会议代码,详见 https://github.com/OpenRTMFP/Cumulus/wiki/Server-Application,-Samples 我根 ...
- Flash Builder 找不到所需的Adobe Flash Player调试器版本的解决办法
Flash Builder在Debug时出现的问题:Flash Builder 找不到所需的Adobe Flash Player调试器版本 解决方法: 1. 进入Flash Builder的安装目录 ...
- 【Qt】Qt再学习(八):Media Player(Qt实现多媒体播放器)
1.简介 Media Player演示了一个简单的多媒体播放器,该播放器可以使用各种编解码器播放音频和/或视频文件. 涉及到的类有 QMediaPlayer.QMediaPlaylist.QVideo ...
- Flash Player漏洞利用Exploiting Flash Reliably
以下消息来自幻影论坛[Ph4nt0m]邮件组 前两天推荐过Mark Dowd的Paper "Exploiting Flash Reliably" [url]http://hi. ...
- 在 Ubuntu 14.04 Chrome中安装Flash Player(转)
在 Ubuntu 14.04 中安装 Pepper Flash Player For Chromium 一个 Pepper Flash Player For Chromium 的安装器已经被 Ubun ...
- Ubuntu 64位系统安装flash player
ubuntu 64下 flash player 安装方法 1 下载 http://labs.adobe.com/downloads/flashplayer10_square.html wget ht ...
- Scene Player初始版本完成
转载请注明出处为KlayGE游戏引擎,本文地址为http://www.klayge.org/2012/03/21/scene-player%e5%88%9d%e5%a7%8b%e7%89%88%e6% ...
最新文章
- Unity中创建本地多人游戏完整案例视频教程 Learn To Create A Local Multiplayer Game In Unity
- STM32 串口ISP下载
- python3除法运算_Python2和Python3中除法操作/的不同
- 论文笔记_S2D.55_2019_SLAM综述_Huang B. A Survey of Simultaneous Localization and Mapping
- 在Windows下运行UNIX程序
- java 打印日志乱码
- php如何获取当前几号,PHP如何获取当前时间
- 图像旋转(任意角度)matlab
- LinkedIn开源数据发现和管理工具 WhereHows
- 智慧城市大数据运营中心,发挥大数据价值
- 考研强化阶段选书怎么选
- dorado7时间格式调整
- java 几何平均数_统计学——平均数
- 项目经理的工具箱---走出软件作坊:三五个人十来条枪 如何成为开发正规军(三)...
- UVALive 4850 Installations 贪心
- 首届“中新人工智能高峰论坛”即将召开,周志华、李德毅......与你一起对话未来!...
- vector<PII>v
- uniapp登录授权获取微信手机号组件封装
- 机器学习之聚类常用方法
- 在使用开源IOT平台Thingsboard时,遇到的编译问题一initial exceeded maximum budget
热门文章
- DNSPod十问花生壳陈宇晔:远程办公领域的下一个“独角兽”?
- 2018年区块链十大发展势头
- Python调用腾讯API发送短信验证码
- 设计模式之责任链模式
- 机器学习(三)防止语句歧义、平凡解、支持向量机
- 强化学习之Q-learning算法
- 如何掌握程序语言(王垠)
- Ubuntu深度学习环境部署——显卡驱动、CUDA、cuDNN、pytorch
- 无畏先锋服务器没响应,LOL:为啥不删除“郊区”?无畏先锋人气惨淡,21分钟匹配不到人...
- myeclipse building workspace如何禁止及提高myeclipse速度