1 回答
TA贡献1744条经验 获得超4个赞
一、创建一个VideoPicture结构体用来保存解码出来的图像。
二、添加数据队列的初始化、添加以及读取的函数。
三、audio_decode_frame():解码音频
四、audio_callback(): 回调函数,向SDL缓冲区填充数据
五、创建视频刷新相关的函数:
schedule_refresh():它主要的作用是告诉系统指定的毫秒数后推FF_REFRESH_EVENT。当我们看到它在事件队列时,将依次调用视频刷新功能。
六、添加视频显示函数:
因为我们的屏幕可以是任意大小(我们设定我们为640×480,并有一些方法来设置它,所以它是由用户调整大小),我们需要动态地计算出我们有多大的矩形。因此,首先我们需要弄清楚我们的电影的显示比例,这仅仅是宽度除以身高。某些编解码器将有一个奇怪的样本纵横比,这就是一个像素,或样品的宽度/高度。因为在我们的编解码器的上下文中的高度和宽度值以像素为单位测量,实际的宽高比等于宽高比数倍的样品长宽比。一些编解码器将显示0-5的宽高比,这表示每个像素仅仅是大小1x1的。然后,我们扩展了电影,以适应在我们的屏幕上。
七、分配显示输出内存空间:
使用队列中,我们有两个指针 - 写入索引和阅读索引。我们还跟踪实际的照片有多少是在缓冲区中。要写入队列中,我们将首先等待我们的缓冲清除,所以我们足够的空间来存储我们VideoPicture。然后我们检查,看看是否已经分配了覆盖在我们的写作索引。如果没有,我们就必须分配一定的空间。如果窗口的大小发生了变化, 我们也要重新分配缓冲区。
八、解码线程,将解码器,建立音频线,保存重要信息到数据结构中。
九、编写Main函数用来调用解码线程。
- 1 回答
- 0 关注
- 704 浏览
添加回答
举报