Documentation
¶
Overview ¶
Package avc implements parsing of AVC(H.264) nal headers, slice headers and complete SPS and PPS.
Index ¶
- Constants
- Variables
- func ContainsNalType(sample []byte, specificNalType NalType) bool
- func ConvertByteStreamToNaluSample(stream []byte) []byte
- func ConvertSampleToByteStream(sample []byte) []byte
- func ExtractNalusFromByteStream(data []byte) [][]byte
- func GetParameterSets(sample []byte) (sps [][]byte, pps [][]byte)
- func HasParameterSets(b []byte) bool
- func IsIDRSample(sample []byte) bool
- type AVCDecConfRec
- type CpbEntry
- type HrdParameters
- type NalType
- type PPS
- type SPS
- type ScalingList
- type SliceType
- type VUIParameters
Constants ¶
const ( // NALU_NON_IDR - Non-IDR Slice NAL unit NALU_NON_IDR = NalType(1) // NALU_IDR - IDR Random Access Slice NAL Unit NALU_IDR = NalType(5) // NALU_SEI - Supplementary Enhancement Information NAL Unit NALU_SEI = NalType(6) // NALU_SSP - SequenceParameterSet NAL Unit NALU_SPS = NalType(7) // NALU_PPS - PictureParameterSet NAL Unit NALU_PPS = NalType(8) // NALU_AUD - AccessUnitDelimiter NAL Unit NALU_AUD = NalType(9) // NALU_EO_SEQ - End of Sequence NAL Unit NALU_EO_SEQ = NalType(10) // NALU_EO_STREAM - End of Stream NAL Unit NALU_EO_STREAM = NalType(11) // NALU_FILL - Filler NAL Unit NALU_FILL = NalType(12) )
Variables ¶
var ErrCannotParseAVCExtension = errors.New("Cannot parse SPS extensions")
var ErrInvalidSliceType = errors.New("Invalid slice type")
var ErrLengthSize = errors.New("Can only handle 4byte NAL length size")
var ErrNoSliceHeader = errors.New("No slice header")
var ErrNotPPS = errors.New("Not an PPS NAL unit")
var ErrNotSPS = errors.New("Not an SPS NAL unit")
var ErrTooFewBytesToParse = errors.New("Too few bytes to parse symbol")
Functions ¶
func ContainsNalType ¶ added in v0.14.0
ContainsNalType - is specificNalType present in sample
func ConvertByteStreamToNaluSample ¶ added in v0.14.0
ConvertByteStreamToNaluSample - Change start codes to 4-byte length fields
func ConvertSampleToByteStream ¶ added in v0.14.0
ConvertSampleToByteStream - Replace 4-byte NALU lengths with start codes
func ExtractNalusFromByteStream ¶ added in v0.14.0
ExtractNalusFromByteStream - extract NALUs without startcode from ByteStream
func GetParameterSets ¶ added in v0.15.0
GetParameterSets - get (multiple) SPS and PPS from a sample
func HasParameterSets ¶
HasParameterSets - Check if H.264 SPS and PPS are present
func IsIDRSample ¶ added in v0.14.0
IsIDRSample - does sample contain IDR NALU
Types ¶
type AVCDecConfRec ¶
type AVCDecConfRec struct {
AVCProfileIndication byte
ProfileCompatibility byte
AVCLevelIndication byte
SPSnalus [][]byte
PPSnalus [][]byte
ChromaFormat byte
BitDepthLumaMinus1 byte
BitDepthChromaMinus1 byte
NumSPSExt byte
NoTrailingInfo bool // To handle strange cases where trailing info is missing
}
AVCDecConfRec - AVCDecoderConfigurationRecord
func CreateAVCDecConfRec ¶
func CreateAVCDecConfRec(spsNALUs [][]byte, ppsNALUs [][]byte) (*AVCDecConfRec, error)
CreateAVCDecConfRec - Create an AVCDecConfRec based on SPS and PPS
func DecodeAVCDecConfRec ¶
func DecodeAVCDecConfRec(r io.Reader) (AVCDecConfRec, error)
DecodeAVCDecConfRec - decode an AVCDecConfRec
type HrdParameters ¶
type HrdParameters struct {
CpbCountMinus1 uint
BitRateScale uint
CpbSizeScale uint
CpbEntries []CpbEntry
InitialCpbRemovalDelayLengthMinus1 uint
CpbRemovalDelayLengthMinus1 uint
DpbOutpuDelayLengthMinus1 uint
TimeOffsetLength uint
}
HrdParameters inside VUI
type NalType ¶
type NalType uint16
NalType - AVC nal type
func FindNalTypes ¶
FindNalTypes - find list of nal types in sample
type PPS ¶ added in v0.12.0
type PPS struct {
PicParameterSetID uint
SeqParameterSetID uint
EntropyCodingModeFlag bool
BottomFieldPicOrderInFramePresentFlag bool
NumSliceGroupsMinus1 uint
SliceGroupMapType uint
RunLengthMinus1 []uint
TopLeft []uint
BottomRight []uint
SliceGroupChangeDirectionFlag bool
SliceGroupChangeRateMinus1 uint
PicSizeInMapUnitsMinus1 uint
SliceGroupId []uint
NumRefIdxI0DefaultActiveMinus1 uint
NumRefIdxI1DefaultActiveMinus1 uint
WeightedPredFlag bool
WeightedBipredIDC uint
PicInitQpMinus26 int
PicInitQsMinus26 int
ChromaQpIndexOffset int
DeblockingFilterControlPresentFlag bool
ConstrainedIntraPredFlag bool
RedundantPicCntPresentFlag bool
Transform8x8ModeFlag bool
PicScalingMatrixPresentFlag bool
PicScalingLists []ScalingList
SecondChromaQpIndexOffset int
}
type SPS ¶
type SPS struct {
Profile uint
ProfileCompatibility uint
Level uint
ParameterID uint
ChromaFormatIDC uint
SeparateColourPlaneFlag bool
BitDepthLumaMinus8 uint
BitDepthChromaMinus8 uint
QPPrimeYZeroTransformBypassFlag bool
SeqScalingMatrixPresentFlag bool
SeqScalingLists []ScalingList
Log2MaxFrameNumMinus4 uint
PicOrderCntType uint
Log2MaxPicOrderCntLsbMinus4 uint
DeltaPicOrderAlwaysZeroFlag bool
OffsetForNonRefPic uint
OffsetForTopToBottomField uint
RefFramesInPicOrderCntCycle []uint
NumRefFrames uint
GapsInFrameNumValueAllowedFlag bool
FrameMbsOnlyFlag bool
MbAdaptiveFrameFieldFlag bool
Direct8x8InferenceFlag bool
FrameCroppingFlag bool
FrameCropLeftOffset uint
FrameCropRightOffset uint
FrameCropTopOffset uint
FrameCropBottomOffset uint
Width uint
Height uint
NrBytesBeforeVUI int
NrBytesRead int
VUI *VUIParameters
}
SPS - AVC SPS parameters
func ParseSPSNALUnit ¶
ParseSPSNALUnit - Parse AVC SPS NAL unit starting with NAL header
func (*SPS) ConstraintFlags ¶
ConstraintFlags - return the four ConstraintFlag bits
type ScalingList ¶ added in v0.12.0
type ScalingList []int // 4x4 or 8x8 Scaling lists. Nil if not present
type SliceType ¶
type SliceType uint
func GetSliceTypeFromNAL ¶
GetSliceTypeFromNAL - parse slice header to get slice type in interval 0 to 4
type VUIParameters ¶
type VUIParameters struct {
SampleAspectRatioWidth uint
SampleAspectRatioHeight uint
OverscanInfoPresentFlag bool
OverscanAppropriateFlag bool
VideoSignalTypePresentFlag bool
VideoFormat uint
VideoFullRangeFlag bool
ColourDescriptionFlag bool
ColourPrimaries uint
TransferCharacteristics uint
MatrixCoefficients uint
ChromaLocInfoPresentFlag bool
ChromaSampleLocTypeTopField uint
ChromaSampleLocTypeBottomField uint
TimingInfoPresentFlag bool
NumUnitsInTick uint
TimeScale uint
FixedFrameRateFlag bool
NalHrdParametersPresentFlag bool
NalHrdParameters *HrdParameters
VclHrdParametersPresentFlag bool
VclHrdParameters *HrdParameters
LowDelayHrdFlag bool // Only present with HrdParameters
PicStructPresentFlag bool
BitstreamRestrictionFlag bool
MotionVectorsOverPicBoundariesFlag bool
MaxBytesPerPicDenom uint
MaxBitsPerMbDenom uint
Log2MaxMvLengthHorizontal uint
Log2MaxMvLengthVertical uint
MaxNumReorderFrames uint
MaxDecFrameBuffering uint
}
VUIParameters - extra parameters according to 14496-10, E.1