# Functions
BuildSeqHeaderFromSpsPps
@return 内存块为内部独立新申请.
BuildSpsPps2Annexb
根据sps pps构建payload.
CaptureAvcc2Annexb
AVCC转换为Annexb格式。
@param payload: rtmp message的payload部分或者flv tag的payload部分。
注意,包含了头部2字节类型以及3字节的cts.
IterateNaluAnnexb
@param handler: 回调函数中的`nal`参数引用`nals`中的内存.
IterateNaluStartCode
遍历直到找到第一个nalu start code的位置。
@param start: 从`nalu`的start位置开始查找。
@return pos: start code的起始位置(包含start code自身)。
@return length:
start code的长度,可能是3或者4。 注意,如果找不到start code,则返回-1, -1。.
ParseSpsPpsFromSeqHeader
见func ParseSpsPpsFromSeqHeaderWithoutMalloc
@return sps, pps: 内存块为内部独立新申请.
ParseSpsPpsFromSeqHeaderWithoutMalloc
从AVCC格式的Seq Header中得到SPS和PPS内存块。
@param payload: rtmp message的payload部分或者flv tag的payload部分。
注意,包含了头部2字节类型以及3字节的cts。
@return sps, pps: 复用传入参数`payload`的内存块.
SplitNaluAnnexb
遍历Annexb格式,去掉start code,获取nal包,正常情况下可能为1个或多个,异常情况下可能一个也没有
具体见单元测试
@return nalList: 内存块元素引用输入参数`nals`的内存.
SplitNaluAvcc
遍历AVCC格式,去掉4字节长度,获取nal包,正常情况下可能返回1个或多个,异常情况下可能一个也没有
具体见单元测试.
SpsPpsSeqHeader2Annexb
AVCC Seq Header转换为Annexb格式。
@param payload:
rtmp message的payload部分或者flv tag的payload部分。 注意,包含了头部2字节类型以及3字节的cts。
@return 返回的内存块为内部独立新申请。.
TryParsePps 尝试解析PPS所有字段,实验中,请勿直接使用该函数.
TryParseSeqHeader 尝试解析SeqHeader所有字段,实验中,请勿直接使用该函数。
@param payload: rtmp message的payload部分或者flv tag的payload部分。 注意,包含了头部2字节类型以及3字节的cts。.
# Constants
Access Unit Delimiter.
Filler Data.
# Variables
AudNalu aud nalu.
NaluTypeMapping
H.264-AVC-ISO_IEC_14496-15.pdf Table 1 - NAL unit types in elementary streams.
# Structs
DecoderConfigurationRecord
H.264-AVC-ISO_IEC_14496-15.pdf 5.2.4 Decoder configuration information.
Sps
ISO-14496-10.pdf 7.3.2.1 Sequence parameter set RBSP syntax 7.4.2.1 Sequence parameter set RBSP semantics.