一、RtpPacketToSend数据buffer申请流程
1)创建buffer对象
1、RTPSenderVideo::SendVideo函数

2、RTPSender::AllocatePacket

RtpPacketToSend::RtpPacketToSend(const ExtensionManager* extensions,
size_t capacity)
: RtpPacket(extensions, capacity) {}




2)申请数据内存块


buffer.h:SetSize()


至此数据buffer申请完毕,可以看出这里的数据buffer是一个std::unique_ptr<T[]> data_类型。
二、RtpPacketToSend数据buffer释放流程
RtpPacketToSend::~RtpPacketToSend()
->RtpPacket::~RtpPacket()
->CopyOnWriteBuffer::~CopyOnWriteBuffer()
->RefCountReleaseStatus Release()

->~BufferT() { MaybeZeroCompleteBuffer(); }
本文详细介绍了RtpPacketToSend在发送视频时的数据buffer申请和释放过程。从RTPSenderVideo::SendVideo开始,通过RTPSender::AllocatePacket创建RtpPacketToSend对象,然后在buffer.h中设定尺寸完成内存块申请。数据buffer使用std::unique_ptr<T[]>进行管理。在对象析构过程中,遵循特定的释放顺序,确保内存安全地被释放。
684

被折叠的 条评论
为什么被折叠?



