webrtc代码走读二十一(RtpPacketToSend数据buffer的申请和释放)

一、RtpPacketToSend数据buffer申请流程

1)创建buffer对象

1、RTPSenderVideo::SendVideo函数

webrtc代码走读二十一(RtpPacketToSend数据buffer的申请和释放)_第1张图片

2、RTPSender::AllocatePacket

webrtc代码走读二十一(RtpPacketToSend数据buffer的申请和释放)_第2张图片

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

webrtc代码走读二十一(RtpPacketToSend数据buffer的申请和释放)_第3张图片

webrtc代码走读二十一(RtpPacketToSend数据buffer的申请和释放)_第4张图片

 webrtc代码走读二十一(RtpPacketToSend数据buffer的申请和释放)_第5张图片

webrtc代码走读二十一(RtpPacketToSend数据buffer的申请和释放)_第6张图片

 2)申请数据内存块

webrtc代码走读二十一(RtpPacketToSend数据buffer的申请和释放)_第7张图片

webrtc代码走读二十一(RtpPacketToSend数据buffer的申请和释放)_第8张图片

 buffer.h:SetSize()

webrtc代码走读二十一(RtpPacketToSend数据buffer的申请和释放)_第9张图片

 webrtc代码走读二十一(RtpPacketToSend数据buffer的申请和释放)_第10张图片

 至此数据buffer申请完毕,可以看出这里的数据buffer是一个std::unique_ptr data_类型。

二、RtpPacketToSend数据buffer释放流程

RtpPacketToSend::~RtpPacketToSend()

->RtpPacket::~RtpPacket()

->CopyOnWriteBuffer::~CopyOnWriteBuffer()

->RefCountReleaseStatus Release()

webrtc代码走读二十一(RtpPacketToSend数据buffer的申请和释放)_第11张图片

->~BufferT() { MaybeZeroCompleteBuffer(); }

你可能感兴趣的:(webrtc代码走读,webrtc)