打印

VSF demo -- NES模拟器之视频流

[复制链接]
1284|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
vsfopen|  楼主 | 2018-8-11 21:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 vsfopen 于 2018-8-12 00:42 编辑

有空的时候,就开始着手NES模拟器相关构架的设计。准备了一个VSF中的音频流和视频流的处理架构。

1. 音频流和视频流:struct vsfav_stream_t;
vsfav_stream_t实际上是普通的vsf_stream_t和一个帧同步信号,实际上只是一个带同步信号的数据流。

2. 适配器模型:vsfav_adapter_t和vsf_stream_adapter_t
vsfav_adapter_t继承自vsf_stream_adapter_t。流适配器有一个输入流和一个输出流,适配器的作用就是做流的转换。
对于音视频适配器的话,一个简单的例子就是音频解码器或者视频解码器,比如MP3解码器。输入MP3码流,输出PCM流。
适配器只需要处理2个回调,on_inout数据流的回调和on_sync同步信号的回调。

3. 同步器:vsfav_sync_t
同步器只处理同步信号,不处理数据流。
比如,一个VR多媒体系统,有左右声道和左右视频,一共4个av_stream。
这4个av_stream需要同步播放,就可以使用vsfav_sync_t来实现。
vsfav_sync_t会拦截原先的同步信号,并且,在适合的同步位置,统一发送同步信号。
另一种情况是,av_stream的同步信号,需要有固定间隔(固定帧率播放视频),也可以使用同步器来实现。

4. frame_buffer
frame_buffer由vsf_multibuf_t内存结构实现的多帧缓冲结构。
UI要修改画面的时候,先得到当前画面指针,然后修改数据。
frame_buffer可以以固定时间间隔refresh,也可以由UI来控制refresh。
framebuffer输出的是av_stream。






使用特权

评论回复

相关帖子

沙发
vsfopen|  楼主 | 2018-8-14 16:15 | 只看该作者

对照组,在PC上运行jeg模拟器,使用VSF构架,结构如下:
jeg-->>jeg_port-->>vsfui_fb-->>av_stream-->jeg_decoder_SDL(decode and play)-->>SDL2

对于MCU上的实现,结构如下:
jeg-->>jeg_port-->>vsfui_fb-->>av_stream-->jeg_decoder_RGB565-->>av_stream-->UVC-->PC

目前,jeg、jed_port、vsfui_fb、av_stream已经平台无关,后面是decoder出RGB给SDL还是decoder出RGB565给UVC就是和应用相关的了。

使用特权

评论回复
板凳
cuijiaqing001| | 2020-2-22 19:58 | 只看该作者
baidu是相当能折腾我了

使用特权

评论回复
发新帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

90

主题

325

帖子

8

粉丝