diff options
Diffstat (limited to 'vendor/github.com/abema/go-mp4/read.go')
-rw-r--r-- | vendor/github.com/abema/go-mp4/read.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/vendor/github.com/abema/go-mp4/read.go b/vendor/github.com/abema/go-mp4/read.go index e4fadb121..7118d802a 100644 --- a/vendor/github.com/abema/go-mp4/read.go +++ b/vendor/github.com/abema/go-mp4/read.go @@ -64,6 +64,18 @@ func readBoxStructureFromInternal(r io.ReadSeeker, bi *BoxInfo, path BoxPath, ha } } + // parse numbered ilst items after keys box by saving EntryCount field to context + if bi.Type == BoxTypeKeys() { + var keys Keys + if _, err := Unmarshal(r, bi.Size-bi.HeaderSize, &keys, bi.Context); err != nil { + return nil, err + } + bi.QuickTimeKeysMetaEntryCount = int(keys.EntryCount) + if _, err := bi.SeekToPayload(r); err != nil { + return nil, err + } + } + ctx := bi.Context if bi.Type == BoxTypeWave() { ctx.UnderWave = true @@ -172,6 +184,11 @@ func readBoxStructure(r io.ReadSeeker, totalSize uint64, isRoot bool, path BoxPa if bi.IsQuickTimeCompatible { ctx.IsQuickTimeCompatible = true } + + // preserve keys entry count on context for subsequent ilst number item box + if bi.Type == BoxTypeKeys() { + ctx.QuickTimeKeysMetaEntryCount = bi.QuickTimeKeysMetaEntryCount + } } if totalSize != 0 && !ctx.IsQuickTimeCompatible { |