TCPMP代码分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
TCPMP代码分析

TCPMP源代码分析 播放器主要由核心框架模块(common工程)和解码器分离器插件组成。TCPMP的插件非常多,common工程是核心模块,是一个开放的集数据输入、转换、音/视频解码、信号输出等功能为一体的完整的多媒体播放框架。这个框架自身不包含任何的Decode和Split功能,这些功能由插件实现,核心模块以一个树状结构管理所有的功能模块和插件模块,实现数据Render功能,对输入、转换、输出流程的控制,接受播放过程中的操作和对事件进行处理,同时也实现系统运行中经常使用的一些共用函数,比如解码过程中经常使用的逆离散余弦变换,内存操作,界面中需要使用的多语言字符处理等。common工程的主目录下主要有:blit、dyncode、overlay、pcm、softidct、win32、zlib等子目录。其中blit和overlay存放是视频信号渲染模块,pcm存放PCM音频信号转换模块,softidct存放逆离散余弦变换函数,win32存放内存操作等常用模块,dyncode这个目录的代码比较晦涩,存放的是程序运行动态生成代码模块,针对不同的CPU指令集,PCM数据声道和采样率不同,视频渲染数据格式和色深等不同情况动态生成不同的优化代码上下文对象context该对象在初始化函数bool_t Context_Init中创建了一个该对象实例。该对象实例记录管理各个功能模块,用户界面可以通过该对象和核心模块交互,管理控制播放过程。定义对象描述功能模块相互间的逻辑结构,数据对象记录模块属性和方法。所有的功能模块结构按一个树状结构来组织,结构关系如下,NODE是整个结构的根结点,其下为子节点,节点按类型可分为实节点,全局节点,设置节点,抽象节点。抽象节点没有对应的对象实例,类似C++的抽象基类,为了按照逻辑关系组织系统结构而存在,例如NODE就是抽象节点。全局节点只有一个对象的实例,如播放控制模块PLAYER_ID。设置节点表示和系统播放设置相关,比如声音均衡器模块EQUALIZER_ID,颜色控制模块COLOR_ID。实节点与抽象节点不同,指可以生成对象实例的节点,实节点没有特殊标识,一般以数据对象占用内存大小表示是否是一个实节点,创建节点时要根据该信息分配内存单元,实节点也可以有子节点,例如:MMS_ID的父节点是HTTP_ID。全局节点,设置节点和实节点可以相互组合,比如播放控制节点同时是全局节点,设置节点和实节点。 NODE_CLASS (根节点) ??? FLOW_CLASS (流控制模块)(com Flow_Init ) ??? ? ├─CODEC_CLASS (解码模块)(com Codec_Init) ??? ? │? ├─AMRNB_ID ??? │? │? ├─AMRWB_ID ??? │? │? ├─EQUALIZER_ID (声音均衡器模块)(com Equalizer_Init) ??? ? │? ├─VBUFFER_ID (视频缓冲模块) ??? ? │? ├─DMO_CLASS (DirectX Media Object)(com dmo_init) ??? ? │? │? ├─WMV_ID ??? │? │? │? ├─WMS_ID ??? │? │? │? ├─WMVA_ID ??? │? │? │? ├─WMA_ID ??? │? │? │? └─WMAV_ID ??? │? │? ├─FFMPEG_VIDEO_CLASS (FFMpeg 解码模块)(ffmpeg FFMPEG_Init) ??? ? │? └─LIBMAD_ID (Libmad Mp3解码模块)(libmad LibMad_Init) ??? ? ├─OUT_CLASS (信号渲染模块)(com Flow_Init) ??? ? │? ├─AOUT_CLASS (音频信号渲染)(com Audio_Init) ??? ? │? │? ├─NULLAUDIO_ID ??? │? │? │? └─WAVEOUT_ID ??? │? │? └─VOUT_CLASS (视频信号渲染)(com Video_Init) ??? ? │????? ├─NULLVIDEO_ID ??? │? │????? └─OVERLAY_CLASS (com Overlay_Init) ??? │? │????? ├─AHI_ID (ati3200 ATI3200_Init)??? │? │????? ├─DDRAW_ID │? │????? ├─DIRECT_ID ??? │? │????? ├─DDRAW_ID ??? │? │????? ├─FLYTV_ID ??? │? │????? ├─

文档评论(0)

xjj2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档