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

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、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(); }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值