Documentation
¶
Index ¶
- Constants
- Variables
- func BuildSeqHeaderFromVpsSpsPps(vps, sps, pps []byte) ([]byte, error)
- func BuildVpsSpsPps2Annexb(vps, sps, pps []byte) ([]byte, error)
- func IsIrapNalu(typ uint8) bool
- func ParseNaluType(v uint8) uint8
- func ParseNaluTypeReadable(v uint8) string
- func ParseSps(sps []byte, ctx *Context) error
- func ParseVps(vps []byte, ctx *Context) error
- func ParseVpsSpsPpsFromEnhancedSeqHeader(payload []byte) (vps, sps, pps []byte, err error)
- func ParseVpsSpsPpsFromSeqHeader(payload []byte) (vps, sps, pps []byte, err error)
- func ParseVpsSpsPpsFromSeqHeaderWithoutMalloc(payload []byte) (vps, sps, pps []byte, err error)
- func VpsSpsPpsEnhancedSeqHeader2Annexb(payload []byte) ([]byte, error)
- func VpsSpsPpsSeqHeader2Annexb(payload []byte) ([]byte, error)
- type Context
Constants ¶
View Source
const ( NaluTypeSliceTrailN uint8 = 0 // 0x0 NaluTypeSliceTrailR uint8 = 1 // 0x01 NaluTypeSliceTsaN uint8 = 2 // 0x02 NaluTypeSliceTsaR uint8 = 3 // 0x03 NaluTypeSliceStsaN uint8 = 4 // 0x04 NaluTypeSliceStsaR uint8 = 5 // 0x05 NaluTypeSliceRadlN uint8 = 6 // 0x06 NaluTypeSliceRadlR uint8 = 7 // 0x07 NaluTypeSliceRaslN uint8 = 8 // 0x06 NaluTypeSliceRaslR uint8 = 9 // 0x09 NaluTypeSliceVclN10 uint8 = 10 // 0x0A NaluTypeSliceVclN11 uint8 = 11 // 0x0B NaluTypeSliceVclN12 uint8 = 12 // 0x0C NaluTypeSliceVclN13 uint8 = 13 // 0x0D NaluTypeSliceVclN14 uint8 = 14 // 0x0E NaluTypeSliceVclN15 uint8 = 15 // 0x0F NaluTypeSliceBlaWlp uint8 = 16 // 0x10 NaluTypeSliceBlaWradl uint8 = 17 // 0x11 NaluTypeSliceBlaNlp uint8 = 18 // 0x12 NaluTypeSliceIdr uint8 = 19 // 0x13 NaluTypeSliceIdrNlp uint8 = 20 // 0x14 NaluTypeSliceCranut uint8 = 21 // 0x15 NaluTypeSliceRsvIrapVcl22 uint8 = 22 // 0x16 NaluTypeSliceRsvIrapVcl23 uint8 = 23 // 0x17 NaluTypeSliceRsvVcl24 uint8 = 24 // 0x18 NaluTypeSliceRsvVcl25 uint8 = 25 // 0x19 NaluTypeSliceRsvVcl26 uint8 = 26 // 0x1A NaluTypeSliceRsvVcl27 uint8 = 27 // 0x1B NaluTypeSliceRsvVcl28 uint8 = 28 // 0x1C NaluTypeSliceRsvVcl29 uint8 = 29 // 0x1D NaluTypeSliceRsvVcl30 uint8 = 30 // 0x1E NaluTypeSliceRsvVcl31 uint8 = 31 // 0x1F NaluTypeVps uint8 = 32 // 0x20 NaluTypeSps uint8 = 33 // 0x21 NaluTypePps uint8 = 34 // 0x22 NaluTypeAud uint8 = 35 // 0x23 NaluTypeEosNut uint8 = 36 // 0x24 NaluTypeEobNut uint8 = 37 // 0x25 NaluTypeFdNut uint8 = 38 // 0x26 NaluTypeSei uint8 = 39 // 0x27 NaluTypeSeiSuffix uint8 = 40 // 0x28 )
ISO_IEC_23008-2_2013.pdf Table 7-1 – NAL unit type codes and NAL unit type classes
Variables ¶
View Source
var ( NaluStartCode4 = []byte{0x0, 0x0, 0x0, 0x1} // AudNalu aud nalu AudNalu = []byte{0x00, 0x00, 0x00, 0x01, 0x46, 0x01, 0x10} ErrHevc = errors.New("err hevc") ErrShortBuffer = errors.New("err short buffer") )
View Source
var NaluTypeMapping = map[uint8]string{
NaluTypeSliceTrailN: "TrailN",
NaluTypeSliceTrailR: "TrailR",
NaluTypeSliceTsaN: "TsaN",
NaluTypeSliceTsaR: "TsaR",
NaluTypeSliceStsaN: "StsaN",
NaluTypeSliceStsaR: "StsaR",
NaluTypeSliceRadlN: "RadlN",
NaluTypeSliceRadlR: "RadlR",
NaluTypeSliceRaslN: "RaslN",
NaluTypeSliceRaslR: "RaslR",
NaluTypeSliceVclN10: "VclN10",
NaluTypeSliceVclN11: "VclN11",
NaluTypeSliceVclN12: "VclN12",
NaluTypeSliceVclN13: "VclN13",
NaluTypeSliceVclN14: "VclN14",
NaluTypeSliceVclN15: "VclN15",
NaluTypeSliceBlaWlp: "BlaWlp",
NaluTypeSliceBlaWradl: "BlaWradl",
NaluTypeSliceBlaNlp: "BlaNlp",
NaluTypeSliceIdr: "IDR",
NaluTypeSliceIdrNlp: "IDRNLP",
NaluTypeSliceCranut: "CRANUT",
NaluTypeSliceRsvIrapVcl22: "IrapVcl22",
NaluTypeSliceRsvIrapVcl23: "IrapVcl23",
NaluTypeSliceRsvVcl24: "RsvVcl24",
NaluTypeSliceRsvVcl25: "RsvVcl25",
NaluTypeSliceRsvVcl26: "RsvVcl26",
NaluTypeSliceRsvVcl27: "RsvVcl27",
NaluTypeSliceRsvVcl28: "RsvVcl28",
NaluTypeSliceRsvVcl29: "RsvVcl29",
NaluTypeSliceRsvVcl30: "RsvVcl30",
NaluTypeSliceRsvVcl31: "RsvVcl31",
NaluTypeVps: "VPS",
NaluTypeSps: "SPS",
NaluTypePps: "PPS",
NaluTypeAud: "AUD",
NaluTypeEosNut: "EosNut",
NaluTypeEobNut: "EobNut",
NaluTypeFdNut: "FdNut",
NaluTypeSei: "SEI",
NaluTypeSeiSuffix: "SEISuffix",
}
Functions ¶
func BuildSeqHeaderFromVpsSpsPps ¶
BuildSeqHeaderFromVpsSpsPps *****************************************************
- @Description: flv使用
- @param vps
- @param sps
- @param pps
- @return []byte 内存块为内部独立新申请
- @return error *****************************************************
func BuildVpsSpsPps2Annexb ¶
func IsIrapNalu ¶
IsIrapNalu *****************************************************
- @Description: 是否是关键帧
- @param typ 帧类型。注意,是经过 ParseNaluType 解析后的帧类型
- @return bool *****************************************************
func ParseNaluType ¶
ParseNaluType *****************************************************
- @Description:
- @param v 第一个字节
- @return uint8 *****************************************************
func ParseNaluTypeReadable ¶
func ParseVpsSpsPpsFromSeqHeader ¶
ParseVpsSpsPpsFromSeqHeader *****************************************************
- @Description: 见func ParseVpsSpsPpsFromSeqHeaderWithoutMalloc
- @param payload
- @return vps 内存块为内部独立新申请
- @return sps 内存块为内部独立新申请
- @return pps 内存块为内部独立新申请
- @return err *****************************************************
func ParseVpsSpsPpsFromSeqHeaderWithoutMalloc ¶
ParseVpsSpsPpsFromSeqHeaderWithoutMalloc *****************************************************
- @Description: 从HVCC格式的Seq Header中得到VPS,SPS,PPS内存块。
- @param payload rtmp message的payload部分或者flv tag的payload部分。注意,包含了头部2字节类型以及3字节的cts。
- @return vps 复用传入参数`payload`的内存块。
- @return sps 复用传入参数`payload`的内存块。
- @return pps 复用传入参数`payload`的内存块。
- @return err *****************************************************
func VpsSpsPpsSeqHeader2Annexb ¶
VpsSpsPpsSeqHeader2Annexb *****************************************************
- @Description: HVCC Seq Header -> Annexb
- @param payload
- @return []byte 返回的内存块为内部独立新申请
- @return error *****************************************************
Types ¶
Click to show internal directories.
Click to hide internal directories.