Package sofia (v1.13.8) [up] [repository]

Index

Functions

func DecryptSample(sample []byte, info *SampleEncryptionInfo, block cipher.Block)

--- Logic ---

Types

type Box

--- Box ---

type Box struct {
	Moov *MoovBox
	Moof *MoofBox
	Mdat *MdatBox
	Sidx *SidxBox
	Pssh *PsshBox
	Raw  []byte
}

Functions

func Parse(data []byte) ([]Box, error)

Methods

func (b *Box) Encode() []byte

type BoxHeader

--- BoxHeader ---

type BoxHeader struct {
	Size uint32
	Type [4]byte
}

Methods

func (h *BoxHeader) Parse(data []byte) error
func (h *BoxHeader) Put(buffer []byte)

type Co64Box

--- CO64 ---

type Co64Box struct {
	Header  BoxHeader
	Offsets []uint64
}

Methods

func (b *Co64Box) Encode() []byte

type CttsBox

type CttsBox struct {
	Header  BoxHeader
	Entries []CttsEntry
}

Methods

func (b *CttsBox) Encode() []byte

type CttsEntry

--- CTTS ---

type CttsEntry struct {
	SampleCount  uint32
	SampleOffset int32
}

type EncBox

--- ENC (Encrypted Sample Entry) ---

type EncBox struct {
	Header      BoxHeader
	EntryHeader []byte
	Sinf        *SinfBox
	RawChildren [][]byte
}

Methods

func (b *EncBox) Encode() []byte
func (b *EncBox) Parse(data []byte) error
func (b *EncBox) Unprotect() error

type FrmaBox

--- FRMA ---

type FrmaBox struct {
	Header     BoxHeader
	DataFormat [4]byte
}

Methods

func (b *FrmaBox) Parse(data []byte) error

type MdatBox

--- MDAT ---

type MdatBox struct {
	Header  BoxHeader
	Payload []byte
}

Methods

func (b *MdatBox) Parse(data []byte) error

type MdhdBox

--- MDHD ---

type MdhdBox struct {
	Header           BoxHeader
	Version          byte
	Flags            [3]byte
	CreationTime     uint64
	ModificationTime uint64
	Timescale        uint32
	Duration         uint64
	Language         [2]byte
	Quality          [2]byte
}

Methods

func (b *MdhdBox) Encode() []byte
func (b *MdhdBox) Parse(data []byte) error
func (b *MdhdBox) SetDuration(duration uint64)

type MdiaBox

--- MDIA ---

type MdiaBox struct {
	Header      BoxHeader
	Mdhd        *MdhdBox
	Minf        *MinfBox
	RawChildren [][]byte
}

Methods

func (b *MdiaBox) Encode() []byte
func (b *MdiaBox) Parse(data []byte) error

type MinfBox

--- MINF ---

type MinfBox struct {
	Header      BoxHeader
	Stbl        *StblBox
	RawChildren [][]byte
}

Methods

func (b *MinfBox) Encode() []byte
func (b *MinfBox) Parse(data []byte) error

type MoofBox

--- MOOF ---

type MoofBox struct {
	Header      BoxHeader
	Traf        *TrafBox
	Pssh        []*PsshBox
	RawChildren [][]byte
}

Methods

func (b *MoofBox) Parse(data []byte) error

type MoovBox

--- MOOV ---

type MoovBox struct {
	Header      BoxHeader
	Mvhd        *MvhdBox
	Trak        []*TrakBox
	Pssh        []*PsshBox
	RawChildren [][]byte
}

Functions

func FindMoov(boxes []Box) (*MoovBox, bool)

--- Finders ---

Methods

func (b *MoovBox) Encode() []byte
func (b *MoovBox) FindPssh(systemID []byte) (*PsshBox, bool)
func (b *MoovBox) IsAudio() bool

IsAudio checks the handler type within the first track to determine if it's audio.

func (b *MoovBox) Parse(data []byte) error
func (b *MoovBox) RemoveMvex()
func (b *MoovBox) RemovePssh()

type MvhdBox

--- MVHD ---

type MvhdBox struct {
	Header           BoxHeader
	Version          byte
	Flags            [3]byte
	CreationTime     uint64
	ModificationTime uint64
	Timescale        uint32
	Duration         uint64
	RemainingData    []byte
}

Methods

func (b *MvhdBox) Encode() []byte
func (b *MvhdBox) Parse(data []byte) error
func (b *MvhdBox) SetDuration(duration uint64)

type PsshBox

--- PSSH ---

type PsshBox struct {
	Header   BoxHeader
	Version  byte
	Flags    [3]byte
	SystemID [16]byte
	KIDs     [][16]byte
	Data     []byte
}

Methods

func (b *PsshBox) Parse(data []byte) error

type RemuxSample

type RemuxSample struct {
	Size                  uint32
	Duration              uint32
	IsSync                bool
	CompositionTimeOffset int32
}

type Remuxer

type Remuxer struct {
	Writer io.WriteSeeker
	Moov   *MoovBox

	OnSample func(sample []byte, encInfo *SampleEncryptionInfo)
	// contains filtered or unexported fields
}

Methods

func (r *Remuxer) AddSegment(segmentData []byte) error
func (r *Remuxer) Finish() error
func (r *Remuxer) Initialize(initSegment []byte) error

type SampleEncryptionInfo

type SampleEncryptionInfo struct {
	IV         []byte
	Subsamples []SubsampleInfo
}

type SampleInfo

--- TRUN ---

type SampleInfo struct {
	Size                  uint32
	Duration              uint32
	Flags                 uint32
	CompositionTimeOffset int32
}

type SchiBox

--- SCHI (Scheme Information) ---

type SchiBox struct {
	Header      BoxHeader
	Tenc        *TencBox
	RawChildren [][]byte
}

Methods

func (b *SchiBox) Parse(data []byte) error

type SencBox

type SencBox struct {
	Header  BoxHeader
	Flags   uint32
	Samples []SampleEncryptionInfo
}

Methods

func (b *SencBox) Parse(data []byte) error

type SidxBox

type SidxBox struct {
	Header                   BoxHeader
	Version                  byte
	Flags                    uint32
	ReferenceID              uint32
	Timescale                uint32
	EarliestPresentationTime uint64
	FirstOffset              uint64
	References               []SidxReference
}

Functions

func FindSidx(boxes []Box) (*SidxBox, bool)

Methods

func (b *SidxBox) Parse(data []byte) error

type SidxReference

--- SIDX ---

type SidxReference struct {
	ReferenceType      bool
	ReferencedSize     uint32
	SubsegmentDuration uint32
	StartsWithSAP      bool
	SAPType            uint8
	SAPDeltaTime       uint32
}

type SinfBox

--- SINF ---

type SinfBox struct {
	Header      BoxHeader
	Frma        *FrmaBox
	Schi        *SchiBox
	RawChildren [][]byte
}

Methods

func (b *SinfBox) Parse(data []byte) error

type StblBox

--- STBL ---

type StblBox struct {
	Header      BoxHeader
	Stsd        *StsdBox
	RawChildren [][]byte
}

Methods

func (b *StblBox) Encode() []byte
func (b *StblBox) Parse(data []byte) error

type StcoBox

--- STCO ---

type StcoBox struct {
	Header  BoxHeader
	Offsets []uint32
}

Methods

func (b *StcoBox) Encode() []byte

type StscBox

type StscBox struct {
	Header  BoxHeader
	Entries []StscEntry
}

Methods

func (b *StscBox) Encode() []byte

type StscEntry

--- STSC ---

type StscEntry struct {
	FirstChunk             uint32
	SamplesPerChunk        uint32
	SampleDescriptionIndex uint32
}

type StsdBox

--- STSD ---

type StsdBox struct {
	Header       BoxHeader
	HeaderFields [8]byte // Ver(1)+Flags(3)+EntryCount(4)
	EncChildren  []*EncBox
	RawChildren  [][]byte
}

Methods

func (b *StsdBox) Encode() []byte
func (b *StsdBox) Parse(data []byte) error
func (b *StsdBox) Sinf() (*SinfBox, *BoxHeader, bool)
func (b *StsdBox) UnprotectAll() error

type StssBox

--- STSS ---

type StssBox struct {
	Header  BoxHeader
	Indices []uint32
}

Methods

func (b *StssBox) Encode() []byte

type StszBox

--- STSZ ---

type StszBox struct {
	Header      BoxHeader
	SampleSize  uint32
	SampleCount uint32
	EntrySizes  []uint32
}

Methods

func (b *StszBox) Encode() []byte

type SttsBox

type SttsBox struct {
	Header  BoxHeader
	Entries []SttsEntry
}

Methods

func (b *SttsBox) Encode() []byte

type SttsEntry

--- STTS ---

type SttsEntry struct {
	SampleCount    uint32
	SampleDuration uint32
}

type SubsampleInfo

--- SENC ---

type SubsampleInfo struct {
	BytesOfClearData     uint16
	BytesOfProtectedData uint32
}

type TencBox

--- TENC --- TencBox defines the Track Encryption Box ('tenc'), which contains default encryption parameters for a track. Specification: ISO/IEC 23001-7

type TencBox struct {
	Header                 BoxHeader
	Version                byte
	Flags                  uint32
	DefaultIsProtected     byte
	DefaultPerSampleIVSize byte
	DefaultKID             [16]byte
	DefaultConstantIVSize  byte   // Present if DefaultIsProtected=1 and DefaultPerSampleIVSize=0
	DefaultConstantIV      []byte // Present if DefaultIsProtected=1 and DefaultPerSampleIVSize=0
}

Methods

func (b *TencBox) Parse(data []byte) error

type TfhdBox

--- TFHD ---

type TfhdBox struct {
	Header                 BoxHeader
	Flags                  uint32
	TrackID                uint32
	BaseDataOffset         uint64
	SampleDescriptionIndex uint32
	DefaultSampleDuration  uint32
	DefaultSampleSize      uint32
	DefaultSampleFlags     uint32
}

Methods

func (b *TfhdBox) Parse(data []byte) error

type TrafBox

--- TRAF ---

type TrafBox struct {
	Header      BoxHeader
	Tfhd        *TfhdBox
	Trun        []*TrunBox
	Senc        *SencBox
	Tenc        *TencBox
	RawChildren [][]byte
}

Methods

func (b *TrafBox) Parse(data []byte) error

type TrakBox

--- TRAK ---

type TrakBox struct {
	Header      BoxHeader
	Mdia        *MdiaBox
	RawChildren [][]byte
}

Methods

func (b *TrakBox) Encode() []byte
func (b *TrakBox) Parse(data []byte) error
func (b *TrakBox) RemoveEdts()

type TrunBox

type TrunBox struct {
	Header           BoxHeader
	Flags            uint32
	SampleCount      uint32
	DataOffset       int32
	FirstSampleFlags uint32
	Samples          []SampleInfo
}

Methods

func (b *TrunBox) Parse(data []byte) error