ffmpeg + SDL 系列5 Media 播放器系统设计
2013-09-30 22:34
225 查看
接下来探讨Media播放器的架构设计
1 从数据流的角度来看
File -> UFS API -> |
|
Network -> UDP Packet -> | Media Demux | -> Decoder -> Audio/Video Render Devic
Network -> HTTP -> |
|
Network -> RTP -> |
|
可见, 我们要考虑构建3个系统
系统1: Demux
功能定位: 从source端读取数据,并缓存,进行协议解析(Demux),
生成Decoder系统需要的Payload Packet队列
系统2: Decoer
对数据进行逆向解码,生成Render端格式需要的数据。
系统3: 硬件系统
各种视频,音频输出设备,最常见的声卡,显卡。
系统1 ~3在嵌入式系统通常是芯片公司负责硬件开发,并提供API,
开发者做的事情是设置参数和考虑各种回调函数,异步事件处理,共享内存的分配。
接下来主要考虑系统1和2由软件处理的情况下,如何设计系统。
2 Task设计
考虑到交互性
设计如下Task:
Task 1: UI 主Task,负责与用户交互,并将用户请求转发到MediaCtl
Task 2: MediaCtrl, 负责控制Demux线程和Decoder线程,并处理底层SDL来的硬件Event
Task 3: Demux 线程,负责按协议解析输入数据
Task 4: 解码线程,负责解码数据。
Task 5: 系统监听线程,负责接收SDL来的各种事件,并转发到上面线程。
3 接口设计
按照数据流,依次设计如下接口
ByteReader -》 FileReader/ HttpReader / UDPReader/ RtpReader
CachedBuffer
MediaDemux -> AsfDemux / WavDemux / Mp3Demux
RingBuffer
PacketQueue
StreamInfo
MediaDecoder -> AudioDecoder / VideoDecoer
AudioSample
AudioRender -> AudioRenderOSS / AudioRenderSDL / AudioRenderALSA
VideoFrame
VideoRender -> VideoRenderSDL / VideoRenderDirectFB
MediaCtrl -> AsfCtrl / Mp3Ctrl /Mp4Ctrl
1 从数据流的角度来看
File -> UFS API -> |
|
Network -> UDP Packet -> | Media Demux | -> Decoder -> Audio/Video Render Devic
Network -> HTTP -> |
|
Network -> RTP -> |
|
可见, 我们要考虑构建3个系统
系统1: Demux
功能定位: 从source端读取数据,并缓存,进行协议解析(Demux),
生成Decoder系统需要的Payload Packet队列
系统2: Decoer
对数据进行逆向解码,生成Render端格式需要的数据。
系统3: 硬件系统
各种视频,音频输出设备,最常见的声卡,显卡。
系统1 ~3在嵌入式系统通常是芯片公司负责硬件开发,并提供API,
开发者做的事情是设置参数和考虑各种回调函数,异步事件处理,共享内存的分配。
接下来主要考虑系统1和2由软件处理的情况下,如何设计系统。
2 Task设计
考虑到交互性
设计如下Task:
Task 1: UI 主Task,负责与用户交互,并将用户请求转发到MediaCtl
Task 2: MediaCtrl, 负责控制Demux线程和Decoder线程,并处理底层SDL来的硬件Event
Task 3: Demux 线程,负责按协议解析输入数据
Task 4: 解码线程,负责解码数据。
Task 5: 系统监听线程,负责接收SDL来的各种事件,并转发到上面线程。
3 接口设计
按照数据流,依次设计如下接口
ByteReader -》 FileReader/ HttpReader / UDPReader/ RtpReader
CachedBuffer
MediaDemux -> AsfDemux / WavDemux / Mp3Demux
RingBuffer
PacketQueue
StreamInfo
MediaDecoder -> AudioDecoder / VideoDecoer
AudioSample
AudioRender -> AudioRenderOSS / AudioRenderSDL / AudioRenderALSA
VideoFrame
VideoRender -> VideoRenderSDL / VideoRenderDirectFB
MediaCtrl -> AsfCtrl / Mp3Ctrl /Mp4Ctrl
相关文章推荐
- 基于Kinetis的KL系列之Cortex-M0的WAV音频播放器——系统设计(1)
- Java之------单机版书店管理系统(设计思想和设计模式系列八)登录模块
- Java之------单机版书店管理系统(设计思想和设计模式系列四)图书模块
- IT先锋系列研讨会---基于组件的系统架构设计
- (转帖)《解剖PetShop》系列之一 PetShop4.0的系统架构设计
- 解剖PetShop系列之一系统架构设计
- Java-单机版的书店管理系统(练习设计模块和思想_系列 二 )
- C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(二十八) 经典式属性设计及完美的物理攻击系统
- (转译)用FFmpeg和SDL写播放器--前言
- [导入]从架构设计到系统实施——基于.NET 3.0的全新企业应用系列课程(4):设计基于IIS7和AJAX的网站.zip(7.53 MB)
- [导入]从架构设计到系统实施——基于.NET 3.0的全新企业应用系列课程(2):设计基于WCF的服务.zip(8.29 MB)
- 从架构设计到系统实施——基于.NET 3.0的全新企业应用系列课程(视频课程讲师:徐晓卓)
- 最简单的基于FFMPEG+SDL的视频播放器:拆分-解码器和播放器
- Java之------单机版书店管理系统(设计思想和设计模式系列一)概述
- Java之------单机版书店管理系统(设计思想和设计模式系列六)销售模块
- 在windows环境下将基于FFMpeg和SDL的播放器集成到Qt creator中
- [转]《解剖PetShop》系列之一:PetShop的系统架构设计
- ffmpeg+SDl+ 播放器 -01
- 播放器(一)-FFMPEG-SDL-MFC-本地文件
- [导入]从架构设计到系统实施——基于.NET 3.0的全新企业应用系列课程(3):设计基于WF的工作流.zip(11.65 MB)