[chore]: Bump github.com/abema/go-mp4 from 1.0.0 to 1.1.1 (#2257)

Bumps [github.com/abema/go-mp4](https://github.com/abema/go-mp4) from 1.0.0 to 1.1.1.
- [Release notes](https://github.com/abema/go-mp4/releases)
- [Commits](https://github.com/abema/go-mp4/compare/v1.0.0...v1.1.1)

---
updated-dependencies:
- dependency-name: github.com/abema/go-mp4
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
dependabot[bot]
2023-10-09 10:13:37 +02:00
committed by GitHub
parent 5aeceb5ff7
commit abd598e8f6
7 changed files with 81 additions and 11 deletions

View File

@ -3,6 +3,7 @@ package mp4
import (
"bytes"
"encoding/binary"
"fmt"
"io"
"math"
)
@ -128,7 +129,6 @@ func ReadBoxInfo(r io.ReadSeeker) (*BoxInfo, error) {
if _, err := bi.SeekToPayload(r); err != nil {
return nil, err
}
} else if bi.Size == 1 {
// read more 8 bytes
buf.Reset()
@ -139,6 +139,10 @@ func ReadBoxInfo(r io.ReadSeeker) (*BoxInfo, error) {
bi.Size = binary.BigEndian.Uint64(buf.Bytes())
}
if bi.Size == 0 {
return nil, fmt.Errorf("invalid size")
}
return bi, nil
}

View File

@ -0,0 +1,36 @@
package mp4
/*************************** ac-3 ****************************/
// https://www.etsi.org/deliver/etsi_ts/102300_102399/102366/01.04.01_60/ts_102366v010401p.pdf
func BoxTypeAC3() BoxType { return StrToBoxType("ac-3") }
func init() {
AddAnyTypeBoxDef(&AudioSampleEntry{}, BoxTypeAC3())
}
/*************************** dac3 ****************************/
// https://www.etsi.org/deliver/etsi_ts/102300_102399/102366/01.04.01_60/ts_102366v010401p.pdf
func BoxTypeDAC3() BoxType { return StrToBoxType("dac3") }
func init() {
AddBoxDef(&Dac3{})
}
type Dac3 struct {
Box
Fscod uint8 `mp4:"0,size=2"`
Bsid uint8 `mp4:"1,size=5"`
Bsmod uint8 `mp4:"2,size=3"`
Acmod uint8 `mp4:"3,size=3"`
LfeOn uint8 `mp4:"4,size=1"`
BitRateCode uint8 `mp4:"5,size=5"`
Reserved uint8 `mp4:"6,size=5,const=0"`
}
func (Dac3) GetType() BoxType {
return BoxTypeDAC3()
}

View File

@ -638,6 +638,10 @@ func (hdlr *Hdlr) OnReadName(r bitio.ReadSeeker, leftBits uint64, ctx Context) (
return 0, true, nil
}
if !readerHasSize(r, size) {
return 0, false, fmt.Errorf("not enough bits")
}
buf := make([]byte, size)
if _, err := io.ReadFull(r, buf); err != nil {
return 0, false, err
@ -1197,6 +1201,7 @@ func (*Saiz) GetType() BoxType {
/*********************** SampleEntry *************************/
func BoxTypeMp4v() BoxType { return StrToBoxType("mp4v") }
func BoxTypeAvc1() BoxType { return StrToBoxType("avc1") }
func BoxTypeEncv() BoxType { return StrToBoxType("encv") }
func BoxTypeHev1() BoxType { return StrToBoxType("hev1") }
@ -1207,6 +1212,7 @@ func BoxTypeAvcC() BoxType { return StrToBoxType("avcC") }
func BoxTypePasp() BoxType { return StrToBoxType("pasp") }
func init() {
AddAnyTypeBoxDef(&VisualSampleEntry{}, BoxTypeMp4v())
AddAnyTypeBoxDef(&VisualSampleEntry{}, BoxTypeAvc1())
AddAnyTypeBoxDef(&VisualSampleEntry{}, BoxTypeEncv())
AddAnyTypeBoxDef(&VisualSampleEntry{}, BoxTypeHev1())

View File

@ -17,6 +17,29 @@ const (
var ErrUnsupportedBoxVersion = errors.New("unsupported box version")
func readerHasSize(reader bitio.ReadSeeker, size uint64) bool {
pre, err := reader.Seek(0, io.SeekCurrent)
if err != nil {
return false
}
end, err := reader.Seek(0, io.SeekEnd)
if err != nil {
return false
}
if uint64(end-pre) < size {
return false
}
_, err = reader.Seek(pre, io.SeekStart)
if err != nil {
return false
}
return true
}
type marshaller struct {
writer bitio.Writer
wbits uint64
@ -417,12 +440,13 @@ func (u *unmarshaller) unmarshalSlice(v reflect.Value, fi *fieldInstance) error
}
}
if length > math.MaxInt32 {
return fmt.Errorf("out of memory: requestedSize=%d", length)
}
if fi.size != 0 && fi.size%8 == 0 && u.rbits%8 == 0 && elemType.Kind() == reflect.Uint8 && fi.size == 8 {
if u.rbits%8 == 0 && elemType.Kind() == reflect.Uint8 && fi.size == 8 {
totalSize := length * uint64(fi.size) / 8
if !readerHasSize(u.reader, totalSize) {
return fmt.Errorf("not enough bits")
}
buf := bytes.NewBuffer(make([]byte, 0, totalSize))
if _, err := io.CopyN(buf, u.reader, int64(totalSize)); err != nil {
return err
@ -431,7 +455,7 @@ func (u *unmarshaller) unmarshalSlice(v reflect.Value, fi *fieldInstance) error
u.rbits += uint64(totalSize) * 8
} else {
slice = reflect.MakeSlice(v.Type(), 0, int(length))
slice = reflect.MakeSlice(v.Type(), 0, 0)
for i := 0; ; i++ {
if fi.length != LengthUnlimited && uint(i) >= fi.length {
break