本帖最后由 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。
|