mp4

package
v1.1.3 Latest Latest
Warning

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

Go to latest
Published: Jun 1, 2022 License: OSL-3.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// EncModeSegment - only encode boxes that are part of Init and MediaSegments
	EncModeSegment = EncFragFileMode(0)
	// EncModeBoxTree - encode all boxes in file tree
	EncModeBoxTree = EncFragFileMode(1)
)
View Source
const (
	// OptimizeNone - no optimization
	OptimizeNone = EncOptimize(0)
	// OptimizeTrun - optimize trun box by moving default values to tfhd
	OptimizeTrun = EncOptimize(1 << 0)
)
View Source
const TrunDataOffsetPresentFlag uint32 = 0x01
View Source
const TrunFirstSampleFlagsPresentFlag uint32 = 0x04
View Source
const TrunSampleCompositionTimeOffsetPresentFlag uint32 = 0x800
View Source
const TrunSampleDurationPresentFlag uint32 = 0x100
View Source
const TrunSampleFlagsPresentFlag uint32 = 0x400
View Source
const TrunSampleSizePresentFlag uint32 = 0x200
View Source
const UseSubSampleEncryption = 0x2

UseSubSampleEncryption - flag for subsample encryption

Variables

View Source
var AC3SampleRates = []int{48000, 44100, 32000}

AC3SampleRates - Sample rates as defined in ETSI TS 102 366 V1.4.1 (2017) section 4.4.1.3 Signaled in fscod - Sample rate code - 2 bits

Functions

func DecryptBytesCTR

func DecryptBytesCTR(data []byte, key []byte, iv []byte) ([]byte, error)

DecryptBytesCTR - decrypt or encrypt sample using CTR mode, provided key, iv and sumsamplePattern

func DecryptSampleCenc

func DecryptSampleCenc(sample []byte, key []byte, iv []byte, subSamplePatterns []SubSamplePattern) ([]byte, error)

DecryptSampleCenc - decrypt cenc-mode encrypted sample

func EncodeContainer

func EncodeContainer(c ContainerBox, w io.Writer) error

EncodeContainer - marshal container c to w

func EncodeHeader

func EncodeHeader(b Box, w io.Writer) error

EncodeHeader - encode a box header to a writer

func EncodeHeaderSW

func EncodeHeaderSW(b Box, sw mp4ff.SliceWriter) error

EncodeHeaderSW - encode a box header to a SliceWriter

func EncodeHeaderWithSize

func EncodeHeaderWithSize(boxType string, boxSize uint64, largeSize bool, w io.Writer) error

EncodeHeaderWithSize - encode a box header to a writer and allow for largeSize

func EncodeHeaderWithSizeSW

func EncodeHeaderWithSizeSW(boxType string, boxSize uint64, largeSize bool, sw mp4ff.SliceWriter) error

EncodeHeaderWithSize - encode a box header to a writer and allow for largeSize

Types

type Box

type Box interface {
	// Type of box, normally 4 asccii characters, but is uint32 according to spec
	Type() string
	// Size of box including header and all children if any
	Size() uint64
	// Encode box to writer
	Encode(w io.Writer) error
}

Box is the general interface to any ISOBMFF box or similar

func DecodeBox

func DecodeBox(startPos uint64, r io.Reader) (Box, error)

func DecodeBoxSR

func DecodeBoxSR(startPos uint64, sr mp4ff.SliceReader) (Box, error)

DecodeBoxSR - decode a box from SliceReader

func DecodeClapSR

func DecodeClapSR(hdr BoxHeader, startPos uint64, sr mp4ff.SliceReader) (Box, error)

DecodeClapSR - box-specific decode

func DecodeContainerChildrenSR

func DecodeContainerChildrenSR(hdr *BoxHeader, startPos, endPos uint64, sr mp4ff.SliceReader) ([]Box, error)

DecodeContainerChildren decodes a container box

func DecodeMdat

func DecodeMdat(hdr *BoxHeader, startPos uint64, r io.Reader) (Box, error)

DecodeMdat - box-specific decode

func DecodeMoof

func DecodeMoof(hdr *BoxHeader, startPos uint64, r io.Reader) (Box, error)

func DecodeMoofSR

func DecodeMoofSR(hdr *BoxHeader, startPos uint64, sr mp4ff.SliceReader) (Box, error)

DecodeMoofSR - box-specific decode

func DecodeSencSR

func DecodeSencSR(hdr *BoxHeader, startPos uint64, sr mp4ff.SliceReader) (Box, error)

DecodeSencSR - box-specific decode

func DecodeTfdtSR

func DecodeTfdtSR(hdr *BoxHeader, startPos uint64, sr mp4ff.SliceReader) (Box, error)

DecodeTfdtSR - box-specific decode

func DecodeTfhd

func DecodeTfhd(hdr *BoxHeader, startPos uint64, r io.Reader) (Box, error)

DecodeTfhd - box-specific decode

func DecodeTfhdSR

func DecodeTfhdSR(hdr *BoxHeader, startPos uint64, sr mp4ff.SliceReader) (Box, error)

DecodeTfhdSR - box-specific decode

func DecodeTrafSR

func DecodeTrafSR(hdr *BoxHeader, startPos uint64, sr mp4ff.SliceReader) (Box, error)

DecodeTrafSR - box-specific decode

func DecodeTrunSR

func DecodeTrunSR(hdr *BoxHeader, startPos uint64, sr mp4ff.SliceReader) (Box, error)

DecodeTrun - box-specific decode

func DecodeUnknown

func DecodeUnknown(hdr *BoxHeader, startPos uint64, r io.Reader) (Box, error)

DecodeUnknown - decode an unknown box

func DecodeUnknownSR

func DecodeUnknownSR(hdr *BoxHeader, startPos uint64, sr mp4ff.SliceReader) (Box, error)

DecodeUnknown - decode an unknown box

type BoxDecoder

type BoxDecoder func(hdr BoxHeader, startPos uint64, r io.Reader) (Box, error)

BoxDecoder is function signature of the Box Decode method

type BoxDecoderSR

type BoxDecoderSR func(hdr BoxHeader, startPos uint64, sw mp4ff.SliceReader) (Box, error)

BoxDecoderSR is function signature of the Box DecodeSR method

type BoxHeader

type BoxHeader struct {
	Name   string
	Size   uint64
	Hdrlen int
}

BoxHeader - 8 or 16 bytes depending on size

func DecodeHeader

func DecodeHeader(r io.Reader) (*BoxHeader, error)

DecodeHeader decodes a box header (size + box type + possiible largeSize)

func DecodeHeaderSR

func DecodeHeaderSR(sr mp4ff.SliceReader) (*BoxHeader, error)

DecodeHeaderSR - decode a box header (size + box type + possible largeSize) from sr

type BoxStructure

type BoxStructure interface {
	Encode(w io.Writer) error
}

BoxStructure represent a box or similar entity such as a Segment

type BtrtBox

type BtrtBox struct {
	BufferSizeDB uint32
	MaxBitrate   uint32
	AvgBitrate   uint32
}

BtrtBox - BitRateBox - ISO/IEC 14496-12 Section 8.5.2.2

func (*BtrtBox) Encode

func (b *BtrtBox) Encode(w io.Writer) error

Encode - write box to w

func (*BtrtBox) EncodeSW

func (b *BtrtBox) EncodeSW(sw mp4ff.SliceWriter) error

EncodeSW - box-specific encode to slicewriter

func (*BtrtBox) Size

func (b *BtrtBox) Size() uint64

Size - return calculated size

func (*BtrtBox) Type

func (b *BtrtBox) Type() string

Type - return box type

type CTooBox

type CTooBox struct {
	Children []Box
}

CTooBox - ©too box defines the ffmpeg encoding tool information

type ClapBox

type ClapBox struct {
	CleanApertureWidthN  uint32
	CleanApertureWidthD  uint32
	CleanApertureHeightN uint32
	CleanApertureHeightD uint32
	HorizOffN            uint32
	HorizOffD            uint32
	VertOffN             uint32
	VertOffD             uint32
}

ClapBox - Clean Aperture Box, ISO/IEC 14496-12 2020 Sec. 12.1.4

func (*ClapBox) Encode

func (b *ClapBox) Encode(w io.Writer) error

Encode - write box to w

func (*ClapBox) EncodeSW

func (b *ClapBox) EncodeSW(sw mp4ff.SliceWriter) error

EncodeSW - box-specific encode to slicewriter

func (*ClapBox) Size

func (b *ClapBox) Size() uint64

Size - calculated size of box

func (*ClapBox) Type

func (b *ClapBox) Type() string

Type - box type

type Co64Box

type Co64Box struct {
	Version     byte
	Flags       uint32
	ChunkOffset []uint64
}

Co64Box - Chunk Large Offset Box

Contained in : Sample Table box (stbl)

64-bit version of StcoBox

func (*Co64Box) Size

func (b *Co64Box) Size() uint64

Size - box-specific size

func (*Co64Box) Type

func (b *Co64Box) Type() string

Type - box-specific type

type ContainerBox

type ContainerBox interface {
	Encode(w io.Writer) error
	GetChildren() []Box
	Size() uint64
	Type() string
}

ContainerBox is interface for ContainerBoxes

type CttsBox

type CttsBox struct {
	Version      byte
	Flags        uint32
	SampleCount  []uint32
	SampleOffset []int32 // int32 to handle version 1
}

CttsBox - Composition Time to Sample Box (ctts - optional)

Contained in: Sample Table Box (stbl)

type DataBox

type DataBox struct {
	Data []byte
}

DataBox - data box used by ffmpeg for providing information.

func (*DataBox) Size

func (b *DataBox) Size() uint64

Size - calculated size of box

func (*DataBox) Type

func (b *DataBox) Type() string

Type - box type

type DecFileMode

type DecFileMode byte

DecFileMode - mode for decoding file

const (
	// DecModeNormal - read Mdat data into memory during file decoding.
	DecModeNormal DecFileMode = iota
	// DecModeLazyMdat - do not read mdat data into memory.
	// Thus, decode process requires less memory and faster.
	DecModeLazyMdat
)

type EncFragFileMode

type EncFragFileMode byte

EncFragFileMode - mode for writing file

type EncOptimize

type EncOptimize uint32

EncOptimize - encoder optimization mode

type File

type File struct {
	Segments []*MediaSegment // Media segments
	// contains filtered or unexported fields
}

func DecodeFile

func DecodeFile(r io.Reader) (*File, error)

func (*File) AddChild

func (f *File) AddChild(box Box, boxStartPos uint64)

AddChild - add child with start position

func (*File) AddMediaSegment

func (f *File) AddMediaSegment(m *MediaSegment)

AddMediaSegment - add a mediasegment to file f

func (*File) IsFragmented

func (f *File) IsFragmented() bool

IsFragmented - is file made of multiple segments (Mp4 fragments)

func (*File) LastSegment

func (f *File) LastSegment() *MediaSegment

LastSegment - Currently last segment

type Fragment

type Fragment struct {
	Moof     *MoofBox
	Mdat     *MdatBox
	Children []Box // All top-level boxes in order

	EncOptimize EncOptimize // Bit field with optimizations being done at encoding
	// contains filtered or unexported fields
}

Fragment - MP4 Fragment ([prft] + moof + mdat)

func NewFragment

func NewFragment() *Fragment

NewFragment - New empty one-track MP4 Fragment

func (*Fragment) AddChild

func (f *Fragment) AddChild(b Box)

AddChild - Add a top-level box to Fragment

func (*Fragment) AddFullSample

func (f *Fragment) AddFullSample(s FullSample)

AddFullSample - add a full sample to the first (and only) trun of a track AddFullSampleToTrack is the more general function

func (*Fragment) AddSample

func (f *Fragment) AddSample(s Sample, baseMediaDecodeTime uint64)

AddSample - add a sample to the first (and only) trun of a track AddSampleToTrack is the more general function

func (*Fragment) AddSamples

func (f *Fragment) AddSamples(ss []Sample, baseMediaDecodeTime uint64)

AddSamples - add a slice of Sample to the first (and only) trun of a track

func (*Fragment) Encode

func (f *Fragment) Encode(w io.Writer) error

Encode - write fragment via writer

func (*Fragment) GetChildren

func (f *Fragment) GetChildren() []Box

GetChildren - return children boxes

func (*Fragment) GetFullSamples

func (f *Fragment) GetFullSamples() ([]FullSample, error)

GetFullSamples - Get full samples including media and accumulated time

func (*Fragment) SetTrunDataOffsets

func (f *Fragment) SetTrunDataOffsets()

SetTrunDataOffsets - set DataOffset in trun depending on size and writeOrder

func (*Fragment) Size

func (f *Fragment) Size() uint64

Size - return size of fragment including all boxes. Be aware that TrafBox.OptimizeTfhdTrun() can change size

type FullSample

type FullSample struct {
	Sample
	DecodeTime uint64 // Absolute decode time (offset + accumulated sample Dur)
	Data       []byte // Sample data
}

FullSample - include accumulated time and data. Times in mdhd timescale

type HdlrBox

type HdlrBox struct {
	Version              byte
	Flags                uint32
	PreDefined           uint32
	HandlerType          string
	Name                 string // Null-terminated UTF-8 string according to ISO/IEC 14496-12 Sec. 8.4.3.3
	LacksNullTermination bool   // This should be true, but we allow false as well
}

HdlrBox - Handler Reference Box (hdlr - mandatory)

Contained in: Media Box (mdia) or Meta Box (meta)

This box describes the type of data contained in the trak. HandlerType can be : "vide" (video track), "soun" (audio track), "subt" (subtitle track) Other types are: "hint" (hint track), "meta" (timed Metadata track), "auxv" (auxiliary video track). clcp (Closed Captions (QuickTime))

type InitializationVector

type InitializationVector []byte

InitializationVector (8 or 16 bytes)

type MdatBox

type MdatBox struct {
	StartPos  uint64
	Data      []byte
	DataParts [][]byte

	LargeSize bool
	// contains filtered or unexported fields
}

MdatBox - Media Data Box (mdat) The mdat box contains media chunks/samples. DataParts is to be able to gather output data without new allocations

func (*MdatBox) AddSampleData

func (m *MdatBox) AddSampleData(s []byte)

AddSampleData - a sample data to an mdat box

func (*MdatBox) AddSampleDataPart

func (m *MdatBox) AddSampleDataPart(s []byte)

AddSampleDataPart - add a data part (for output)

func (*MdatBox) DataLength

func (m *MdatBox) DataLength() uint64

DataLength - length of data stored in box either as one or multiple parts

func (*MdatBox) Encode

func (m *MdatBox) Encode(w io.Writer) error

Encode - write box to w. If m.lazyDataSize > 0, the mdat data needs to be written separately

func (*MdatBox) HeaderSize

func (m *MdatBox) HeaderSize() uint64

HeaderSize - 8 or 16 (bytes) depending o whether largeSize is used

func (*MdatBox) IsLazy

func (m *MdatBox) IsLazy() bool

IsLazy - is the mdat data handled lazily (with separate writer/reader).

func (*MdatBox) PayloadAbsoluteOffset

func (m *MdatBox) PayloadAbsoluteOffset() uint64

PayloadAbsoluteOffset - position of mdat payload start (works after header)

func (*MdatBox) Size

func (m *MdatBox) Size() uint64

Size - return calculated size, depending on largeSize set or not

func (*MdatBox) Type

func (m *MdatBox) Type() string

Type - return box type

type MediaSegment

type MediaSegment struct {
	EncOptimize EncOptimize
	Fragments   []*Fragment
}

MediaSegment - MP4 Media Segment

func NewMediaSegment

func NewMediaSegment() *MediaSegment

NewMediaSegment - create empty MediaSegment with CMAF styp box

func (*MediaSegment) AddFragment

func (s *MediaSegment) AddFragment(f *Fragment)

AddFragment - Add a fragment to a MediaSegment

func (*MediaSegment) Encode

func (s *MediaSegment) Encode(w io.Writer) error

Encode - Write MediaSegment via writer

func (*MediaSegment) LastFragment

func (s *MediaSegment) LastFragment() *Fragment

LastFragment - Currently last fragment

func (*MediaSegment) Size

func (s *MediaSegment) Size() uint64

Size - return size of media segment

type MoofBox

type MoofBox struct {
	Children []Box
	StartPos uint64
	Traf     *TrafBox // The first traf child box
	Trafs    []*TrafBox
}

MoofBox - Movie Fragment Box (moof)

Contains all meta-data. To be able to stream a file, the moov box should be placed before the mdat box.

func (*MoofBox) AddChild

func (m *MoofBox) AddChild(b Box) error

AddChild - add child box

func (*MoofBox) Encode

func (m *MoofBox) Encode(w io.Writer) error

Encode - write moof after updating trun dataoffset

func (*MoofBox) GetChildren

func (m *MoofBox) GetChildren() []Box

GetChildren - list of child boxes

func (*MoofBox) Size

func (m *MoofBox) Size() uint64

Size - returns calculated size

func (*MoofBox) Type

func (m *MoofBox) Type() string

Type - returns box type

type NmhdBox

type NmhdBox struct {
	Version byte
	Flags   uint32
}

NmhdBox - Null Media Header Box (nmhd - often used instead of sthd for subtitle tracks)

func (*NmhdBox) Encode

func (b *NmhdBox) Encode(w io.Writer) error

Encode - write box to w

func (*NmhdBox) EncodeSW

func (b *NmhdBox) EncodeSW(sw mp4ff.SliceWriter) error

EncodeSW - box-specific encode to slicewriter

func (*NmhdBox) Size

func (b *NmhdBox) Size() uint64

Size - calculated size of box

func (*NmhdBox) Type

func (b *NmhdBox) Type() string

Type - box-specific type

type PiffData

type PiffData []byte

type Sample

type Sample struct {
	Flags                 uint32 // interpreted as SampleFlags
	Dur                   uint32 // Sample duration in mdhd timescale
	Size                  uint32 // Size of sample data
	CompositionTimeOffset int32  // Signed composition time offset
}

Sample - sample as used in trun box (mdhd timescale)

type SampleGroupEntry

type SampleGroupEntry interface {
	// Type - GroupingType SampleGroupEntry (uint32 according to spec)
	Type() string // actually
	// Size of SampleGroup Entry
	Size() uint64
	// Encode SampleGroupEntry to SliceWriter
	Encode(sw mp4ff.SliceWriter)
}

SampleGroupEntry - like a box, but size and type are not in a header

type SampleGroupEntryDecoder

type SampleGroupEntryDecoder func(name string, length uint32, sr mp4ff.SliceReader) (SampleGroupEntry, error)

SampleGroupEntryDecoder is function signature of the SampleGroupEntry Decode method

type SampleInterval

type SampleInterval struct {
	FirstDecodeTime uint64
	Samples         []Sample
	OffsetInMdat    uint32 // Offset relative start of mdat box
	Size            uint32 // total size of all samples in interval
	Data            []byte // If set, should be relevant mdat range
}

SampleInterval - an interval of samples including reference to or concatenated binary media data

type SencBox

type SencBox struct {
	Version byte

	Flags       uint32
	SampleCount uint32
	StartPos    uint64

	IVs        []InitializationVector // 8 or 16 bytes if present
	SubSamples [][]SubSamplePattern
	// contains filtered or unexported fields
}

SencBox - Sample Encryption Box (senc) (in trak or traf box) Should only be decoded after saio and saiz provide relevant offset and sizes Here we make a two-step decode, with first step reading, and other parsing. See ISO/IEC 23001-7 Section 7.2 and CMAF specification Full Box + SampleCount

func (*SencBox) Encode

func (s *SencBox) Encode(w io.Writer) error

Encode - write box to w

func (*SencBox) EncodeSW

func (s *SencBox) EncodeSW(sw mp4ff.SliceWriter) error

EncodeSW - box-specific encode to slicewriter

func (*SencBox) GetPerSampleIVSize

func (s *SencBox) GetPerSampleIVSize() int

GetPerSampleIVSize - return perSampleIVSize

func (*SencBox) ParseReadBox

func (s *SencBox) ParseReadBox(perSampleIVSize byte) error

ParseReadBox - second phase when perSampleIVSize should be known from tenc or sgpd boxes if perSampleIVSize is 0, we try to find the appropriate error given data length

func (*SencBox) Size

func (s *SencBox) Size() uint64

Size - box-specific type

func (*SencBox) Type

func (s *SencBox) Type() string

Type - box-specific type

type SencSample

type SencSample struct {
	IV         InitializationVector // 0,8,16 byte length
	SubSamples []SubSamplePattern
}

SencSample - sample in SencBox

type SgpdBox

type SgpdBox struct {
	DefaultGroupDescriptionIndex uint32
	DefaultLength                uint32
	DescriptionLengths           []uint32
	Flags                        uint32
	GroupingType                 string // uint32, but takes values such as seig
	SampleGroupEntries           []SampleGroupEntry
	Version                      byte
}

SgpdBox - Sample Group Description Box, ISO/IEC 14496-12 6'th edition 2020 Section 8.9.3 Version 0 is deprecated

type SubSamplePattern

type SubSamplePattern struct {
	BytesOfClearData     uint16
	BytesOfProtectedData uint32
}

SubSamplePattern - pattern of subsample encryption

type TfdtBox

type TfdtBox struct {
	Version             byte
	Flags               uint32
	BaseMediaDecodeTime uint64
}

TfdtBox - Track Fragment Decode Time (tfdt)

Contained in : Track Fragment box (traf)

func (*TfdtBox) Encode

func (t *TfdtBox) Encode(w io.Writer) error

Encode - write box to w

func (*TfdtBox) EncodeSW

func (t *TfdtBox) EncodeSW(sw mp4ff.SliceWriter) error

EncodeSW - box-specific encode to slicewriter

func (*TfdtBox) SetBaseMediaDecodeTime

func (t *TfdtBox) SetBaseMediaDecodeTime(bTime uint64)

SetBaseMediaDecodeTime - Set time of TfdtBox

func (*TfdtBox) Size

func (t *TfdtBox) Size() uint64

Size - return calculated size

func (*TfdtBox) Type

func (t *TfdtBox) Type() string

Type - return box type

type TfhdBox

type TfhdBox struct {
	Version                byte
	Flags                  uint32
	TrackID                uint32
	BaseDataOffset         uint64
	SampleDescriptionIndex uint32
	DefaultSampleDuration  uint32
	DefaultSampleSize      uint32
	DefaultSampleFlags     uint32
}

TfhdBox - Track Fragment Header Box (tfhd)

Contained in : Track Fragment box (traf))

func CreateTfhd

func CreateTfhd(trackID uint32) *TfhdBox

CreateTfhd - Create a new TfdtBox with baseMediaDecodeTime

func (*TfhdBox) DefaultBaseIfMoof

func (t *TfhdBox) DefaultBaseIfMoof() bool

DefaultBaseIfMoof - interpreted flags value

func (*TfhdBox) DurationIsEmpty

func (t *TfhdBox) DurationIsEmpty() bool

DurationIsEmpty - interpreted flags value

func (*TfhdBox) Encode

func (t *TfhdBox) Encode(w io.Writer) error

Encode - write box to w

func (*TfhdBox) EncodeSW

func (t *TfhdBox) EncodeSW(sw mp4ff.SliceWriter) error

EncodeSW - box-specific encode to slicewriter

func (*TfhdBox) HasBaseDataOffset

func (t *TfhdBox) HasBaseDataOffset() bool

HasBaseDataOffset - interpreted flags value

func (*TfhdBox) HasDefaultSampleDuration

func (t *TfhdBox) HasDefaultSampleDuration() bool

HasDefaultSampleDuration - interpreted flags value

func (*TfhdBox) HasDefaultSampleFlags

func (t *TfhdBox) HasDefaultSampleFlags() bool

HasDefaultSampleFlags - interpreted flags value

func (*TfhdBox) HasDefaultSampleSize

func (t *TfhdBox) HasDefaultSampleSize() bool

HasDefaultSampleSize - interpreted flags value

func (*TfhdBox) HasSampleDescriptionIndex

func (t *TfhdBox) HasSampleDescriptionIndex() bool

HasSampleDescriptionIndex - interpreted flags value

func (*TfhdBox) Size

func (t *TfhdBox) Size() uint64

Size - returns calculated size

func (*TfhdBox) Type

func (t *TfhdBox) Type() string

Type - returns box type

type TrafBox

type TrafBox struct {
	Children []Box
	Senc     *SencBox
	Sgpd     *SgpdBox
	Tfdt     *TfdtBox
	Tfhd     *TfhdBox
	Trun     *TrunBox // The first TrunBox
	Truns    []*TrunBox
}

TrafBox - Track Fragment Box (traf)

Contained in : Movie Fragment Box (moof)

func (*TrafBox) AddChild

func (t *TrafBox) AddChild(b Box) error

AddChild - add child box

func (*TrafBox) ContainsSencBox

func (t *TrafBox) ContainsSencBox() (ok, parsed bool)

ContainsSencBox - is there a senc box in traf and is it parsed If not parsed, call ParseReadSenc to parse it

func (*TrafBox) Encode

func (t *TrafBox) Encode(w io.Writer) error

Encode - write box to w

func (*TrafBox) GetChildren

func (t *TrafBox) GetChildren() []Box

GetChildren - list of child boxes

func (*TrafBox) ParseReadSenc

func (t *TrafBox) ParseReadSenc(defaultIVSize byte, moofStartPos uint64) error

func (*TrafBox) RemoveEncryptionBoxes

func (t *TrafBox) RemoveEncryptionBoxes() uint64

RemoveEncryptionBoxes - remove encryption boxes and return number of bytes removed

func (*TrafBox) Size

func (t *TrafBox) Size() uint64

Size - return calculated size

func (*TrafBox) Type

func (t *TrafBox) Type() string

Type - return box type

type TrunBox

type TrunBox struct {
	Version byte
	Flags   uint32

	DataOffset int32

	Samples []Sample
	// contains filtered or unexported fields
}

TrunBox - Track Fragment Run Box (trun)

Contained in : Track Fragmnet Box (traf)

func (*TrunBox) AddSample

func (t *TrunBox) AddSample(s Sample)

AddSample - add a Sample

func (*TrunBox) AddSampleDefaultValues

func (t *TrunBox) AddSampleDefaultValues(tfhd *TfhdBox) (totalDur uint64)

AddSampleDefaultValues - add values from tfhd and trex boxes if needed Return total duration

func (*TrunBox) AddSamples

func (t *TrunBox) AddSamples(s []Sample)

AddSamples - add a a slice of Sample

func (*TrunBox) Encode

func (t *TrunBox) Encode(w io.Writer) error

Encode - write box to w

func (*TrunBox) EncodeSW

func (t *TrunBox) EncodeSW(sw mp4ff.SliceWriter) error

EncodeSW - box-specific encode to slicewriter

func (*TrunBox) GetFullSamples

func (t *TrunBox) GetFullSamples(offsetInMdat uint32, baseDecodeTime uint64, mdat *MdatBox) []FullSample

GetFullSamples - get all sample data including accumulated time and binary media data offsetInMdat is offset in mdat data (data normally starts 8 or 16 bytes after start of mdat box) baseDecodeTime is decodeTime in tfdt in track timescale (timescale in mfhd) To fill missing individual values from tfhd and trex defaults, call trun.AddSampleDefaultValues() before this call

func (*TrunBox) HasDataOffset

func (t *TrunBox) HasDataOffset() bool

HasDataOffset - interpreted dataOffsetPresent flag

func (*TrunBox) HasFirstSampleFlags

func (t *TrunBox) HasFirstSampleFlags() bool

HasFirstSampleFlags - interpreted firstSampleFlagsPresent flag

func (*TrunBox) HasSampleCompositionTimeOffset

func (t *TrunBox) HasSampleCompositionTimeOffset() bool

HasSampleCompositionTimeOffset - interpreted sampleCompositionTimeOffset flag

func (*TrunBox) HasSampleDuration

func (t *TrunBox) HasSampleDuration() bool

HasSampleDuration - interpreted sampleDurationPresent flag

func (*TrunBox) HasSampleFlags

func (t *TrunBox) HasSampleFlags() bool

HasSampleFlags - interpreted sampleFlagsPresent flag

func (*TrunBox) HasSampleSize

func (t *TrunBox) HasSampleSize() bool

HasSampleSize - interpreted sampleSizePresent flag

func (*TrunBox) SampleCount

func (t *TrunBox) SampleCount() uint32

SampleCount - return how many samples are defined

func (*TrunBox) SetFirstSampleFlags

func (t *TrunBox) SetFirstSampleFlags(flags uint32)

SetFirstSampleFlags - set firstSampleFlags and bit indicating its presence

func (*TrunBox) Size

func (t *TrunBox) Size() uint64

Size - return calculated size

func (*TrunBox) SizeOfData

func (t *TrunBox) SizeOfData() (totalSize uint64)

SizeOfData - size of mediasamples in bytes

func (*TrunBox) Type

func (t *TrunBox) Type() string

Type - return box type

type UnknownBox

type UnknownBox struct {
	// contains filtered or unexported fields
}

UnknownBox - box that we don't know how to parse

func (*UnknownBox) Encode

func (b *UnknownBox) Encode(w io.Writer) error

Encode - write box to w

func (*UnknownBox) EncodeSW

func (b *UnknownBox) EncodeSW(sw mp4ff.SliceWriter) error

EncodeSW - box-specific encode to slicewriter

func (*UnknownBox) Size

func (b *UnknownBox) Size() uint64

Size - return calculated size

func (*UnknownBox) Type

func (b *UnknownBox) Type() string

Type - return box type

type VmhdBox

type VmhdBox struct {
	Version      byte
	Flags        uint32
	GraphicsMode uint16
	OpColor      [3]uint16
}

VmhdBox - Video Media Header Box (vhmd - mandatory for video tracks)

Contained in : Media Information Box (minf)

Jump to

Keyboard shortcuts

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