package
0.37.4
Repository: https://github.com/q191201771/lal.git
Documentation: pkg.go.dev

# Functions

CompareSeq 比较序号的值,内部处理序号翻转问题,见单元测试中的例子 @return - 0 a和b相等 - 1 a大于b - -1 a小于b.
DefaultRtpUnpackerFactory 目前支持AVC,HEVC和AAC MPEG4-GENERIC,业务方也可以自己实现IRtpUnpackerProtocol,甚至是IRtpUnpackContainer.
IsAvcHevcBoundary @param pt: 取值范围为AvPacketPtAvc或AvPacketPtHevc,否则直接返回false.
MswLsw2Ntp msw是ntp的高32位,lsw是ntp的低32位.
MswLsw2UnixNano 将ntp时间戳(高32位低32位分开的形式)转换为Unix时间戳.
Ntp2UnixNano 将ntp时间戳转换为Unix时间戳,Unix时间戳单位是纳秒.
ParseRtpPacket 函数调用结束后,不持有参数<b>的内存块.
ParseSr rfc3550 6.4.1 @param b rtcp包,包含包头.
SubSeq a减b的值,内部处理序号翻转问题,如果a小于b,则返回负值,见单元测试中的例子.

# Constants

# Variables

# Structs

RtpPacketList rtp packet的有序链表,前面的seq小于后面的seq 为什么不用红黑树等查找性能更高的有序kv结构? 第一,容器有最大值,这个数量级用啥容器都差不多, 第二,插入时,99.99%的seq号是当前最大号附近的,遍历找就可以了, 注意,这个链表并不是一个定长容器,当数据有序时,容器内缓存的数据是一个帧的数据。.

# Interfaces

# Type aliases

OnAvPacket @param pkt: pkt.Timestamp: RTP包头中的时间戳(pts)经过clockrate换算后的时间戳,单位毫秒。 注意,不支持带B帧的视频流,pts和dts永远相同。 pkt.PayloadType: base.AvPacketPTXXX。 pkt.Payload: AAC: 返回的是raw frame,一个AvPacket只包含一帧。 引用的是接收到的RTP包中的内存块。 AVC或HEVC: AVCC格式,每个NAL前包含4字节NAL的长度。 新申请的内存块,回调结束后,内部不再使用该内存块。 注意,这一层只做RTP包的合并,假如sps和pps是两个RTP single包,则合并结果为两个AvPacket, 假如sps和pps是一个stapA包,则合并结果为一个AvPacket。.