TCPMP是一个功能强大开放式的开源多媒体播放器,播放器主要由核心框架模块(common工程)和解码器分离器插件组成。
    TCPMP的插件非常多,、libmad我们联合几个最常用的插件(ffmpeg、splitter)来说明,其中interface插件实现TCPMP的界面,由于他和媒体播放没有什么关系,这部分可以完全被替换掉,替换成自己的界面。
    ffmpeg工程是系统主要的音视频解码模块,ffmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。ffmpeg支持MPEG、DivX、MPEG4、AC3、DV、FLV等40多种编码,AVI、MPEG、OGG、Matroska、ASF等90多种解码。很多开源播放器都用到了ffmpeg。但是ffmpeg程序解码效率不是很高,系统仅仅使用了FFmpeg的部分解码功能。

libmad工程用于MP3文件解码,该工程包含两个功能模块,一个负责解析MP3文件格式,包括MPEG1音频文件 (MP1,MP2,MP3,MPA),读取每一帧音频数据;另一个负责解码MPEG1音频数据,解码代码在libmad子目录中。

libmad是一个开源的高精度 MPEG1音频解码库,支持 MPEG-1(Layer I, Layer II 和 LayerIII,也就是 MP3)。libmad提供 24-bit 的 PCM 输出,完全是定点计算,非常适合没有浮点支持的平台上使用。使用 libmad 提供的一系列 API,就可以非常简单地实现 MP3 数据解码工作。在 libmad 的源代码文件目录下的 mad.h 文件中,可以看到绝大部分该库的数据结构和 API 等。libmad是用的fixed-integer,通过整数模拟小数计算的,精度只能保证到小数点后第9位(大于0的最小值 0.00000000372529),虽然解码精度会有损失,但是极大提高了解码效率,特别是在嵌入式设备上也可以实现高码率MP3文件的解码。

common工程是核心模块,是一个开放的集数据输入、转换、音/视频解码、信号输出等功能为一体的完整的多媒体播放框架。这个框架自身不包含任何的Decode和Split功能,这些功能由插件实现,核心模块以一个树状结构管理所有的功能模块和插件模块,实现数据Render功能,对输入、转换、输出流程的控制,接受播放过程中的操作和对事件进行处理,同时也实现系统运行中经常使用的一些共用函数,比如解码过程中经常使用的逆离散余弦变换,内存操作,界面中需要使用的多语言字符处理等。common工程的主目录下主要有:blit、dyncode、overlay、pcm、softidct、win32、zlib等子目录。其中blit和overlay存放是视频信号渲染模块,pcm存放PCM音频信号转换模块,softidct存放逆离散余弦变换函数,win32存放内存操作等常用模块,dyncode这个目录的代码比较晦涩,存放的是程序运行是动态生成代码模块,针对不同的CPU指令集,PCM数据数据声道和采样率不同,视频渲染数据格式和色深等不同情况动态生成不同的优化代码(这段代码非常精彩,不能不让人佩服TCPMP作者的高超水平)。核心模块有一个上下文对象context,该对象在初始化函数bool_t Context_Init(……)中候创建了一个该对象实例。该对象实例记录管理各个功能模块,用户界面可以通过该对象和核心模块交互,管理控制播放过程。

WINCE TCPMP应用一:TCPMP概述相关推荐

  1. WINCE TCPMP应用三:TCPMP的播放模块

    首先,我们来看一下TCPMP的播放模块的结构定义:  static const nodedef Player =  {   sizeof(player_base)|CF_GLOBAL|CF_SETTI ...

  2. tcpmp 编译 源代码分析

    TCPMP源代码分析 TCPMP源代码分析 播放器主要由核心框架模块(common工程)和解码器.分离器插件组成.TCPMP的插件非常多,其中主要的插件有:interface插件实现了TCPMP的界面 ...

  3. 魅族M8第三方应用软件测试

    盛水的木桶是由许多块木板箍成的,盛水量也是由这些木板共同决定的.若其中一块木板很短,则此木桶的盛水量就被短板所限制.这块短板就成了这个木桶盛水量的"限制因素"(或称"短板 ...

  4. USB On-The-Go引脚

    USB On-The-Go 是什么 USB 接口的设备现在是随处可见了,打印机.相机.手机.MP3等几乎目前能想到的消费类电子设备都具有 USB接口.USB传输速率快,接口简单.支持热插拔的特性,使其 ...

  5. SmartPhone-系统文件篇

    dvbbs 收藏本页 联系我们 论坛帮助 dvbbs >> 数码科技.流行服饰.首饰.时尚精品等所有时尚性内容都可以在这儿与大家共享. 搜一搜相关精彩主题  山西财经大学CIDA论坛 → ...

  6. Windows Mobile5.0与Windows Mobile6.0对比评测

        在大家将关注的目光投向微软新一代桌面操作系统Vista的时候.微软今年年初在3GSM大会上推出了掌上移动平台推出的Windows Mobile 6.0操作系统. 作为桌面操作系统领域的绝对霸主 ...

  7. USB On-The-Go引脚 说明

    USB On-The-Go 是什么 USB 接口的设备现在是随处可见了,打印机.相机.手机.MP3等几乎目前能想到的消费类电子设备都具有 USB接口.USB传输速率快,接口简单.支持热插拔的特性,使其 ...

  8. WINCE应用层设计经验总结-关于TCPMP播放器制作编译篇

    //===========================================================// //标题:WINCE应用层设计经验总结-关于TCPMP播放器制作(一) ...

  9. zz--WINCE TCPMP应用四:利用TCPMP插件开发程序

    2009-06-12 16:48 首先,我们需要把common.lib添加到VS2005/项目属性/链接器/输入项中,同时把common.dll和common.lib放到项目文件夹中,TCPMP中的C ...

最新文章

  1. 技术16期:如何更好的保证数据质量【大数据篇】
  2. C罗还会是史上第一个上链的得分王吗?
  3. 【项目管理】绩效域-工件裁剪对照(绩效维度)
  4. ionic实现下载文件并打开功能(file-transfer和file-opener2插件)
  5. iPhone屏幕做一个最上层全屏幕的layer
  6. ListView setOnItemClickListener无效
  7. 最末参与者优化 lpo_优化博客以提高读者参与度的6种方法
  8. Libhybris之Glibc和Bionic共存时的TLS问题(四)
  9. 《Joel On Software》读后
  10. One by One [ 1 x 1 ] Convolution - counter-intuitively useful
  11. 树莓派CM4_Tiny(双HDMI)扩展板运行Openwrt演示(有线以太网)
  12. 高等数学学习笔记——第八十讲——球坐标下三重积分的计算
  13. 报错invalid operands to binary expression (const char * and const char[9])
  14. 渗透测试工具篇之Metasploit(MSF)扫描模块的简单使用
  15. Android 中指纹识别的使用
  16. 【coq】函数语言设计 练习题inductionlists 总结
  17. 转:理想主义终结年代的七种兵器
  18. ffmpeg中vf与filter_complex的区别
  19. 程序媛审美测评——控制台256种颜色搭配及控制台改变界面颜色的方法
  20. 消息模型与生成pdf

热门文章

  1. 三级分销系统到底是什么模式,三级分销特点
  2. 【计算机网络】——习题解析:UDP 用户数据报的首部十六进制表示是:06 32 00 45 00 1C E2 17,试求源端口、目的端口、 用户数据报的总长度、数据部分长度等
  3. 智能温度计APP一键开发(快速搭建)
  4. 零阶保持器(ZOH)与一阶低通滤波器频率特性分析
  5. OpenCV常用函数记载
  6. Ubuntu20.4 ROS2 foxy movelt2
  7. 牛客小白月赛23(A、B
  8. NOIP 2017 逛公园 记忆化搜索 最短路 好题
  9. API卡_[api]必应词典查询api,naive implementation
  10. 支持avi mkv的html视频插件,PS4更新加入媒体播放器 支持多种音频视频格式