Documentation ¶
Index ¶
- func CryptSampleCenc(sample, key []byte, enc EncryptionSample) error
- type AudioSampleEntry
- type Box
- type BoxHeader
- type EncryptionSample
- type File
- type FullBoxHeader
- type MediaBox
- type MediaDataBox
- type MediaInformationBox
- type MovieBox
- type MovieFragmentBox
- type SampleDescriptionBox
- type SampleEncryptionBox
- type SampleEntry
- type SampleTableBox
- type Subsample
- type TrackBox
- type TrackFragmentBox
- type TrackRunBox
- func (b *TrackRunBox) Decode(r io.Reader) error
- func (b TrackRunBox) Encode(w io.Writer) error
- func (b TrackRunBox) First_Sample_Flags_Present() bool
- func (b TrackRunBox) Sample_Composition_Time_Offsets_Present() bool
- func (b TrackRunBox) Sample_Duration_Present() bool
- func (b TrackRunBox) Sample_Flags_Present() bool
- type TrackRunSample
- type VisualSampleEntry
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CryptSampleCenc ¶
func CryptSampleCenc(sample, key []byte, enc EncryptionSample) error
github.com/Eyevinn/mp4ff/blob/v0.40.2/mp4/crypto.go#L101
Types ¶
type AudioSampleEntry ¶
type AudioSampleEntry struct { Header BoxHeader Reserved [6]uint8 Data_Reference_Index uint16 Extends struct { Reserved [2]uint32 ChannelCount uint16 SampleSize uint16 Pre_Defined uint16 SampleRate uint32 // contains filtered or unexported fields } Boxes []*Box }
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 ¶
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 ¶
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) BoxPayload ¶
type EncryptionSample ¶
type EncryptionSample struct { InitializationVector uint64 Subsample_Count uint16 Subsamples []Subsample }
func (*EncryptionSample) Decode ¶
func (e *EncryptionSample) Decode(b *SampleEncryptionBox, r io.Reader) error
func (EncryptionSample) Encode ¶
func (e EncryptionSample) Encode(b SampleEncryptionBox, w io.Writer) error
type File ¶
type File struct { Boxes []Box Moov MovieBox Moof MovieFragmentBox Mdat MediaDataBox }
type FullBoxHeader ¶
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
type MediaBox ¶
type MediaBox struct { Header BoxHeader Boxes []Box Minf MediaInformationBox }
aligned(8) class MediaBox extends Box('mdia') { }
type MediaDataBox ¶
aligned(8) class MediaDataBox extends Box('mdat') { bit(8) data[]; }
func (*MediaDataBox) Decode ¶
func (b *MediaDataBox) Decode(t TrackRunBox, r io.Reader) error
type MediaInformationBox ¶
type MediaInformationBox struct { Header BoxHeader Boxes []Box Stbl SampleTableBox }
aligned(8) class MediaInformationBox extends Box('minf') { }
type MovieFragmentBox ¶
type MovieFragmentBox struct { Header BoxHeader Boxes []Box Traf TrackFragmentBox }
aligned(8) class MovieFragmentBox extends Box('moof') { }
type SampleDescriptionBox ¶
type SampleDescriptionBox struct { BoxHeader BoxHeader FullBoxHeader FullBoxHeader Entry_Count uint32 Enca AudioSampleEntry Encv VisualSampleEntry }
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 Sample_Count uint32 Samples []EncryptionSample }
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) Senc_Use_Subsamples ¶
func (b SampleEncryptionBox) Senc_Use_Subsamples() bool
senc_use_subsamples: flag mask is 0x000002.
type SampleEntry ¶
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 { Header BoxHeader Boxes []Box Stsd SampleDescriptionBox }
aligned(8) class SampleTableBox extends Box('stbl') { }
type TrackFragmentBox ¶
type TrackFragmentBox struct { Header BoxHeader Boxes []Box Trun TrackRunBox Senc SampleEncryptionBox }
aligned(8) class TrackFragmentBox extends Box('traf') { }
type TrackRunBox ¶
type TrackRunBox struct { BoxHeader BoxHeader FullBoxHeader FullBoxHeader Sample_Count uint32 Data_Offset int32 First_Sample_Flags uint32 Samples []TrackRunSample }
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) First_Sample_Flags_Present ¶
func (b TrackRunBox) First_Sample_Flags_Present() bool
0x000004 first-sample-flags-present
func (TrackRunBox) Sample_Composition_Time_Offsets_Present ¶
func (b TrackRunBox) Sample_Composition_Time_Offsets_Present() bool
0x000800 sample-composition-time-offsets-present
func (TrackRunBox) Sample_Duration_Present ¶
func (b TrackRunBox) Sample_Duration_Present() bool
0x000100 sample-duration-present
func (TrackRunBox) Sample_Flags_Present ¶
func (b TrackRunBox) Sample_Flags_Present() bool
0x000400 sample-flags-present
type TrackRunSample ¶
type TrackRunSample struct { Duration uint32 Size uint32 Flags uint32 Composition_Time_Offset [4]byte }
func (*TrackRunSample) Decode ¶
func (s *TrackRunSample) Decode(b *TrackRunBox, r io.Reader) error
func (TrackRunSample) Encode ¶
func (s TrackRunSample) Encode(b TrackRunBox, w io.Writer) error
type VisualSampleEntry ¶
type VisualSampleEntry struct { Header BoxHeader Reserved [6]uint8 Data_Reference_Index uint16 Extends struct { Pre_Defined uint16 Reserved uint16 Width uint16 Height uint16 HorizResolution uint32 VertResolution uint32 Frame_Count uint16 CompressorName [32]uint8 Depth uint16 // contains filtered or unexported fields } Boxes []*Box }
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 }