Documentation ¶
Index ¶
- type AudioSampleEntry
- type Box
- type BoxHeader
- type EncryptionSample
- type File
- type FullBoxHeader
- type Media
- type MediaData
- type MediaInformation
- type Movie
- type MovieFragment
- type OriginalFormat
- type ProtectionSchemeInfo
- type ProtectionSystemSpecificHeader
- type Range
- type Reference
- type RunSample
- type SampleDescription
- type SampleEncryption
- type SampleEntry
- type SampleTable
- type SegmentIndex
- type Subsample
- type Track
- type TrackFragment
- type TrackRun
- type Type
- type UUID
- type VisualSampleEntry
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AudioSampleEntry ¶
type AudioSampleEntry struct { SampleEntry SampleEntry Extends struct { ChannelCount uint16 SampleSize uint16 PreDefined uint16 SampleRate uint32 // contains filtered or unexported fields } Boxes []*Box ProtectionScheme ProtectionSchemeInfo }
ISO/IEC 14496-12
class AudioSampleEntry(codingname) extends SampleEntry(codingname) { const unsigned int(32)[2] reserved = 0; unsigned int(16) channelcount; template unsigned int(16) samplesize = 16; unsigned int(16) pre_defined = 0; const unsigned int(16) reserved = 0 ; template unsigned int(32) samplerate = { default samplerate of media}<<16; }
type Box ¶
ISO/IEC 14496-12
aligned(8) class Box ( unsigned int(32) boxtype, optional unsigned int(8)[16] extended_type ) { BoxHeader(boxtype, extended_type); // the remaining bytes are the BoxPayload }
type BoxHeader ¶
ISO/IEC 14496-12
aligned(8) class BoxHeader ( unsigned int(32) boxtype, optional unsigned int(8)[16] extended_type ) { unsigned int(32) size; unsigned int(32) type = boxtype; if (size==1) { unsigned int(64) largesize; } else if (size==0) { // box extends to end of file } if (boxtype=='uuid') { unsigned int(8)[16] usertype = extended_type; } }
type EncryptionSample ¶
type EncryptionSample struct { InitializationVector uint64 SubsampleCount uint16 Subsamples []Subsample }
func (EncryptionSample) DecryptCenc ¶ added in v1.1.4
func (e EncryptionSample) DecryptCenc(sample, key []byte) error
github.com/Eyevinn/mp4ff/blob/v0.40.2/mp4/crypto.go#L101
type File ¶
type File struct { Boxes []Box MediaData *MediaData Movie *Movie MovieFragment *MovieFragment SegmentIndex *SegmentIndex }
ISO/IEC 14496-12
type FullBoxHeader ¶
ISO/IEC 14496-12
aligned(8) class FullBoxHeader(unsigned int(8) v, bit(24) f) { unsigned int(8) version = v; bit(24) flags = f; }
type Media ¶ added in v1.2.3
type Media struct { BoxHeader BoxHeader Boxes []Box MediaInformation MediaInformation }
ISO/IEC 14496-12
aligned(8) class MediaBox extends Box('mdia') { }
type MediaData ¶ added in v1.2.3
type MediaData struct {
Box Box
}
ISO/IEC 14496-12
aligned(8) class MediaDataBox extends Box('mdat') { bit(8) data[]; }
type MediaInformation ¶ added in v1.2.3
type MediaInformation struct { BoxHeader BoxHeader Boxes []Box SampleTable SampleTable }
ISO/IEC 14496-12
aligned(8) class MediaInformationBox extends Box('minf') { }
type Movie ¶ added in v1.2.3
type Movie struct { BoxHeader BoxHeader Boxes []*Box Protection []ProtectionSystemSpecificHeader Track Track }
ISO/IEC 14496-12
aligned(8) class MovieBox extends Box('moov') { }
type MovieFragment ¶ added in v1.2.3
type MovieFragment struct { BoxHeader BoxHeader Boxes []Box TrackFragment TrackFragment }
ISO/IEC 14496-12
aligned(8) class MovieFragmentBox extends Box('moof') { }
type OriginalFormat ¶ added in v1.2.3
ISO/IEC 14496-12
aligned(8) class OriginalFormatBox(codingname) extends Box('frma') { unsigned int(32) data_format = codingname; // format of decrypted, encoded data (in case of protection) // or un-transformed sample entry (in case of restriction // and complete track information) }
type ProtectionSchemeInfo ¶ added in v1.2.3
type ProtectionSchemeInfo struct { BoxHeader BoxHeader Boxes []Box OriginalFormat OriginalFormat }
ISO/IEC 14496-12
aligned(8) class ProtectionSchemeInfoBox(fmt) extends Box('sinf') { OriginalFormatBox(fmt) original_format; SchemeTypeBox scheme_type_box; // optional SchemeInformationBox info; // optional }
type ProtectionSystemSpecificHeader ¶ added in v1.2.3
type ProtectionSystemSpecificHeader struct { BoxHeader BoxHeader FullBoxHeader FullBoxHeader SystemId UUID DataSize uint32 Data []uint8 }
ISO/IEC 23001-7
aligned(8) class ProtectionSystemSpecificHeaderBox extends FullBox( 'pssh', version, flags=0, ) { unsigned int(8)[16] SystemID; if (version > 0) { unsigned int(32) KID_count; { unsigned int(8)[16] KID; } [KID_count]; } unsigned int(32) DataSize; unsigned int(8)[DataSize] Data; }
type SampleDescription ¶ added in v1.2.3
type SampleDescription struct { BoxHeader BoxHeader FullBoxHeader FullBoxHeader EntryCount uint32 AudioSample *AudioSampleEntry VisualSample *VisualSampleEntry }
ISO/IEC 14496-12
aligned(8) class SampleDescriptionBox() extends FullBox('stsd', version, 0) { int i ; unsigned int(32) entry_count; for (i = 1 ; i <= entry_count ; i++){ SampleEntry(); // an instance of a class derived from SampleEntry } }
type SampleEncryption ¶ added in v1.2.3
type SampleEncryption struct { BoxHeader BoxHeader FullBoxHeader FullBoxHeader SampleCount uint32 Samples []EncryptionSample }
ISO/IEC 23001-7
if the version of the SampleEncryptionBox is 0 and the flag senc_use_subsamples is set, UseSubSampleEncryption is set to 1
aligned(8) class SampleEncryptionBox extends FullBox( 'senc', version, flags ) { unsigned int(32) sample_count; { unsigned int(Per_Sample_IV_Size*8) InitializationVector; if (UseSubSampleEncryption) { unsigned int(16) subsample_count; { unsigned int(16) BytesOfClearData; unsigned int(32) BytesOfProtectedData; } [subsample_count ] } }[ sample_count ] }
type SampleEntry ¶
ISO/IEC 14496-12
aligned(8) abstract class SampleEntry( unsigned int(32) format ) extends Box(format) { const unsigned int(8)[6] reserved = 0; unsigned int(16) data_reference_index; }
type SampleTable ¶ added in v1.2.3
type SampleTable struct { BoxHeader BoxHeader Boxes []Box SampleDescription SampleDescription }
ISO/IEC 14496-12
aligned(8) class SampleTableBox extends Box('stbl') { }
type SegmentIndex ¶ added in v1.2.3
type SegmentIndex struct { BoxHeader BoxHeader FullBoxHeader FullBoxHeader ReferenceId uint32 Timescale uint32 EarliestPresentationTime []byte FirstOffset []byte Reserved uint16 ReferenceCount uint16 Reference []Reference }
ISO/IEC 14496-12
aligned(8) class SegmentIndexBox extends FullBox('sidx', version, 0) { unsigned int(32) reference_ID; unsigned int(32) timescale; if (version==0) { unsigned int(32) earliest_presentation_time; unsigned int(32) first_offset; } else { unsigned int(64) earliest_presentation_time; unsigned int(64) first_offset; } unsigned int(16) reserved = 0; unsigned int(16) reference_count; for(i=1; i <= reference_count; i++) { bit (1) reference_type; unsigned int(31) referenced_size; unsigned int(32) subsegment_duration; bit(1) starts_with_SAP; unsigned int(3) SAP_type; unsigned int(28) SAP_delta_time; } }
func (*SegmentIndex) Append ¶ added in v1.2.3
func (s *SegmentIndex) Append(size uint32)
func (*SegmentIndex) New ¶ added in v1.2.3
func (s *SegmentIndex) New()
func (SegmentIndex) Ranges ¶ added in v1.2.3
func (s SegmentIndex) Ranges(start uint64) []Range
size will always fit inside 31 bits, but range-start and range-end can both exceed 32 bits, so we must use 64 bit. we need the length for progress meter, so cannot use a channel
type TrackFragment ¶ added in v1.2.3
type TrackFragment struct { BoxHeader BoxHeader Boxes []Box SampleEncryption SampleEncryption TrackRun TrackRun }
ISO/IEC 14496-12
aligned(8) class TrackFragmentBox extends Box('traf') { }
type TrackRun ¶ added in v1.2.3
type TrackRun struct { BoxHeader BoxHeader FullBoxHeader FullBoxHeader SampleCount uint32 DataOffset int32 FirstSampleFlags uint32 Sample []RunSample }
ISO/IEC 14496-12
If the data-offset is present, it is relative to the base-data-offset established in the track fragment header.
aligned(8) class TrackRunBox extends FullBox('trun', version, tr_flags) { unsigned int(32) sample_count; signed int(32) data_offset; // 0x000001, assume present unsigned int(32) first_sample_flags; // 0x000004 { unsigned int(32) sample_duration; // 0x000100 unsigned int(32) sample_size; // 0x000200, assume present unsigned int(32) sample_flags // 0x000400 if (version == 0) { unsigned int(32) sample_composition_time_offset; // 0x000800 } else { signed int(32) sample_composition_time_offset; // 0x000800 } }[ sample_count ] }
type VisualSampleEntry ¶
type VisualSampleEntry struct { SampleEntry SampleEntry Extends struct { Width uint16 Height uint16 HorizResolution uint32 VertResolution uint32 FrameCount uint16 CompressorName [32]uint8 Depth uint16 // contains filtered or unexported fields } Boxes []*Box ProtectionScheme ProtectionSchemeInfo }
ISO/IEC 14496-12
class VisualSampleEntry(codingname) extends SampleEntry(codingname) { unsigned int(16) pre_defined = 0; const unsigned int(16) reserved = 0; unsigned int(32)[3] pre_defined = 0; unsigned int(16) width; unsigned int(16) height; template unsigned int(32) horizresolution = 0x00480000; // 72 dpi template unsigned int(32) vertresolution = 0x00480000; // 72 dpi const unsigned int(32) reserved = 0; template unsigned int(16) frame_count = 1; uint(8)[32] compressorname; template unsigned int(16) depth = 0x0018; int(16) pre_defined = -1; // other boxes from derived specifications CleanApertureBox clap; // optional PixelAspectRatioBox pasp; // optional }