h265

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 8, 2023 License: MIT Imports: 4 Imported by: 1

Documentation

Index

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

func BuildSeqHeaderFromVpsSpsPps(vps, sps, pps []byte) ([]byte, error)

BuildSeqHeaderFromVpsSpsPps *****************************************************

  • @Description: flv使用
  • @param vps
  • @param sps
  • @param pps
  • @return []byte 内存块为内部独立新申请
  • @return error *****************************************************

func BuildVpsSpsPps2Annexb

func BuildVpsSpsPps2Annexb(vps, sps, pps []byte) ([]byte, error)

func IsIrapNalu

func IsIrapNalu(typ uint8) bool

IsIrapNalu *****************************************************

  • @Description: 是否是关键帧
  • @param typ 帧类型。注意,是经过 ParseNaluType 解析后的帧类型
  • @return bool *****************************************************

func ParseNaluType

func ParseNaluType(v uint8) uint8

ParseNaluType *****************************************************

  • @Description:
  • @param v 第一个字节
  • @return uint8 *****************************************************

func ParseNaluTypeReadable

func ParseNaluTypeReadable(v uint8) string

func ParseSps

func ParseSps(sps []byte, ctx *Context) error

func ParseVps

func ParseVps(vps []byte, ctx *Context) error

func ParseVpsSpsPpsFromEnhancedSeqHeader

func ParseVpsSpsPpsFromEnhancedSeqHeader(payload []byte) (vps, sps, pps []byte, err error)

func ParseVpsSpsPpsFromSeqHeader

func ParseVpsSpsPpsFromSeqHeader(payload []byte) (vps, sps, pps []byte, err error)

ParseVpsSpsPpsFromSeqHeader *****************************************************

  • @Description: 见func ParseVpsSpsPpsFromSeqHeaderWithoutMalloc
  • @param payload
  • @return vps 内存块为内部独立新申请
  • @return sps 内存块为内部独立新申请
  • @return pps 内存块为内部独立新申请
  • @return err *****************************************************

func ParseVpsSpsPpsFromSeqHeaderWithoutMalloc

func ParseVpsSpsPpsFromSeqHeaderWithoutMalloc(payload []byte) (vps, sps, pps []byte, err error)

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 VpsSpsPpsEnhancedSeqHeader2Annexb

func VpsSpsPpsEnhancedSeqHeader2Annexb(payload []byte) ([]byte, error)

func VpsSpsPpsSeqHeader2Annexb

func VpsSpsPpsSeqHeader2Annexb(payload []byte) ([]byte, error)

VpsSpsPpsSeqHeader2Annexb *****************************************************

  • @Description: HVCC Seq Header -> Annexb
  • @param payload
  • @return []byte 返回的内存块为内部独立新申请
  • @return error *****************************************************

Types

type Context

type Context struct {
	PicWidthInLumaSamples  uint32 // sps
	PicHeightInLumaSamples uint32 // sps
	// contains filtered or unexported fields
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL