Edit online

Packet manager

Packet manager 负责管理码流数据和 buffer。初始化时,该模块申请一块物理连续的内存(buffer 大小可由外部配置),用于存放视频/图片码流数据。

Packet manager 管理的数据单元为 packet,packet 表示一笔码流数据,它可以是完整的一帧数据,也支持不是完整的一帧数据。 每个 packet 与物理内存中的码流数据一一对应,它记录了每一笔码流的物理内存基地址、物理内存结束地址、物理内存偏移、虚拟内存地址、码流数据长度等信息。

../../images/packet_manager1.png
1. packet 管理

packet 通过 empty list 和 ready list 两个链表进行管理。 其中,empty list 用于存放空闲的 packet,ready list 用于存放待解码的 packet。

送码流数据时,从 empty list 获取一个空闲 packet,填充数据后,再把 packet 放入 ready list;

解码前,解码器从 ready list 获取一个填充数据的 packet,使用完后再把该 packet 放入 empty list。

../../images/pm_flow1.png
2. packet manager 调用流程