From 36219698af851fc9ec3700f1fdea8a4cb4ba215e Mon Sep 17 00:00:00 2001 From: Kubo Ryosuke Date: Sun, 8 Nov 2020 19:20:09 +0900 Subject: [PATCH] Support wave box and AudioSampleEntry of QuickTime style --- _examples/sample_qt.mp4 | Bin 0 -> 340294 bytes box.go | 35 ++++---- box_info.go | 11 +++ box_types.go | 142 +++++++++++++++++++----------- box_types_test.go | 161 +++++++++++++++++++++++++++++++++-- extract.go | 6 +- marshaller.go | 51 +++++------ marshaller_test.go | 48 +++++------ mp4tool/mp4dump/mp4dump.go | 2 +- mp4tool/mp4edit/mp4edit.go | 2 +- mp4tool/psshdump/psshdump.go | 2 +- probe.go | 12 +-- read.go | 38 +++++++-- read_test.go | 96 +++++++++++++++++++++ string.go | 16 ++-- string_test.go | 4 +- 16 files changed, 481 insertions(+), 145 deletions(-) create mode 100644 _examples/sample_qt.mp4 diff --git a/_examples/sample_qt.mp4 b/_examples/sample_qt.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..3ec33ce20e7a931999ec103a6fbdf6390062e088 GIT binary patch literal 340294 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

9Fb+qUh6tyZg%jy_d>Et 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

Y1y7kt5Iay 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 GOa34Hk@;2t literal 0 HcmV?d00001 diff --git a/box.go b/box.go index 06401c3..beac0fd 100644 --- a/box.go +++ b/box.go @@ -3,68 +3,71 @@ package mp4 import ( "errors" "io" + "math" "github.com/abema/go-mp4/bitio" ) +const LengthUnlimited = math.MaxUint32 + type ICustomFieldObject interface { // GetFieldSize returns size of dynamic field - GetFieldSize(string) uint + GetFieldSize(name string, bss BoxStructureStatus) uint // GetFieldLength returns length of dynamic field - GetFieldLength(string) uint + GetFieldLength(name string, bss BoxStructureStatus) uint // IsOptFieldEnabled check whether if the optional field is enabled - IsOptFieldEnabled(string) bool + IsOptFieldEnabled(name string, bss BoxStructureStatus) bool // StringifyField returns field value as string - StringifyField(string, string, int) (string, bool) + StringifyField(name string, indent string, depth int, bss BoxStructureStatus) (string, bool) - IsPString(name string, bytes []byte, remainingSize uint64) bool + IsPString(name string, bytes []byte, remainingSize uint64, bss BoxStructureStatus) bool - BeforeUnmarshal(r io.ReadSeeker, size uint64) (n uint64, override bool, err error) + BeforeUnmarshal(r io.ReadSeeker, size uint64, bss BoxStructureStatus) (n uint64, override bool, err error) - OnReadField(name string, r bitio.ReadSeeker, leftBits uint64) (rbits uint64, override bool, err error) + OnReadField(name string, r bitio.ReadSeeker, leftBits uint64, bss BoxStructureStatus) (rbits uint64, override bool, err error) - OnWriteField(name string, w bitio.Writer) (wbits uint64, override bool, err error) + OnWriteField(name string, w bitio.Writer, bss BoxStructureStatus) (wbits uint64, override bool, err error) } type BaseCustomFieldObject struct { } // GetFieldSize returns size of dynamic field -func (box *BaseCustomFieldObject) GetFieldSize(string) uint { +func (box *BaseCustomFieldObject) GetFieldSize(string, BoxStructureStatus) uint { panic(errors.New("GetFieldSize not implemented")) } // GetFieldLength returns length of dynamic field -func (box *BaseCustomFieldObject) GetFieldLength(string) uint { +func (box *BaseCustomFieldObject) GetFieldLength(string, BoxStructureStatus) uint { panic(errors.New("GetFieldLength not implemented")) } // IsOptFieldEnabled check whether if the optional field is enabled -func (box *BaseCustomFieldObject) IsOptFieldEnabled(string) bool { +func (box *BaseCustomFieldObject) IsOptFieldEnabled(string, BoxStructureStatus) bool { return false } // StringifyField returns field value as string -func (box *BaseCustomFieldObject) StringifyField(string, string, int) (string, bool) { +func (box *BaseCustomFieldObject) StringifyField(string, string, int, BoxStructureStatus) (string, bool) { return "", false } -func (*BaseCustomFieldObject) IsPString(name string, bytes []byte, remainingSize uint64) bool { +func (*BaseCustomFieldObject) IsPString(name string, bytes []byte, remainingSize uint64, bss BoxStructureStatus) bool { return true } -func (*BaseCustomFieldObject) BeforeUnmarshal(io.ReadSeeker, uint64) (uint64, bool, error) { +func (*BaseCustomFieldObject) BeforeUnmarshal(io.ReadSeeker, uint64, BoxStructureStatus) (uint64, bool, error) { return 0, false, nil } -func (*BaseCustomFieldObject) OnReadField(string, bitio.ReadSeeker, uint64) (uint64, bool, error) { +func (*BaseCustomFieldObject) OnReadField(string, bitio.ReadSeeker, uint64, BoxStructureStatus) (uint64, bool, error) { return 0, false, nil } -func (*BaseCustomFieldObject) OnWriteField(string, bitio.Writer) (uint64, bool, error) { +func (*BaseCustomFieldObject) OnWriteField(string, bitio.Writer, BoxStructureStatus) (uint64, bool, error) { return 0, false, nil } diff --git a/box_info.go b/box_info.go index 5ce7db2..7152c76 100644 --- a/box_info.go +++ b/box_info.go @@ -7,6 +7,14 @@ import ( "math" ) +type BoxStructureStatus struct { + // IsQuickTimeCompatible represents whether ftyp.compatible_brands contains "qt ". + IsQuickTimeCompatible bool + + // UnderWave represents whether current box is under the wave box. + UnderWave bool +} + // BoxInfo has common infomations of box type BoxInfo struct { // Offset specifies an offset of the box in a file. @@ -23,6 +31,9 @@ type BoxInfo struct { // ExtendToEOF is set true when Box.size is zero. It means that end of box equals to end of file. ExtendToEOF bool + + // BoxStructureStatus would be set by ReadBoxStructure, not ReadBoxInfo. + BoxStructureStatus } const ( diff --git a/box_types.go b/box_types.go index 7e2dab8..e4d8d9e 100644 --- a/box_types.go +++ b/box_types.go @@ -31,7 +31,7 @@ func (*Co64) GetType() BoxType { } // GetFieldLength returns length of dynamic field -func (co64 *Co64) GetFieldLength(name string) uint { +func (co64 *Co64) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "ChunkOffset": return uint(co64.EntryCount) @@ -59,7 +59,7 @@ type Colr struct { Unknown []byte `mp4:"size=8,opt=dynamic"` } -func (colr *Colr) IsOptFieldEnabled(name string) bool { +func (colr *Colr) IsOptFieldEnabled(name string, bss BoxStructureStatus) bool { switch colr.ColourType { case [4]byte{'n', 'c', 'l', 'x'}: switch name { @@ -111,7 +111,7 @@ func (*Ctts) GetType() BoxType { } // GetFieldLength returns length of dynamic field -func (ctts *Ctts) GetFieldLength(name string) uint { +func (ctts *Ctts) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "Entries": return uint(ctts.EntryCount) @@ -231,7 +231,7 @@ func (*Elst) GetType() BoxType { } // GetFieldSize returns size of dynamic field -func (elst *Elst) GetFieldSize(name string) uint { +func (elst *Elst) GetFieldSize(name string, bss BoxStructureStatus) uint { switch name { case "Entries": switch elst.GetVersion() { @@ -253,7 +253,7 @@ func (elst *Elst) GetFieldSize(name string) uint { } // GetFieldLength returns length of dynamic field -func (elst *Elst) GetFieldLength(name string) uint { +func (elst *Elst) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "Entries": return uint(elst.EntryCount) @@ -282,7 +282,7 @@ type Emsg struct { MessageData []byte `mp4:"size=8,string"` } -func (emsg *Emsg) OnReadField(name string, r bitio.ReadSeeker, leftBits uint64) (rbits uint64, override bool, err error) { +func (emsg *Emsg) OnReadField(name string, r bitio.ReadSeeker, leftBits uint64, bss BoxStructureStatus) (rbits uint64, override bool, err error) { if emsg.GetVersion() == 0 { return } @@ -306,7 +306,7 @@ func (emsg *Emsg) OnReadField(name string, r bitio.ReadSeeker, leftBits uint64) } } -func (emsg *Emsg) OnWriteField(name string, w bitio.Writer) (wbits uint64, override bool, err error) { +func (emsg *Emsg) OnWriteField(name string, w bitio.Writer, bss BoxStructureStatus) (wbits uint64, override bool, err error) { if emsg.GetVersion() == 0 { return } @@ -371,7 +371,7 @@ type Descriptor struct { } // GetFieldLength returns length of dynamic field -func (ds *Descriptor) GetFieldLength(name string) uint { +func (ds *Descriptor) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "Data": return uint(ds.Size) @@ -379,7 +379,7 @@ func (ds *Descriptor) GetFieldLength(name string) uint { panic(fmt.Errorf("invalid name of dynamic-length field: boxType=esds fieldName=%s", name)) } -func (ds *Descriptor) IsOptFieldEnabled(name string) bool { +func (ds *Descriptor) IsOptFieldEnabled(name string, bss BoxStructureStatus) bool { switch ds.Tag { case ESDescrTag: return name == "ESDescriptor" @@ -391,7 +391,7 @@ func (ds *Descriptor) IsOptFieldEnabled(name string) bool { } // StringifyField returns field value as string -func (ds *Descriptor) StringifyField(name string, indent string, depth int) (string, bool) { +func (ds *Descriptor) StringifyField(name string, indent string, depth int, bss BoxStructureStatus) (string, bool) { switch name { case "Tag": switch ds.Tag { @@ -424,7 +424,7 @@ type ESDescriptor struct { OCRESID uint16 `mp4:"size=16,opt=dynamic"` } -func (esds *ESDescriptor) GetFieldLength(name string) uint { +func (esds *ESDescriptor) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "URLString": return uint(esds.URLLength) @@ -432,7 +432,7 @@ func (esds *ESDescriptor) GetFieldLength(name string) uint { panic(fmt.Errorf("invalid name of dynamic-length field: boxType=ESDescriptor fieldName=%s", name)) } -func (esds *ESDescriptor) IsOptFieldEnabled(name string) bool { +func (esds *ESDescriptor) IsOptFieldEnabled(name string, bss BoxStructureStatus) bool { switch name { case "DependsOnESID": return esds.StreamDependenceFlag @@ -491,6 +491,8 @@ func init() { AddBoxDef(&Ftyp{}) } +func CompatibleBrandQT() [4]byte { return [4]byte{'q', 't', ' ', ' '} } + // Ftyp is ISOBMFF ftyp box type type Ftyp struct { Box @@ -534,7 +536,7 @@ func (*Hdlr) GetType() BoxType { return BoxTypeHdlr() } -func (hdlr *Hdlr) IsPString(name string, bytes []byte, remainingSize uint64) bool { +func (hdlr *Hdlr) IsPString(name string, bytes []byte, remainingSize uint64, bss BoxStructureStatus) bool { switch name { case "Name": return remainingSize == 0 && hdlr.PreDefined != 0 @@ -664,7 +666,7 @@ func (*Meta) GetType() BoxType { return BoxTypeMeta() } -func (meta *Meta) BeforeUnmarshal(r io.ReadSeeker, size uint64) (n uint64, override bool, err error) { +func (meta *Meta) BeforeUnmarshal(r io.ReadSeeker, size uint64, bss BoxStructureStatus) (n uint64, override bool, err error) { // for Apple Quick Time buf := make([]byte, 4) if _, err := io.ReadFull(r, buf); err != nil { @@ -842,7 +844,7 @@ func (*Mvhd) GetType() BoxType { } // StringifyField returns field value as string -func (mvhd *Mvhd) StringifyField(name string, indent string, depth int) (string, bool) { +func (mvhd *Mvhd) StringifyField(name string, indent string, depth int, bss BoxStructureStatus) (string, bool) { switch name { case "Rate": return strconv.FormatFloat(mvhd.GetRate(), 'f', -1, 32), true @@ -884,7 +886,7 @@ type PsshKID struct { } // GetFieldLength returns length of dynamic field -func (pssh *Pssh) GetFieldLength(name string) uint { +func (pssh *Pssh) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "KIDs": return uint(pssh.KIDCount) @@ -895,7 +897,7 @@ func (pssh *Pssh) GetFieldLength(name string) uint { } // StringifyField returns field value as string -func (pssh *Pssh) StringifyField(name string, indent string, depth int) (string, bool) { +func (pssh *Pssh) StringifyField(name string, indent string, depth int, bss BoxStructureStatus) (string, bool) { switch name { case "SystemID": buf := bytes.NewBuffer(nil) @@ -967,7 +969,7 @@ type VisualSampleEntry struct { } // StringifyField returns field value as string -func (vse *VisualSampleEntry) StringifyField(name string, indent string, depth int) (string, bool) { +func (vse *VisualSampleEntry) StringifyField(name string, indent string, depth int, bss BoxStructureStatus) (string, bool) { switch name { case "Compressorname": if vse.Compressorname[0] <= 31 { @@ -980,14 +982,38 @@ func (vse *VisualSampleEntry) StringifyField(name string, indent string, depth i } type AudioSampleEntry struct { - SampleEntry `mp4:"extend"` - EntryVersion uint16 `mp4:"size=16"` - Reserved [3]uint16 `mp4:"size=16,const=0"` - ChannelCount uint16 `mp4:"size=16"` - SampleSize uint16 `mp4:"size=16"` - PreDefined uint16 `mp4:"size=16"` - Reserved2 uint16 `mp4:"size=16,const=0"` - SampleRate uint32 `mp4:"size=32"` + SampleEntry `mp4:"extend,opt=dynamic"` + EntryVersion uint16 `mp4:"size=16,opt=dynamic"` + Reserved [3]uint16 `mp4:"size=16,opt=dynamic,const=0"` + ChannelCount uint16 `mp4:"size=16,opt=dynamic"` + SampleSize uint16 `mp4:"size=16,opt=dynamic"` + PreDefined uint16 `mp4:"size=16,opt=dynamic"` + Reserved2 uint16 `mp4:"size=16,opt=dynamic,const=0"` + SampleRate uint32 `mp4:"size=32,opt=dynamic"` + QuickTimeData []byte `mp4:"size=8,opt=dynamic,len=dynamic"` +} + +func (ase *AudioSampleEntry) IsOptFieldEnabled(name string, bss BoxStructureStatus) bool { + if name == "QuickTimeData" { + return bss.IsQuickTimeCompatible && (bss.UnderWave || ase.EntryVersion == 1 || ase.EntryVersion == 2) + } + if bss.IsQuickTimeCompatible && bss.UnderWave { + return false + } + return true +} + +func (ase *AudioSampleEntry) GetFieldLength(name string, bss BoxStructureStatus) uint { + if name == "QuickTimeData" && bss.IsQuickTimeCompatible { + if bss.UnderWave { + return LengthUnlimited + } else if ase.EntryVersion == 1 { + return 16 + } else if ase.EntryVersion == 2 { + return 36 + } + } + return 0 } const ( @@ -1023,7 +1049,7 @@ type AVCDecoderConfiguration struct { SequenceParameterSetsExt []AVCParameterSet `mp4:"len=dynamic,opt=dynamic"` } -func (avcc *AVCDecoderConfiguration) GetFieldLength(name string) uint { +func (avcc *AVCDecoderConfiguration) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "SequenceParameterSets": return uint(avcc.NumOfSequenceParameterSets) @@ -1035,7 +1061,7 @@ func (avcc *AVCDecoderConfiguration) GetFieldLength(name string) uint { return 0 } -func (avcc *AVCDecoderConfiguration) IsOptFieldEnabled(name string) bool { +func (avcc *AVCDecoderConfiguration) IsOptFieldEnabled(name string, bss BoxStructureStatus) bool { switch name { case "Reserved3", "ChromaFormat", @@ -1050,7 +1076,7 @@ func (avcc *AVCDecoderConfiguration) IsOptFieldEnabled(name string) bool { return false } -func (avcc *AVCDecoderConfiguration) OnReadField(name string, r bitio.ReadSeeker, leftBits uint64) (rbits uint64, override bool, err error) { +func (avcc *AVCDecoderConfiguration) OnReadField(name string, r bitio.ReadSeeker, leftBits uint64, bss BoxStructureStatus) (rbits uint64, override bool, err error) { if name == "HighProfileFieldsEnabled" { avcc.HighProfileFieldsEnabled = leftBits >= 32 && (avcc.Profile == AVCHighProfile || @@ -1062,7 +1088,7 @@ func (avcc *AVCDecoderConfiguration) OnReadField(name string, r bitio.ReadSeeker return 0, false, nil } -func (avcc *AVCDecoderConfiguration) OnWriteField(name string, w bitio.Writer) (wbits uint64, override bool, err error) { +func (avcc *AVCDecoderConfiguration) OnWriteField(name string, w bitio.Writer, bss BoxStructureStatus) (wbits uint64, override bool, err error) { if name == "HighProfileFieldsEnabled" { if avcc.HighProfileFieldsEnabled && avcc.Profile != AVCHighProfile && @@ -1082,7 +1108,7 @@ type AVCParameterSet struct { NALUnit []byte `mp4:"size=8,len=dynamic"` } -func (s *AVCParameterSet) GetFieldLength(name string) uint { +func (s *AVCParameterSet) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "NALUnit": return uint(s.Length) @@ -1117,7 +1143,7 @@ type SbgpEntry struct { GroupDescriptionIndex uint32 `mp4:"size=32"` } -func (sbgp *Sbgp) GetFieldLength(name string) uint { +func (sbgp *Sbgp) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "Entries": return uint(sbgp.EntryCount) @@ -1213,7 +1239,7 @@ type TemporalLevelEntryL struct { TemporalLevelEntry `mp4:"extend"` } -func (sgpd *Sgpd) GetFieldSize(name string) uint { +func (sgpd *Sgpd) GetFieldSize(name string, bss BoxStructureStatus) uint { switch name { case "AlternativeStartupEntries": return uint(sgpd.DefaultLength * 8) @@ -1221,7 +1247,7 @@ func (sgpd *Sgpd) GetFieldSize(name string) uint { return 0 } -func (sgpd *Sgpd) GetFieldLength(name string) uint { +func (sgpd *Sgpd) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "RollDistances", "RollDistancesL", "AlternativeStartupEntries", "AlternativeStartupEntriesL", @@ -1232,7 +1258,7 @@ func (sgpd *Sgpd) GetFieldLength(name string) uint { return 0 } -func (sgpd *Sgpd) IsOptFieldEnabled(name string) bool { +func (sgpd *Sgpd) IsOptFieldEnabled(name string, bss BoxStructureStatus) bool { noDefaultLength := sgpd.Version == 1 && sgpd.DefaultLength == 0 rollDistances := sgpd.GroupingType == [4]byte{'r', 'o', 'l', 'l'} || sgpd.GroupingType == [4]byte{'p', 'r', 'o', 'l'} @@ -1270,7 +1296,7 @@ func (*Sgpd) GetType() BoxType { return BoxTypeSgpd() } -func (entry *AlternativeStartupEntry) GetFieldLength(name string) uint { +func (entry *AlternativeStartupEntry) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "SampleOffset": return uint(entry.RollCount) @@ -1278,7 +1304,7 @@ func (entry *AlternativeStartupEntry) GetFieldLength(name string) uint { return 0 } -func (entry *AlternativeStartupEntryL) GetFieldSize(name string) uint { +func (entry *AlternativeStartupEntryL) GetFieldSize(name string, bss BoxStructureStatus) uint { switch name { case "AlternativeStartupEntry": return uint(entry.DescriptionLength * 8) @@ -1320,7 +1346,7 @@ func (*Sidx) GetType() BoxType { return BoxTypeSidx() } -func (sidx *Sidx) GetFieldLength(name string) uint { +func (sidx *Sidx) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "References": return uint(sidx.ReferenceCount) @@ -1363,7 +1389,7 @@ func (*Smhd) GetType() BoxType { } // StringifyField returns field value as string -func (smhd *Smhd) StringifyField(name string, indent string, depth int) (string, bool) { +func (smhd *Smhd) StringifyField(name string, indent string, depth int, bss BoxStructureStatus) (string, bool) { switch name { case "Balance": return strconv.FormatFloat(float64(smhd.GetBalance()), 'f', -1, 32), true @@ -1421,7 +1447,7 @@ func (*Stco) GetType() BoxType { } // GetFieldLength returns length of dynamic field -func (stco *Stco) GetFieldLength(name string) uint { +func (stco *Stco) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "ChunkOffset": return uint(stco.EntryCount) @@ -1456,7 +1482,7 @@ func (*Stsc) GetType() BoxType { } // GetFieldLength returns length of dynamic field -func (stsc *Stsc) GetFieldLength(name string) uint { +func (stsc *Stsc) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "Entries": return uint(stsc.EntryCount) @@ -1503,7 +1529,7 @@ func (*Stss) GetType() BoxType { } // GetFieldLength returns length of dynamic field -func (stss *Stss) GetFieldLength(name string) uint { +func (stss *Stss) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "SampleNumber": return uint(stss.EntryCount) @@ -1533,7 +1559,7 @@ func (*Stsz) GetType() BoxType { } // GetFieldLength returns length of dynamic field -func (stsz *Stsz) GetFieldLength(name string) uint { +func (stsz *Stsz) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "EntrySize": if stsz.SampleSize == 0 { @@ -1571,7 +1597,7 @@ func (*Stts) GetType() BoxType { } // GetFieldLength returns length of dynamic field -func (stts *Stts) GetFieldLength(name string) uint { +func (stts *Stts) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "Entries": return uint(stts.EntryCount) @@ -1690,7 +1716,7 @@ func (*Tfra) GetType() BoxType { } // GetFieldSize returns size of dynamic field -func (tfra *Tfra) GetFieldSize(name string) uint { +func (tfra *Tfra) GetFieldSize(name string, bss BoxStructureStatus) uint { switch name { case "TrafNumber": return (uint(tfra.LengthSizeOfTrafNum) + 1) * 8 @@ -1720,7 +1746,7 @@ func (tfra *Tfra) GetFieldSize(name string) uint { } // GetFieldLength returns length of dynamic field -func (tfra *Tfra) GetFieldLength(name string) uint { +func (tfra *Tfra) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "Entries": return uint(tfra.NumberOfEntry) @@ -1768,7 +1794,7 @@ func (*Tkhd) GetType() BoxType { } // StringifyField returns field value as string -func (tkhd *Tkhd) StringifyField(name string, indent string, depth int) (string, bool) { +func (tkhd *Tkhd) StringifyField(name string, indent string, depth int, bss BoxStructureStatus) (string, bool) { switch name { case "Width": return strconv.FormatFloat(tkhd.GetWidth(), 'f', -1, 32), true @@ -1891,7 +1917,7 @@ func (*Trun) GetType() BoxType { } // GetFieldSize returns size of dynamic field -func (trun *Trun) GetFieldSize(name string) uint { +func (trun *Trun) GetFieldSize(name string, bss BoxStructureStatus) uint { switch name { case "Entries": var size uint @@ -1914,7 +1940,7 @@ func (trun *Trun) GetFieldSize(name string) uint { } // GetFieldLength returns length of dynamic field -func (trun *Trun) GetFieldLength(name string) uint { +func (trun *Trun) GetFieldLength(name string, bss BoxStructureStatus) uint { switch name { case "Entries": return uint(trun.SampleCount) @@ -1959,3 +1985,21 @@ type Vmhd struct { func (*Vmhd) GetType() BoxType { return BoxTypeVmhd() } + +/*************************** wave ****************************/ + +func BoxTypeWave() BoxType { return StrToBoxType("wave") } + +func init() { + AddBoxDef(&Wave{}) +} + +// Wave is QuickTime wave box +type Wave struct { + Box +} + +// GetType returns the BoxType +func (*Wave) GetType() BoxType { + return BoxTypeWave() +} diff --git a/box_types_test.go b/box_types_test.go index 84fa8e1..0836e2e 100644 --- a/box_types_test.go +++ b/box_types_test.go @@ -16,6 +16,7 @@ func TestBoxTypes(t *testing.T) { dst IBox bin []byte str string + bss BoxStructureStatus }{ { name: "co64", @@ -946,6 +947,152 @@ func TestBoxTypes(t *testing.T) { `PreDefined=26505 ` + `SampleRate=19088743`, }, + { + name: "AudioSampleEntry", + src: &AudioSampleEntry{ + SampleEntry: SampleEntry{ + AnyTypeBox: AnyTypeBox{Type: StrToBoxType("enca")}, + DataReferenceIndex: 0x1234, + }, + EntryVersion: 0x0123, + ChannelCount: 0x2345, + SampleSize: 0x4567, + PreDefined: 0x6789, + SampleRate: 0x01234567, + }, + dst: &AudioSampleEntry{SampleEntry: SampleEntry{AnyTypeBox: AnyTypeBox{Type: StrToBoxType("enca")}}}, + bin: []byte{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved + 0x12, 0x34, // data reference index + 0x01, 0x23, // entry version + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved + 0x23, 0x45, // channel count + 0x45, 0x67, // sample size + 0x67, 0x89, // pre-defined + 0x00, 0x00, // reserved + 0x01, 0x23, 0x45, 0x67, // sample rate + }, + str: `DataReferenceIndex=4660 ` + + `EntryVersion=291 ` + + `ChannelCount=9029 ` + + `SampleSize=17767 ` + + `PreDefined=26505 ` + + `SampleRate=19088743`, + }, + { + name: "AudioSampleEntry (QuickTime v0)", + src: &AudioSampleEntry{ + SampleEntry: SampleEntry{ + AnyTypeBox: AnyTypeBox{Type: StrToBoxType("enca")}, + DataReferenceIndex: 0x1234, + }, + EntryVersion: 0, + ChannelCount: 0x2345, + SampleSize: 0x4567, + PreDefined: 0x6789, + SampleRate: 0x01234567, + }, + dst: &AudioSampleEntry{SampleEntry: SampleEntry{AnyTypeBox: AnyTypeBox{Type: StrToBoxType("enca")}}}, + bin: []byte{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved + 0x12, 0x34, // data reference index + 0x00, 0x00, // entry version + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved + 0x23, 0x45, // channel count + 0x45, 0x67, // sample size + 0x67, 0x89, // pre-defined + 0x00, 0x00, // reserved + 0x01, 0x23, 0x45, 0x67, // sample rate + }, + str: `DataReferenceIndex=4660 ` + + `EntryVersion=0 ` + + `ChannelCount=9029 ` + + `SampleSize=17767 ` + + `PreDefined=26505 ` + + `SampleRate=19088743`, + bss: BoxStructureStatus{IsQuickTimeCompatible: true}, + }, + { + name: "AudioSampleEntry (QuickTime v1)", + src: &AudioSampleEntry{ + SampleEntry: SampleEntry{ + AnyTypeBox: AnyTypeBox{Type: StrToBoxType("enca")}, + DataReferenceIndex: 0x1234, + }, + EntryVersion: 1, + ChannelCount: 0x2345, + SampleSize: 0x4567, + PreDefined: 0x6789, + SampleRate: 0x01234567, + QuickTimeData: []byte{0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff}, + }, + dst: &AudioSampleEntry{SampleEntry: SampleEntry{AnyTypeBox: AnyTypeBox{Type: StrToBoxType("enca")}}}, + bin: []byte{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved + 0x12, 0x34, // data reference index + 0x00, 0x01, // entry version + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved + 0x23, 0x45, // channel count + 0x45, 0x67, // sample size + 0x67, 0x89, // pre-defined + 0x00, 0x00, // reserved + 0x01, 0x23, 0x45, 0x67, // sample rate + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, + }, + str: `DataReferenceIndex=4660 ` + + `EntryVersion=1 ` + + `ChannelCount=9029 ` + + `SampleSize=17767 ` + + `PreDefined=26505 ` + + `SampleRate=19088743 ` + + `QuickTimeData=[0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff]`, + bss: BoxStructureStatus{IsQuickTimeCompatible: true}, + }, + { + name: "AudioSampleEntry (QuickTime v2)", + src: &AudioSampleEntry{ + SampleEntry: SampleEntry{ + AnyTypeBox: AnyTypeBox{Type: StrToBoxType("enca")}, + DataReferenceIndex: 0x1234, + }, + EntryVersion: 2, + ChannelCount: 0x2345, + SampleSize: 0x4567, + PreDefined: 0x6789, + SampleRate: 0x01234567, + QuickTimeData: []byte{ + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, + 0x00, 0x11, 0x22, 0x33, + }, + }, + dst: &AudioSampleEntry{SampleEntry: SampleEntry{AnyTypeBox: AnyTypeBox{Type: StrToBoxType("enca")}}}, + bin: []byte{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved + 0x12, 0x34, // data reference index + 0x00, 0x02, // entry version + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // reserved + 0x23, 0x45, // channel count + 0x45, 0x67, // sample size + 0x67, 0x89, // pre-defined + 0x00, 0x00, // reserved + 0x01, 0x23, 0x45, 0x67, // sample rate + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, + 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, + 0x00, 0x11, 0x22, 0x33, + }, + str: `DataReferenceIndex=4660 ` + + `EntryVersion=2 ` + + `ChannelCount=9029 ` + + `SampleSize=17767 ` + + `PreDefined=26505 ` + + `SampleRate=19088743 ` + + `QuickTimeData=[` + + `0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, ` + + `0x0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, ` + + `0x0, 0x11, 0x22, 0x33]`, + bss: BoxStructureStatus{IsQuickTimeCompatible: true}, + }, { name: "AVCDecoderConfiguration main profile", src: &AVCDecoderConfiguration{ @@ -2290,14 +2437,14 @@ func TestBoxTypes(t *testing.T) { t.Run(tc.name, func(t *testing.T) { // Marshal buf := bytes.NewBuffer(nil) - n, err := Marshal(buf, tc.src) + n, err := Marshal(buf, tc.src, tc.bss) require.NoError(t, err) assert.Equal(t, uint64(len(tc.bin)), n) assert.Equal(t, tc.bin, buf.Bytes()) // Unmarshal r := bytes.NewReader(tc.bin) - n, err = Unmarshal(r, uint64(len(tc.bin)), tc.dst) + n, err = Unmarshal(r, uint64(len(tc.bin)), tc.dst, tc.bss) require.NoError(t, err) assert.Equal(t, uint64(buf.Len()), n) assert.Equal(t, tc.src, tc.dst) @@ -2306,7 +2453,7 @@ func TestBoxTypes(t *testing.T) { assert.Equal(t, int64(buf.Len()), s) // UnmarshalAny - dst, n, err := UnmarshalAny(bytes.NewReader(tc.bin), tc.src.GetType(), uint64(len(tc.bin))) + dst, n, err := UnmarshalAny(bytes.NewReader(tc.bin), tc.src.GetType(), uint64(len(tc.bin)), tc.bss) require.NoError(t, err) assert.Equal(t, uint64(buf.Len()), n) assert.Equal(t, tc.src, dst) @@ -2315,7 +2462,7 @@ func TestBoxTypes(t *testing.T) { assert.Equal(t, int64(buf.Len()), s) // Stringify - str, err := Stringify(tc.src) + str, err := Stringify(tc.src, tc.bss) require.NoError(t, err) assert.Equal(t, tc.str, str) }) @@ -2387,7 +2534,7 @@ func TestHdlrUnmarshalHandlerName(t *testing.T) { // unmarshal dst := Hdlr{} r := bytes.NewReader(bin) - n, err := Unmarshal(r, uint64(len(bin)), &dst) + n, err := Unmarshal(r, uint64(len(bin)), &dst, BoxStructureStatus{}) assert.NoError(t, err) assert.Equal(t, uint64(len(bin)), n) assert.Equal(t, [4]byte{'v', 'i', 'd', 'e'}, dst.HandlerType) @@ -2408,7 +2555,7 @@ func TestMetaMarshalAppleQuickTime(t *testing.T) { // unmarshal dst := Meta{} r := bytes.NewReader(bin) - n, err := Unmarshal(r, uint64(len(bin)), &dst) + n, err := Unmarshal(r, uint64(len(bin)), &dst, BoxStructureStatus{}) assert.NoError(t, err) assert.Equal(t, uint64(0), n) s, _ := r.Seek(0, io.SeekCurrent) @@ -2451,7 +2598,7 @@ func TestAvcCInconsistentError(t *testing.T) { }, } buf := bytes.NewBuffer(nil) - _, err := Marshal(buf, avcc) + _, err := Marshal(buf, avcc, BoxStructureStatus{}) require.Error(t, err) assert.Equal(t, "each values of Profile and HighProfileFieldsEnabled are inconsistent", err.Error()) } diff --git a/extract.go b/extract.go index a850efa..5e3001b 100644 --- a/extract.go +++ b/extract.go @@ -26,7 +26,11 @@ func ExtractBoxesWithPayload(r io.ReadSeeker, parent *BoxInfo, paths []BoxPath) return nil, err } - box, _, err := UnmarshalAny(r, bi.Type, bi.Size-bi.HeaderSize) + var bss BoxStructureStatus + if parent != nil { + bss = parent.BoxStructureStatus + } + box, _, err := UnmarshalAny(r, bi.Type, bi.Size-bi.HeaderSize, bss) if err != nil { return nil, err } diff --git a/marshaller.go b/marshaller.go index e9ed662..1045bd6 100644 --- a/marshaller.go +++ b/marshaller.go @@ -14,8 +14,7 @@ import ( ) const ( - anyVersion = math.MaxUint8 - lengthUnlimited = math.MaxUint32 + anyVersion = math.MaxUint8 ) var ErrUnsupportedBoxVersion = errors.New("unsupported box version") @@ -24,15 +23,17 @@ type marshaller struct { writer bitio.Writer wbits uint64 src IImmutableBox + bss BoxStructureStatus } -func Marshal(w io.Writer, src IImmutableBox) (n uint64, err error) { +func Marshal(w io.Writer, src IImmutableBox, bss BoxStructureStatus) (n uint64, err error) { t := reflect.TypeOf(src).Elem() v := reflect.ValueOf(src).Elem() m := &marshaller{ writer: bitio.NewWriter(w), src: src, + bss: bss, } if err := m.marshalStruct(t, v); err != nil { @@ -83,16 +84,16 @@ func (m *marshaller) marshalStruct(t reflect.Type, v reflect.Value) error { if !ok { continue } - config, err := readFieldConfig(m.src, v, f.Name, parseFieldTag(tagStr)) + config, err := readFieldConfig(m.src, v, f.Name, parseFieldTag(tagStr), m.bss) if err != nil { return err } - if !isTargetField(m.src, config) { + if !isTargetField(m.src, config, m.bss) { continue } - wbits, override, err := config.cfo.OnWriteField(f.Name, m.writer) + wbits, override, err := config.cfo.OnWriteField(f.Name, m.writer, m.bss) if err != nil { return err } @@ -124,7 +125,7 @@ func (m *marshaller) marshalArray(t reflect.Type, v reflect.Value, config fieldC func (m *marshaller) marshalSlice(t reflect.Type, v reflect.Value, config fieldConfig) error { length := uint64(v.Len()) - if config.length != lengthUnlimited { + if config.length != LengthUnlimited { if length < uint64(config.length) { return fmt.Errorf("the slice has too few elements: required=%d actual=%d", config.length, length) } @@ -258,18 +259,19 @@ type unmarshaller struct { dst IBox size uint64 rbits uint64 + bss BoxStructureStatus } -func UnmarshalAny(r io.ReadSeeker, boxType BoxType, payloadSize uint64) (box IBox, n uint64, err error) { +func UnmarshalAny(r io.ReadSeeker, boxType BoxType, payloadSize uint64, bss BoxStructureStatus) (box IBox, n uint64, err error) { if dst, err := boxType.New(); err != nil { return nil, 0, err } else { - n, err := Unmarshal(r, payloadSize, dst) + n, err := Unmarshal(r, payloadSize, dst, bss) return dst, n, err } } -func Unmarshal(r io.ReadSeeker, payloadSize uint64, dst IBox) (n uint64, err error) { +func Unmarshal(r io.ReadSeeker, payloadSize uint64, dst IBox, bss BoxStructureStatus) (n uint64, err error) { t := reflect.TypeOf(dst).Elem() v := reflect.ValueOf(dst).Elem() @@ -279,9 +281,10 @@ func Unmarshal(r io.ReadSeeker, payloadSize uint64, dst IBox) (n uint64, err err reader: bitio.NewReadSeeker(r), dst: dst, size: payloadSize, + bss: bss, } - if n, override, err := dst.BeforeUnmarshal(r, payloadSize); err != nil { + if n, override, err := dst.BeforeUnmarshal(r, payloadSize, u.bss); err != nil { return 0, err } else if override { return n, nil @@ -370,16 +373,16 @@ func (u *unmarshaller) unmarshalStruct(t reflect.Type, v reflect.Value) error { if !ok { continue } - config, err := readFieldConfig(u.dst, v, f.Name, parseFieldTag(tagStr)) + config, err := readFieldConfig(u.dst, v, f.Name, parseFieldTag(tagStr), u.bss) if err != nil { return err } - if !isTargetField(u.dst, config) { + if !isTargetField(u.dst, config, u.bss) { continue } - rbits, override, err := config.cfo.OnReadField(f.Name, u.reader, u.size*8-u.rbits) + rbits, override, err := config.cfo.OnReadField(f.Name, u.reader, u.size*8-u.rbits, u.bss) if err != nil { return err } @@ -418,7 +421,7 @@ func (u *unmarshaller) unmarshalSlice(t reflect.Type, v reflect.Value, config fi elemType := t.Elem() length := uint64(config.length) - if config.length == lengthUnlimited { + if config.length == LengthUnlimited { if config.size != 0 { left := (u.size)*8 - u.rbits if left%uint64(config.size) != 0 { @@ -446,11 +449,11 @@ func (u *unmarshaller) unmarshalSlice(t reflect.Type, v reflect.Value, config fi } else { slice = reflect.MakeSlice(t, 0, int(length)) for i := 0; ; i++ { - if config.length != lengthUnlimited && uint(i) >= config.length { + if config.length != LengthUnlimited && uint(i) >= config.length { break } - if config.length == lengthUnlimited && u.rbits >= u.size*8 { + if config.length == LengthUnlimited && u.rbits >= u.size*8 { break } @@ -632,7 +635,7 @@ func (u *unmarshaller) tryReadPString(t reflect.Type, v reflect.Value, config fi return false, err } remainingSize -= uint64(plen) - if config.cfo.IsPString(config.name, buf, remainingSize) { + if config.cfo.IsPString(config.name, buf, remainingSize, u.bss) { u.rbits += uint64(len(buf)+1) * 8 v.SetString(string(buf)) return true, nil @@ -684,7 +687,7 @@ type fieldConfig struct { hidden bool } -func readFieldConfig(box IImmutableBox, parent reflect.Value, fieldName string, tag fieldTag) (config fieldConfig, err error) { +func readFieldConfig(box IImmutableBox, parent reflect.Value, fieldName string, tag fieldTag, bss BoxStructureStatus) (config fieldConfig, err error) { config.name = fieldName cfo, ok := parent.Addr().Interface().(ICustomFieldObject) if ok { @@ -695,7 +698,7 @@ func readFieldConfig(box IImmutableBox, parent reflect.Value, fieldName string, if val, contained := tag["size"]; contained { if val == "dynamic" { - config.size = config.cfo.GetFieldSize(fieldName) + config.size = config.cfo.GetFieldSize(fieldName, bss) } else { var size uint64 size, err = strconv.ParseUint(val, 10, 32) @@ -706,10 +709,10 @@ func readFieldConfig(box IImmutableBox, parent reflect.Value, fieldName string, } } - config.length = lengthUnlimited + config.length = LengthUnlimited if val, contained := tag["len"]; contained { if val == "dynamic" { - config.length = config.cfo.GetFieldLength(fieldName) + config.length = config.cfo.GetFieldLength(fieldName, bss) } else { var l uint64 l, err = strconv.ParseUint(val, 10, 32) @@ -822,7 +825,7 @@ func parseFieldTag(str string) fieldTag { return tag } -func isTargetField(box IImmutableBox, config fieldConfig) bool { +func isTargetField(box IImmutableBox, config fieldConfig, bss BoxStructureStatus) bool { if box.GetVersion() != anyVersion { if config.version != anyVersion && box.GetVersion() != config.version { return false @@ -841,7 +844,7 @@ func isTargetField(box IImmutableBox, config fieldConfig) bool { return false } - if config.optDynamic && !config.cfo.IsOptFieldEnabled(config.name) { + if config.optDynamic && !config.cfo.IsOptFieldEnabled(config.name, bss) { return false } diff --git a/marshaller_test.go b/marshaller_test.go index 27ed4eb..7d04bee 100644 --- a/marshaller_test.go +++ b/marshaller_test.go @@ -21,7 +21,7 @@ func (m *mockBox) GetType() BoxType { return m.Type } -func (m *mockBox) GetFieldSize(n string) uint { +func (m *mockBox) GetFieldSize(n string, bss BoxStructureStatus) uint { if s, ok := m.DynSizeMap[n]; !ok { panic(fmt.Errorf("invalid name of dynamic-size field: %s", n)) } else { @@ -29,7 +29,7 @@ func (m *mockBox) GetFieldSize(n string) uint { } } -func (m *mockBox) GetFieldLength(n string) uint { +func (m *mockBox) GetFieldLength(n string, bss BoxStructureStatus) uint { if l, ok := m.DynLenMap[n]; !ok { panic(fmt.Errorf("invalid name of dynamic-length field: %s", n)) } else { @@ -180,14 +180,14 @@ func TestMarshal(t *testing.T) { // marshal buf := &bytes.Buffer{} - n, err := Marshal(buf, &src) + n, err := Marshal(buf, &src, BoxStructureStatus{}) require.NoError(t, err) assert.Equal(t, uint64(len(bin)), n) assert.Equal(t, bin, buf.Bytes()) // unmarshal dst := testBox{mockBox: mb} - n, err = Unmarshal(bytes.NewReader(bin), uint64(len(bin)+8), &dst) + n, err = Unmarshal(bytes.NewReader(bin), uint64(len(bin)+8), &dst, BoxStructureStatus{}) assert.NoError(t, err) assert.Equal(t, uint64(len(bin)), n) assert.Equal(t, src, dst) @@ -229,7 +229,7 @@ func TestUnsupportedBoxVersionErr(t *testing.T) { } dst := testBox{mockBox: mb} - n, err := Unmarshal(bytes.NewReader(bin), uint64(len(bin)+8), &dst) + n, err := Unmarshal(bytes.NewReader(bin), uint64(len(bin)+8), &dst, BoxStructureStatus{}) if e.enabled { assert.NoError(t, err, "version=%d", e.version) @@ -308,7 +308,7 @@ func TestReadFieldConfig(t *testing.T) { name: "ByteArray", cfo: box, size: 8, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: anyVersion, }, @@ -329,7 +329,7 @@ func TestReadFieldConfig(t *testing.T) { name: "ByteArray", cfo: box, size: 3, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: anyVersion, }, @@ -378,7 +378,7 @@ func TestReadFieldConfig(t *testing.T) { name: "Int", cfo: box, size: 13, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: anyVersion, varint: true, @@ -393,7 +393,7 @@ func TestReadFieldConfig(t *testing.T) { name: "Int", cfo: box, size: 32, - length: lengthUnlimited, + length: LengthUnlimited, version: 0, nVersion: anyVersion, }, @@ -407,7 +407,7 @@ func TestReadFieldConfig(t *testing.T) { name: "Int", cfo: box, size: 32, - length: lengthUnlimited, + length: LengthUnlimited, version: 1, nVersion: anyVersion, }, @@ -428,7 +428,7 @@ func TestReadFieldConfig(t *testing.T) { name: "Int", cfo: box, size: 32, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: 0, }, @@ -442,7 +442,7 @@ func TestReadFieldConfig(t *testing.T) { name: "Int", cfo: box, size: 32, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: 1, }, @@ -462,7 +462,7 @@ func TestReadFieldConfig(t *testing.T) { expected: fieldConfig{ name: "String", cfo: box, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: anyVersion, optDynamic: true, @@ -476,7 +476,7 @@ func TestReadFieldConfig(t *testing.T) { expected: fieldConfig{ name: "String", cfo: box, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: anyVersion, optFlag: 0x0100, @@ -490,7 +490,7 @@ func TestReadFieldConfig(t *testing.T) { expected: fieldConfig{ name: "String", cfo: box, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: anyVersion, optFlag: 0x0020, @@ -511,7 +511,7 @@ func TestReadFieldConfig(t *testing.T) { expected: fieldConfig{ name: "String", cfo: box, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: anyVersion, nOptFlag: 0x0100, @@ -525,7 +525,7 @@ func TestReadFieldConfig(t *testing.T) { expected: fieldConfig{ name: "String", cfo: box, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: anyVersion, nOptFlag: 0x0020, @@ -547,7 +547,7 @@ func TestReadFieldConfig(t *testing.T) { name: "Int", cfo: box, size: 32, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: anyVersion, cnst: "0", @@ -561,7 +561,7 @@ func TestReadFieldConfig(t *testing.T) { expected: fieldConfig{ name: "FullBox", cfo: box, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: anyVersion, extend: true, @@ -576,7 +576,7 @@ func TestReadFieldConfig(t *testing.T) { name: "Int", cfo: box, size: 32, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: anyVersion, hex: true, @@ -590,7 +590,7 @@ func TestReadFieldConfig(t *testing.T) { expected: fieldConfig{ name: "String", cfo: box, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: anyVersion, str: true, @@ -605,7 +605,7 @@ func TestReadFieldConfig(t *testing.T) { expected: fieldConfig{ name: "String", cfo: box, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: anyVersion, str: true, @@ -620,7 +620,7 @@ func TestReadFieldConfig(t *testing.T) { expected: fieldConfig{ name: "String", cfo: box, - length: lengthUnlimited, + length: LengthUnlimited, version: anyVersion, nVersion: anyVersion, iso639_2: true, @@ -631,7 +631,7 @@ func TestReadFieldConfig(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { v := reflect.ValueOf(tc.box).Elem() - config, err := readFieldConfig(tc.box, v, tc.fieldName, tc.fieldTag) + config, err := readFieldConfig(tc.box, v, tc.fieldName, tc.fieldTag, BoxStructureStatus{}) if tc.err { assert.Error(t, err) return diff --git a/mp4tool/mp4dump/mp4dump.go b/mp4tool/mp4dump/mp4dump.go index 32867db..ea8c1fa 100644 --- a/mp4tool/mp4dump/mp4dump.go +++ b/mp4tool/mp4dump/mp4dump.go @@ -132,7 +132,7 @@ func (m *mp4dump) dump(r io.ReadSeeker) error { return nil, err } - str, err := mp4.Stringify(box) + str, err := mp4.Stringify(box, h.BoxInfo.BoxStructureStatus) if err != nil { return nil, err } diff --git a/mp4tool/mp4edit/mp4edit.go b/mp4tool/mp4edit/mp4edit.go index c054e25..1b0034c 100644 --- a/mp4tool/mp4edit/mp4edit.go +++ b/mp4tool/mp4edit/mp4edit.go @@ -108,7 +108,7 @@ func editFile(inputPath, outputPath string) error { } } - n, err := mp4.Marshal(outputFile, box) + n, err := mp4.Marshal(outputFile, box, bi.BoxStructureStatus) if err != nil { return nil, err } diff --git a/mp4tool/psshdump/psshdump.go b/mp4tool/psshdump/psshdump.go index de29952..f90203b 100644 --- a/mp4tool/psshdump/psshdump.go +++ b/mp4tool/psshdump/psshdump.go @@ -36,7 +36,7 @@ func dump(inputFilePath string) error { for i := range bs { pssh := bs[i].Payload.(*mp4.Pssh) - sysid, _ := pssh.StringifyField("SystemID", "", 0) + sysid, _ := pssh.StringifyField("SystemID", "", 0, bs[i].Info.BoxStructureStatus) if _, err := bs[i].Info.SeekToStart(inputFile); err != nil { return err diff --git a/probe.go b/probe.go index 2e69f50..51cf297 100644 --- a/probe.go +++ b/probe.go @@ -106,7 +106,7 @@ func probeTkhd(r io.ReadSeeker, bi *BoxInfo, info *TrackInfo) error { } tkhd := Tkhd{} - _, err := Unmarshal(r, bi.Size-bi.HeaderSize, &tkhd) + _, err := Unmarshal(r, bi.Size-bi.HeaderSize, &tkhd, bi.BoxStructureStatus) if err != nil { return err } @@ -126,7 +126,7 @@ func probeMdhd(r io.ReadSeeker, bi *BoxInfo, info *TrackInfo) error { } mdhd := Mdhd{} - _, err := Unmarshal(r, bi.Size-bi.HeaderSize, &mdhd) + _, err := Unmarshal(r, bi.Size-bi.HeaderSize, &mdhd, bi.BoxStructureStatus) if err != nil { return err } @@ -183,7 +183,7 @@ func probeTfhd(r io.ReadSeeker, bi *BoxInfo, segment *SegmentInfo) error { } tfhd := Tfhd{} - _, err := Unmarshal(r, bi.Size-bi.HeaderSize, &tfhd) + _, err := Unmarshal(r, bi.Size-bi.HeaderSize, &tfhd, bi.BoxStructureStatus) if err != nil { return err } @@ -200,7 +200,7 @@ func probeTfdt(r io.ReadSeeker, bi *BoxInfo, segment *SegmentInfo) error { } tfdt := Tfdt{} - _, err := Unmarshal(r, bi.Size-bi.HeaderSize, &tfdt) + _, err := Unmarshal(r, bi.Size-bi.HeaderSize, &tfdt, bi.BoxStructureStatus) if err != nil { return err } @@ -220,7 +220,7 @@ func probeTrun(r io.ReadSeeker, bi *BoxInfo, segment *SegmentInfo) error { } trun := Trun{} - _, err := Unmarshal(r, bi.Size-bi.HeaderSize, &trun) + _, err := Unmarshal(r, bi.Size-bi.HeaderSize, &trun, bi.BoxStructureStatus) if err != nil { return err } @@ -263,7 +263,7 @@ func probeTfra(r io.ReadSeeker, bi *BoxInfo, info *FraProbeInfo) error { } tfra := Tfra{} - _, err := Unmarshal(r, bi.Size-bi.HeaderSize, &tfra) + _, err := Unmarshal(r, bi.Size-bi.HeaderSize, &tfra, bi.BoxStructureStatus) if err != nil { return err } diff --git a/read.go b/read.go index de652bf..0065691 100644 --- a/read.go +++ b/read.go @@ -39,7 +39,7 @@ func ReadBoxStructure(r io.ReadSeeker, handler ReadHandler, params ...interface{ if _, err := r.Seek(0, io.SeekStart); err != nil { return nil, err } - return readBoxStructure(r, 0, true, nil, handler, params) + return readBoxStructure(r, 0, true, nil, BoxStructureStatus{}, handler, params) } func ReadBoxStructureFromInternal(r io.ReadSeeker, bi *BoxInfo, handler ReadHandler, params ...interface{}) (interface{}, error) { @@ -47,10 +47,30 @@ func ReadBoxStructureFromInternal(r io.ReadSeeker, bi *BoxInfo, handler ReadHand } func readBoxStructureFromInternal(r io.ReadSeeker, bi *BoxInfo, path BoxPath, handler ReadHandler, params []interface{}) (interface{}, error) { - if _, err := r.Seek(int64(bi.Offset+bi.HeaderSize), io.SeekCurrent); err != nil { + if _, err := bi.SeekToPayload(r); err != nil { return nil, err } + // check comatible-brands + if len(path) == 0 && bi.Type == BoxTypeFtyp() { + var ftyp Ftyp + if _, err := Unmarshal(r, bi.Size-bi.HeaderSize, &ftyp, bi.BoxStructureStatus); err != nil { + return nil, err + } + for _, cb := range ftyp.CompatibleBrands { + if cb.CompatibleBrand == CompatibleBrandQT() { + bi.IsQuickTimeCompatible = true + } + } + if _, err := bi.SeekToPayload(r); err != nil { + return nil, err + } + } + + if bi.Type == BoxTypeWave() { + bi.UnderWave = true + } + newPath := make(BoxPath, len(path)+1) copy(newPath, path) newPath[len(path)] = bi.Type @@ -68,7 +88,7 @@ func readBoxStructureFromInternal(r io.ReadSeeker, bi *BoxInfo, path BoxPath, ha return nil, 0, err } - if box, n, err := UnmarshalAny(r, bi.Type, bi.Size-bi.HeaderSize); err != nil { + if box, n, err := UnmarshalAny(r, bi.Type, bi.Size-bi.HeaderSize, bi.BoxStructureStatus); err != nil { return nil, 0, err } else { childrenOffset = bi.Offset + bi.HeaderSize + n @@ -94,7 +114,7 @@ func readBoxStructureFromInternal(r io.ReadSeeker, bi *BoxInfo, path BoxPath, ha return nil, err } - if _, n, err := UnmarshalAny(r, bi.Type, bi.Size-bi.HeaderSize); err != nil { + if _, n, err := UnmarshalAny(r, bi.Type, bi.Size-bi.HeaderSize, bi.BoxStructureStatus); err != nil { return nil, err } else { childrenOffset = bi.Offset + bi.HeaderSize + n @@ -106,7 +126,7 @@ func readBoxStructureFromInternal(r io.ReadSeeker, bi *BoxInfo, path BoxPath, ha } childrenSize := bi.Offset + bi.Size - childrenOffset - return readBoxStructure(r, childrenSize, false, newPath, handler, params) + return readBoxStructure(r, childrenSize, false, newPath, bi.BoxStructureStatus, handler, params) } if val, err := handler(h); err != nil { @@ -118,7 +138,7 @@ func readBoxStructureFromInternal(r io.ReadSeeker, bi *BoxInfo, path BoxPath, ha } } -func readBoxStructure(r io.ReadSeeker, totalSize uint64, isRoot bool, path BoxPath, handler ReadHandler, params []interface{}) ([]interface{}, error) { +func readBoxStructure(r io.ReadSeeker, totalSize uint64, isRoot bool, path BoxPath, bss BoxStructureStatus, handler ReadHandler, params []interface{}) ([]interface{}, error) { vals := make([]interface{}, 0, 8) for isRoot || totalSize != 0 { @@ -134,11 +154,17 @@ func readBoxStructure(r io.ReadSeeker, totalSize uint64, isRoot bool, path BoxPa } totalSize -= bi.Size + bi.BoxStructureStatus = bss + val, err := readBoxStructureFromInternal(r, bi, path, handler, params) if err != nil { return nil, err } vals = append(vals, val) + + if bi.IsQuickTimeCompatible { + bss.IsQuickTimeCompatible = true + } } if totalSize != 0 { diff --git a/read_test.go b/read_test.go index 51c8d6e..6949875 100644 --- a/read_test.go +++ b/read_test.go @@ -121,3 +121,99 @@ func TestReadBoxStructure(t *testing.T) { // 54 [ilst] Size=45 // 55 [0xa9746f6f] (unsupported box type) Size=37 Data=[...] (use "-full 0xa9746f6f" to show all) // 56 [loci] (unsupported box type) Size=35 Data=[...] (use "-full loci" to show all) + +func TestReadBoxStructureQT(t *testing.T) { + f, err := os.Open("./_examples/sample_qt.mp4") + require.NoError(t, err) + defer f.Close() + + var n int + _, err = ReadBoxStructure(f, func(h *ReadHandle) (interface{}, error) { + n++ + switch n { + case 5, 42, 45: // unsupported + require.False(t, h.BoxInfo.Type.IsSupported()) + buf := bytes.NewBuffer(nil) + n, err := h.ReadData(buf) + require.NoError(t, err) + require.Equal(t, h.BoxInfo.Size-h.BoxInfo.HeaderSize, n) + assert.Len(t, buf.Bytes(), int(n)) + case 40: // mp4a + require.True(t, h.BoxInfo.Type.IsSupported()) + require.Equal(t, StrToBoxType("mp4a"), h.BoxInfo.Type) + box, n, err := h.ReadPayload() + require.NoError(t, err) + require.Equal(t, uint64(44), n) + assert.Equal(t, []byte{0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2}, box.(*AudioSampleEntry).QuickTimeData) + _, err = h.Expand() + require.NoError(t, err) + case 43: // mp4a + require.True(t, h.BoxInfo.Type.IsSupported()) + require.Equal(t, StrToBoxType("mp4a"), h.BoxInfo.Type) + box, n, err := h.ReadPayload() + require.NoError(t, err) + require.Equal(t, uint64(4), n) + assert.Equal(t, []byte{0x0, 0x0, 0x0, 0x0}, box.(*AudioSampleEntry).QuickTimeData) + _, err = h.Expand() + require.NoError(t, err) + default: // otherwise + require.True(t, h.BoxInfo.Type.IsSupported()) + _, err = h.Expand() + require.NoError(t, err) + } + return nil, nil + }) + require.NoError(t, err) + assert.Equal(t, 49, n) +} + +// > mp4tool dump -full mp4a sample_qt.mp4 | cat -n +// 1 [ftyp] Size=20 MajorBrand="qt " MinorVersion=512 CompatibleBrands=[{CompatibleBrand="qt "}] +// 2 [free] Size=42 Data=[...] (use "-full free" to show all) +// 3 [moov] Size=340232 +// 4 [udta] Size=31 +// 5 [(c)enc] (unsupported box type) Size=23 Data=[...] (use "-full (c)enc" to show all) +// 6 [mvhd] Size=108 ... (use "-full mvhd" to show all) +// 7 [trak] Size=115889 +// 8 [tkhd] Size=92 ... (use "-full tkhd" to show all) +// 9 [mdia] Size=115789 +// 10 [mdhd] Size=32 Version=0 Flags=0x000000 CreationTimeV0=2082844800 ModificationTimeV0=2082844800 Timescale=24 DurationV0=14315 Pad=false Language="```" PreDefined=0 +// 11 [hdlr] Size=45 Version=0 Flags=0x000000 PreDefined=1835560050 HandlerType="vide" Name="VideoHandler" +// 12 [minf] Size=115704 +// 13 [hdlr] Size=44 Version=0 Flags=0x000000 PreDefined=1684565106 HandlerType="url " Name="DataHandler" +// 14 [vmhd] Size=20 Version=0 Flags=0x000001 Graphicsmode=0 Opcolor=[0, 0, 0] +// 15 [dinf] Size=36 +// 16 [dref] Size=28 Version=0 Flags=0x000000 EntryCount=1 +// 17 [url ] Size=12 Version=0 Flags=0x000001 +// 18 [stbl] Size=115596 +// 19 [stsd] Size=148 Version=0 Flags=0x000000 EntryCount=1 +// 20 [avc1] Size=132 ... (use "-full avc1" to show all) +// 21 [avcC] Size=46 ... (use "-full avcC" to show all) +// 22 [stts] Size=24 Version=0 Flags=0x000000 EntryCount=1 Entries=[{SampleCount=14315 SampleDelta=1}] +// 23 [stss] Size=832 ... (use "-full stss" to show all) +// 24 [stsc] Size=28 Version=0 Flags=0x000000 EntryCount=1 Entries=[{FirstChunk=1 SamplesPerChunk=1 SampleDescriptionIndex=1}] +// 25 [stsz] Size=57280 ... (use "-full stsz" to show all) +// 26 [stco] Size=57276 ... (use "-full stco" to show all) +// 27 [trak] Size=224196 +// 28 [tkhd] Size=92 ... (use "-full tkhd" to show all) +// 29 [mdia] Size=224096 +// 30 [mdhd] Size=32 Version=0 Flags=0x000000 CreationTimeV0=2082844800 ModificationTimeV0=2082844800 Timescale=48000 DurationV0=28628992 Pad=false Language="```" PreDefined=0 +// 31 [hdlr] Size=45 Version=0 Flags=0x000000 PreDefined=1835560050 HandlerType="soun" Name="SoundHandler" +// 32 [minf] Size=224011 +// 33 [hdlr] Size=44 Version=0 Flags=0x000000 PreDefined=1684565106 HandlerType="url " Name="DataHandler" +// 34 [smhd] Size=16 Version=0 Flags=0x000000 Balance=0 +// 35 [dinf] Size=36 +// 36 [dref] Size=28 Version=0 Flags=0x000000 EntryCount=1 +// 37 [url ] Size=12 Version=0 Flags=0x000001 +// 38 [stbl] Size=223907 +// 39 [stsd] Size=147 Version=0 Flags=0x000000 EntryCount=1 +// 40 [mp4a] Size=131 DataReferenceIndex=1 EntryVersion=1 ChannelCount=2 SampleSize=16 PreDefined=65534 SampleRate=3145728000 QuickTimeData=[0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x2] +// 41 [wave] Size=79 +// 42 [frma] (unsupported box type) Size=12 Data=[...] (use "-full frma" to show all) +// 43 [mp4a] Size=12 QuickTimeData=[0x0, 0x0, 0x0, 0x0] +// 44 [esds] Size=39 ... (use "-full esds" to show all) +// 45 [0x00000000] (unsupported box type) Size=8 Data=[...] (use "-full 0x00000000" to show all) +// 46 [stts] Size=24 Version=0 Flags=0x000000 EntryCount=1 Entries=[{SampleCount=27958 SampleDelta=1024}] +// 47 [stsc] Size=28 Version=0 Flags=0x000000 EntryCount=1 Entries=[{FirstChunk=1 SamplesPerChunk=1 SampleDescriptionIndex=1}] +// 48 [stsz] Size=111852 ... (use "-full stsz" to show all) +// 49 [stco] Size=111848 ... (use "-full stco" to show all) diff --git a/string.go b/string.go index a14d5a2..0370ce0 100644 --- a/string.go +++ b/string.go @@ -12,13 +12,14 @@ type stringfier struct { buf *bytes.Buffer src IImmutableBox indent string + bss BoxStructureStatus } -func Stringify(src IImmutableBox) (string, error) { - return StringifyWithIndent(src, "") +func Stringify(src IImmutableBox, bss BoxStructureStatus) (string, error) { + return StringifyWithIndent(src, "", bss) } -func StringifyWithIndent(src IImmutableBox, indent string) (string, error) { +func StringifyWithIndent(src IImmutableBox, indent string, bss BoxStructureStatus) (string, error) { t := reflect.TypeOf(src).Elem() v := reflect.ValueOf(src).Elem() @@ -26,6 +27,7 @@ func StringifyWithIndent(src IImmutableBox, indent string) (string, error) { buf: bytes.NewBuffer(nil), src: src, indent: indent, + bss: bss, } err := m.stringifyStruct(t, v, 0, true) @@ -81,12 +83,12 @@ func (m *stringfier) stringifyStruct(t reflect.Type, v reflect.Value, depth int, if !ok { continue } - config, err := readFieldConfig(m.src, v, f.Name, parseFieldTag(tagStr)) + config, err := readFieldConfig(m.src, v, f.Name, parseFieldTag(tagStr), m.bss) if err != nil { return err } - if !isTargetField(m.src, config) { + if !isTargetField(m.src, config, m.bss) { continue } @@ -104,7 +106,7 @@ func (m *stringfier) stringifyStruct(t reflect.Type, v reflect.Value, depth int, m.buf.WriteString("=") } - str, ok := config.cfo.StringifyField(f.Name, m.indent, depth+1) + str, ok := config.cfo.StringifyField(f.Name, m.indent, depth+1, m.bss) if ok { m.buf.WriteString(str) if !config.extend && m.indent != "" { @@ -174,7 +176,7 @@ func (m *stringfier) stringifySlice(t reflect.Type, v reflect.Value, config fiel m.buf.WriteString(begin) for i := 0; i < v.Len(); i++ { - if config.length != lengthUnlimited && uint(i) >= config.length { + if config.length != LengthUnlimited && uint(i) >= config.length { break } diff --git a/string_test.go b/string_test.go index d425ed9..01ee5eb 100644 --- a/string_test.go +++ b/string_test.go @@ -54,7 +54,7 @@ func TestEmsgStringify(t *testing.T) { Bool: true, } - str, err := StringifyWithIndent(&box, " ") + str, err := StringifyWithIndent(&box, " ", BoxStructureStatus{}) require.NoError(t, err) assert.Equal(t, ` Version=0`+"\n"+ ` Flags=0x000000`+"\n"+ @@ -74,7 +74,7 @@ func TestEmsgStringify(t *testing.T) { ` Array="hoge"`+"\n"+ ` Bool=true`+"\n", str) - str, err = Stringify(&box) + str, err = Stringify(&box, BoxStructureStatus{}) require.NoError(t, err) assert.Equal(t, `Version=0 Flags=0x000000 String="abema.tv" Int32=-1234567890 Int32Hex=0x12345678 Uint32=1234567890 Bytes="abema" Ptr={Uint64=0x1234567890} Uint64=0x1234567890 Struct={Uint64=0x1234567890} Uint64=0x1234567890 Array="hoge" Bool=true`, str) }