WebRtc Native M96 远端视频接收之PacketBuffer-组帧原理分析

Posted 一苇渡江694

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebRtc Native M96 远端视频接收之PacketBuffer-组帧原理分析相关的知识,希望对你有一定的参考价值。

组帧

视频一帧数据往往被拆分为多个packet进行发送,组帧是将接收到的packets重组为视频帧。组帧的关键在于找到视频帧的起始与终止packet。对于h264编码的视频帧,rtp传输时没有明确的起始标志,webrtc在处理时以判断连续序列号的时间戳是否相同为依据,若不相同则认为找到了视频帧的起始packet。视频帧的结束标识为rtp包的header中的Mark标志位。对于vp8、vp9则可以从rtp包中解析到明确的帧开始与结束标识符。组帧结束后,拿到完整的视频帧数据,之后对该视频帧数据进行参考帧信息设置,随后送入frameBuffer,以便从中取帧进行解码。

RtpVideoStreamReceiver2接收到packet后,调用PacketBuffer::InsertPacket将packet进行存储并查找packet所在的帧以及之后帧的完整包数据,若找到该函数会返回完整视频帧的所有packets。若返回结果存在完整的视频帧,则继续由RtpVideoStreamReceiver2::OnInsertedPacket完成组帧。

视频数据如何insert到video_coding::PacketBuffer packet_buffer_

函数调用流程:

Call::DeliverPacket
Call::DeliverRtp
RtpStreamReceiverController::OnRtpPacket
RtpDemuxer::OnRtpPacket
RtpVideoStreamReceiver2::OnRtpPacket
RtpVideoStreamReceiver2::ReceivePacket
RtpVideoStreamReceiver2::OnReceivedPayloadData

构建一个pac

以上是关于WebRtc Native M96 远端视频接收之PacketBuffer-组帧原理分析的主要内容,如果未能解决你的问题,请参考以下文章

WebRtc Native M96 远端视频接收之NackRequesterNackSender-NACK丢包重传原理

WebRtc Native M96 远端视频接收之NackRequesterNackSender-NACK丢包重传原理

WebRtc Native M96 远端视频接收之VideoReceiveStream2模块创建分析

WebRtc Native M96 远端视频接收之PacketBuffer-组帧原理分析

WebRtc Native M96 远端视频接收之PacketBuffer-组帧原理分析

WebRtc Native M96 远端视频接收之RtpVideoStreamReceiver2-RTP包接收流程分析