Documentation ¶
Index ¶
- type AudioSampleEntry
- type Box
- type BoxHeader
- type ByteRange
- type EncryptionSample
- type File
- type FullBoxHeader
- type MediaBox
- type MediaDataBox
- type MediaInformationBox
- type MovieBox
- type MovieFragmentBox
- type OriginalFormatBox
- type ProtectionSchemeInfoBox
- type Reference
- type SampleDescriptionBox
- type SampleEncryptionBox
- type SampleEntry
- type SampleTableBox
- type SegmentIndexBox
- type Subsample
- type TrackBox
- type TrackFragmentBox
- type TrackRunBox
- func (t *TrackRunBox) Decode(r io.Reader) error
- func (t TrackRunBox) Encode(w io.Writer) error
- func (t TrackRunBox) FirstSampleFlagsPresent() bool
- func (t TrackRunBox) SampleCompositionTimeOffsetsPresent() bool
- func (t TrackRunBox) SampleDurationPresent() bool
- func (t TrackRunBox) SampleFlagsPresent() bool
- func (t TrackRunBox) SampleSizePresent() bool
- type TrackRunSample
- type VisualSampleEntry
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AudioSampleEntry ¶
type AudioSampleEntry struct { Entry SampleEntry S struct { Reserved [2]uint32 ChannelCount uint16 SampleSize uint16 PreDefined uint16 SampleRate uint32 // contains filtered or unexported fields } Boxes []*Box ProtectionScheme ProtectionSchemeInfoBox }
Container: SampleDescriptionBox
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 ¶
4.2.2 Object definitions
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 ¶
4.2.2 Object definitions
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; } }
func (BoxHeader) ExtendedType ¶ added in v1.1.5
type EncryptionSample ¶
type EncryptionSample struct { InitializationVector uint64 SubsampleCount uint16 Subsamples []Subsample }
func (*EncryptionSample) Decode ¶
func (e *EncryptionSample) Decode(r io.Reader, b *SampleEncryptionBox) error
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
func (EncryptionSample) Encode ¶
func (e EncryptionSample) Encode(w io.Writer, b SampleEncryptionBox) error
type File ¶
type File struct { Boxes []Box MediaData *MediaDataBox Movie *MovieBox MovieFragment *MovieFragmentBox SegmentIndex *SegmentIndexBox }
type FullBoxHeader ¶
4.2.2 Object definitions
aligned(8) class FullBoxHeader(unsigned int(8) v, bit(24) f) { unsigned int(8) version = v; bit(24) flags = f; }
func (FullBoxHeader) Flags ¶
func (f FullBoxHeader) Flags() uint32
func (FullBoxHeader) Size ¶ added in v1.1.2
func (FullBoxHeader) Size() uint32
type MediaBox ¶
type MediaBox struct { BoxHeader BoxHeader Boxes []Box MediaInformation MediaInformationBox }
Container: TrackBox
aligned(8) class MediaBox extends Box('mdia') { }
type MediaDataBox ¶
Container: File
aligned(8) class MediaDataBox extends Box('mdat') { bit(8) data[]; }
func (*MediaDataBox) Decode ¶
func (b *MediaDataBox) Decode(r io.Reader, t TrackRunBox) error
type MediaInformationBox ¶
type MediaInformationBox struct { BoxHeader BoxHeader Boxes []Box SampleTable SampleTableBox }
Container: MediaBox
aligned(8) class MediaInformationBox extends Box('minf') { }
type MovieFragmentBox ¶
type MovieFragmentBox struct { BoxHeader BoxHeader Boxes []Box TrackFragment TrackFragmentBox }
Container: File
aligned(8) class MovieFragmentBox extends Box('moof') { }
type OriginalFormatBox ¶ added in v1.1.0
Container: ProtectionSchemeInfoBox
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 ProtectionSchemeInfoBox ¶ added in v1.1.0
type ProtectionSchemeInfoBox struct { BoxHeader BoxHeader Boxes []Box OriginalFormat OriginalFormatBox }
Container: Protected Sample Entry
aligned(8) class ProtectionSchemeInfoBox(fmt) extends Box('sinf') { OriginalFormatBox(fmt) original_format; SchemeTypeBox scheme_type_box; // optional SchemeInformationBox info; // optional }
type Reference ¶ added in v1.0.7
type Reference [3]uint32
func (Reference) ReferencedSize ¶ added in v1.1.5
this is the size of the fragment, typically `moof` + `mdat`
func (Reference) SetReferencedSize ¶ added in v1.1.5
type SampleDescriptionBox ¶
type SampleDescriptionBox struct { BoxHeader BoxHeader FullBoxHeader FullBoxHeader EntryCount uint32 AudioSample *AudioSampleEntry VisualSample *VisualSampleEntry }
Container: SampleTableBox
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 SampleEncryptionBox ¶
type SampleEncryptionBox struct { BoxHeader BoxHeader FullBoxHeader FullBoxHeader SampleCount uint32 Samples []EncryptionSample }
Container: TrackFragmentBox
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 ] }
func (SampleEncryptionBox) SencUseSubsamples ¶ added in v1.1.5
func (b SampleEncryptionBox) SencUseSubsamples() bool
senc_use_subsamples: flag mask is 0x000002.
type SampleEntry ¶
8.5.2 Sample description box
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 SampleTableBox ¶
type SampleTableBox struct { BoxHeader BoxHeader Boxes []Box SampleDescription SampleDescriptionBox }
Container: MediaInformationBox
aligned(8) class SampleTableBox extends Box('stbl') { }
type SegmentIndexBox ¶ added in v1.0.7
type SegmentIndexBox struct { BoxHeader BoxHeader FullBoxHeader FullBoxHeader ReferenceId uint32 Timescale uint32 EarliestPresentationTime []byte FirstOffset []byte Reserved uint16 ReferenceCount uint16 Reference []Reference }
Container: File
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 (*SegmentIndexBox) Append ¶ added in v1.1.8
func (s *SegmentIndexBox) Append(size uint32)
func (*SegmentIndexBox) Decode ¶ added in v1.0.7
func (s *SegmentIndexBox) Decode(r io.Reader) error
func (*SegmentIndexBox) New ¶ added in v1.1.8
func (s *SegmentIndexBox) New()
func (SegmentIndexBox) Ranges ¶ added in v1.1.8
func (s SegmentIndexBox) Ranges(start uint64) []ByteRange
size will always fit inside 31 bits: unsigned int(31) referenced_size but range-start and range-end can both exceed 32 bits, so we must use 64 bit
func (SegmentIndexBox) Size ¶ added in v1.1.2
func (s SegmentIndexBox) Size() uint32
type TrackFragmentBox ¶
type TrackFragmentBox struct { BoxHeader BoxHeader Boxes []Box TrackRun TrackRunBox SampleEncryption SampleEncryptionBox }
Container: MovieFragmentBox
aligned(8) class TrackFragmentBox extends Box('traf') { }
type TrackRunBox ¶
type TrackRunBox struct { BoxHeader BoxHeader FullBoxHeader FullBoxHeader SampleCount uint32 DataOffset int32 FirstSampleFlags uint32 Sample []TrackRunSample }
Container: TrackFragmentBox
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 ] }
func (TrackRunBox) FirstSampleFlagsPresent ¶ added in v1.1.5
func (t TrackRunBox) FirstSampleFlagsPresent() bool
0x000004 first-sample-flags-present
func (TrackRunBox) SampleCompositionTimeOffsetsPresent ¶ added in v1.1.5
func (t TrackRunBox) SampleCompositionTimeOffsetsPresent() bool
0x000800 sample-composition-time-offsets-present
func (TrackRunBox) SampleDurationPresent ¶ added in v1.1.5
func (t TrackRunBox) SampleDurationPresent() bool
0x000100 sample-duration-present
func (TrackRunBox) SampleFlagsPresent ¶ added in v1.1.5
func (t TrackRunBox) SampleFlagsPresent() bool
0x000400 sample-flags-present
func (TrackRunBox) SampleSizePresent ¶ added in v1.1.5
func (t TrackRunBox) SampleSizePresent() bool
0x000200 sample-size-present
type TrackRunSample ¶
type TrackRunSample struct { Duration uint32 Size uint32 Flags uint32 CompositionTimeOffset [4]byte }
func (*TrackRunSample) Decode ¶
func (s *TrackRunSample) Decode(r io.Reader, t *TrackRunBox) error
func (TrackRunSample) Encode ¶
func (s TrackRunSample) Encode(w io.Writer, t TrackRunBox) error
type VisualSampleEntry ¶
type VisualSampleEntry struct { Entry SampleEntry S struct { PreDefined uint16 Reserved uint16 Width uint16 Height uint16 HorizResolution uint32 VertResolution uint32 FrameCount uint16 CompressorName [32]uint8 Depth uint16 // contains filtered or unexported fields } Boxes []*Box ProtectionScheme ProtectionSchemeInfoBox }
Container: SampleDescriptionBox
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 }