h264parser

package
v1.0.7 Latest Latest
Warning

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

Go to latest
Published: Feb 13, 2025 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	NALU_SEI = 6
	NALU_SPS = 7
	NALU_PPS = 8
	NALU_AUD = 9
)
View Source
const (
	NALU_RAW = iota
	NALU_AVCC
	NALU_ANNEXB
)
View Source
const (
	SLICE_P = iota + 1
	SLICE_B
	SLICE_I
)

Variables

View Source
var AUDBytes = []byte{0, 0, 0, 1, 0x9, 0xf0, 0, 0, 0, 1} // AUD
View Source
var ErrDecconfInvalid = fmt.Errorf("h264parser: AVCDecoderConfRecord invalid")
View Source
var StartCodeBytes = []byte{0, 0, 1}

Functions

func AddEmulationPrevention

func AddEmulationPrevention(data []byte) ([]byte, int)

增加防竞争码0x000003 0x00 00 01 -----> 0x00 00 03 01

func CheckNALUsType

func CheckNALUsType(b []byte) (typ int)

func DeEmulationPrevention

func DeEmulationPrevention(data []byte) []byte

去除防竞争码0x000003

func IsDataNALU

func IsDataNALU(b []byte) bool

func IsPpsNALU

func IsPpsNALU(b byte) bool

func IsSeiNALU

func IsSeiNALU(b byte) bool

func IsSpsNALU

func IsSpsNALU(b byte) bool

func RemoveH264orH265EmulationBytes

func RemoveH264orH265EmulationBytes(b []byte) []byte

func SplitNALUs

func SplitNALUs(b []byte) (nalus [][]byte, typ int)

Types

type AVCDecoderConfRecord

type AVCDecoderConfRecord struct {
	AVCProfileIndication uint8
	ProfileCompatibility uint8
	AVCLevelIndication   uint8
	LengthSizeMinusOne   uint8
	SPS                  [][]byte
	PPS                  [][]byte
}

func (AVCDecoderConfRecord) Len

func (self AVCDecoderConfRecord) Len() (n int)

func (AVCDecoderConfRecord) Marshal

func (self AVCDecoderConfRecord) Marshal(b []byte) (n int)

func (*AVCDecoderConfRecord) Unmarshal

func (self *AVCDecoderConfRecord) Unmarshal(b []byte) (n int, err error)

type CodecData

type CodecData struct {
	Record     []byte
	RecordInfo AVCDecoderConfRecord
	SPSInfo    SPSInfo
	PPSInfo    PPSInfo

	SequnceHeaderTag interface{}
}

func NewCodecDataFromAVCDecoderConfRecord

func NewCodecDataFromAVCDecoderConfRecord(record []byte) (self CodecData, err error)

func NewCodecDataFromSPSAndPPS

func NewCodecDataFromSPSAndPPS(sps, pps []byte) (self CodecData, err error)

func (CodecData) AVCDecoderConfRecordBytes

func (self CodecData) AVCDecoderConfRecordBytes() []byte

func (CodecData) Bandwidth

func (self CodecData) Bandwidth() string

func (CodecData) FPS

func (self CodecData) FPS() int

func (CodecData) Height

func (self CodecData) Height() int

func (CodecData) PPS

func (self CodecData) PPS() []byte

func (CodecData) PacketDuration

func (self CodecData) PacketDuration(data []byte) time.Duration

func (CodecData) Resolution

func (self CodecData) Resolution() string

func (CodecData) SPS

func (self CodecData) SPS() []byte

func (CodecData) Tag

func (self CodecData) Tag() string

func (CodecData) Type

func (self CodecData) Type() av.CodecType

func (CodecData) Width

func (self CodecData) Width() int

type PPSInfo

type PPSInfo struct {
	ForbiddenZeroBit uint
	NalRefIdc        uint
	NalUnitType      uint

	PicParameterSetID                  uint
	SeqParameterSetID                  uint
	EntropyCodingModeFlag              uint
	PicOrderPresentFlag                uint
	NumSliceGroupsMinus1               uint
	SliceGroupMapType                  uint
	RunLengthMinus1                    []uint // up to num_slice_groups_minus1, which is <= 7 in Baseline and Extended, 0 otheriwse
	TopLeft                            []uint
	BottomRight                        []uint
	SliceGroupChangeDirectionFlag      uint
	SliceGroupChangeRateMinus1         uint
	PicSizeInMapUnitsMinus1            uint
	SliceGroupID                       []uint
	NumRefIdxL0ActiveMinus1            uint
	NumRefIdxL1ActiveMinus1            uint
	WeightedPredFlag                   uint
	WeightedBipredIdc                  uint
	PicInitQpMinus26                   uint
	PicInitQsMinus26                   uint
	ChromaQpIndexOffset                uint
	DeblockingFilterControlPresentFlag uint
	ConstrainedIntraPredFlag           uint
	RedundantPicCntPresnetFlag         uint
}

PPSInfo ...

func ParsePPS

func ParsePPS(data []byte) (pps PPSInfo, err error)

ParsePPS ...

type SEIInfo

type SEIInfo struct {
	ForbiddenZeroBit uint
	NalRefIdc        uint
	NalUnitType      uint
	PayloadType      uint
	PayloadSize      uint

	// PayloadType == 5
	UUID     []byte
	UserData []byte

	// PayloadType == 242
	Ts   uint64
	Data []byte
}

SEIInfo ...

func ParseSEI

func ParseSEI(data []byte) (sei SEIInfo, err error)

ParseSEI ...

type SPSInfo

type SPSInfo struct {
	Id               uint
	ForbiddenZeroBit uint
	NalRefIdc        uint
	NalUnitType      uint

	ConstraintSetFlag []uint

	ProfileIdc        uint
	LevelIdc          uint
	SeqParameterSetID uint

	ChromaFormatIdc                 uint
	SeparateColourPlaneFlag         uint
	BitDepthLumaMinus8              uint
	BitDepthChromaMinus8            uint
	QpprimeYZeroTransformBypassFlag uint
	SeqScalingMatrixPresentFlag     uint
	SeqScalingListPresentFlag       []uint

	Log2MaxFrameNumMinus4          uint
	PicOrderCntType                uint
	Log2MaxPicOrderCntLsbMinus4    uint
	DeltaPicOrderAlwaysZeroFlag    uint
	OffsetForNonRefPic             uint
	OffsetForTopToBottomField      uint
	NumRefFramesInPicOrderCntCycle uint
	MaxNumRefFrames                uint
	GapsInFrameNumValueAllowedFlag uint

	PicWidthInMbsMinus1       uint
	PicHeightInMapUnitsMinus1 uint
	MbAdaptiveFrameFieldFlag  uint
	Direct8x8InferenceFlag    uint

	FrameMbsOnlyFlag  uint
	FrameCroppingFlag uint

	CropLeft   uint
	CropRight  uint
	CropTop    uint
	CropBottom uint

	MbWidth  uint
	MbHeight uint

	Width  uint
	Height uint

	VuiParametersPresentFlag uint

	VuiParameters

	FPS uint
}

SPSInfo ...

func ParseSPS

func ParseSPS(data []byte) (sps SPSInfo, err error)

ParseSPS ...

type SliceType

type SliceType uint

func ParseSliceHeaderFromNALU

func ParseSliceHeaderFromNALU(packet []byte) (sliceType SliceType, err error)

func (SliceType) String

func (self SliceType) String() string

type VuiParameters

type VuiParameters struct {
	AspectRatioInfoPresentFlag     uint
	AspectRatioIdc                 uint
	SarWidth                       uint
	SarHeight                      uint
	OverscanInfoPresentFlag        uint
	OverscanAppropriateFlag        uint
	VideoSignalTypePresentFlag     uint
	VideoFormat                    uint
	VideoFullRangeRlag             uint
	ColourDescriptionPresentFlag   uint
	ColourPrimaries                uint
	TransferCharacteristics        uint
	MatrixCoefficients             uint
	ChromaLocInfoPresentFlag       uint
	ChromaSampleLocTypeTopField    uint
	ChromaSampleLocTypeBottomField uint
	TimingInfoPresentFlag          uint
	NumUnitsInTick                 uint
	TimeScale                      uint
	FixedFrameRateFlag             uint
	FPS                            uint
}

VuiParameters ...

Jump to

Keyboard shortcuts

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