func (t *Fmp4Decoder) Init_fmp4(buf []byte) (b []byte, err error) {
var ftypI, ftypE, moovI, moovE int
- ies, e := decode(buf, "ftyp")
+ ies, recycle, e := decode(buf, "ftyp")
+ defer recycle(ies)
if e != nil {
return
}
}
)
- ies, e := decode(buf, "moof")
+ ies, recycle, e := decode(buf, "moof")
+ defer recycle(ies)
if e != nil {
return 0, e
}
}
)
- ies, e := decode(buf, "moof")
+ ies, recycle, e := decode(buf, "moof")
+ defer recycle(ies)
if e != nil {
return 0, e
}
var (
ErrMisBox = pe.New("decode", "ErrMisBox")
ErrCantResync = pe.New("decode")
+ iesPool = slice.NewFlexBlocks[ie](5)
)
-func decode(buf []byte, reSyncboxName string) (m []ie, err error) {
+func decode(buf []byte, reSyncboxName string) (m []ie, recycle func([]ie), err error) {
var cu int
+ m, recycle, err = iesPool.Get()
+ if err != nil {
+ return
+ }
+ m = m[:0]
+
for cu < len(buf)-fmp4BoxLenSize-fmp4BoxNameSize {
boxName, i, e, E := searchBox(buf, &cu)
if E != nil {
return
}
- m = append(m, ie{
- n: boxName,
- i: i,
- e: e,
- })
+ if cu := len(m); cu < cap(m) {
+ m = m[:cu+1]
+ m[cu].n = boxName
+ m[cu].i = i
+ m[cu].e = e
+ } else {
+ m = append(m, ie{
+ n: boxName,
+ i: i,
+ e: e,
+ })
+ }
}
return
require (
github.com/gotk3/gotk3 v0.6.4
github.com/mdp/qrterminal/v3 v3.2.0
- github.com/qydysky/part v0.28.20250509205808
+ github.com/qydysky/part v0.28.20250511190336
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
golang.org/x/text v0.24.0 // indirect
github.com/qydysky/biliApi v0.0.0-20250509210314-8407d638b123/go.mod h1:1FbgCj+aOwIvuRRuX/l5uTLb3JIwWyJSa0uEfwpYV/8=
github.com/qydysky/brotli v0.0.0-20240828134800-e9913a6e7ed9 h1:k451T+bpsLr+Dq9Ujo+Qtx0iomRA1XXS5ttlEojvfuQ=
github.com/qydysky/brotli v0.0.0-20240828134800-e9913a6e7ed9/go.mod h1:cI8/gy/wjy2Eb+p2IUj2ZuDnC8R5Vrx3O0VMPvMvphA=
-github.com/qydysky/part v0.28.20250509205808 h1:vyv+TA9uK9IV4n0J5nuACqrARESX2HphoLgslecubyw=
-github.com/qydysky/part v0.28.20250509205808/go.mod h1:wp71PQdKYcg9jn9yDDvqC4shS/kzejyvFqbfUxuHocY=
+github.com/qydysky/part v0.28.20250511190336 h1:99Wfw3jbBQ0iohS2bY5xKNh2mwv5weWoh7harkGEOQ0=
+github.com/qydysky/part v0.28.20250511190336/go.mod h1:wp71PQdKYcg9jn9yDDvqC4shS/kzejyvFqbfUxuHocY=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=