本文介绍了AVPacket和AVFrame两块buffer是怎么管理的,并梳理了所有相关的接口,介绍这些接口内部 具体实现了什么。
一、引出
问题:
1、从av_read_frame读取到一个AVPacket后怎么放入队列?
2、从avcodec_recevice_frame读取到一个AVFrame后又怎么放入队列?
二、拷贝
从现有的Packet拷贝一个新Packet的时候,有两种情况:
- 浅拷贝:两个Packet的buf引用的是同一数据缓存空间,这时候要注意数据缓存空间的释放问题;
- 深拷贝:两个Packet的buf引用不同的数据缓存空间,每个Packet都有数据缓存空间的copy;