summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--go.mod2
-rw-r--r--go.sum4
-rw-r--r--vendor/github.com/abema/go-mp4/box_info.go6
-rw-r--r--vendor/github.com/abema/go-mp4/box_types_etsi_ts_102_366.go36
-rw-r--r--vendor/github.com/abema/go-mp4/box_types_iso14496_12.go6
-rw-r--r--vendor/github.com/abema/go-mp4/marshaller.go36
-rw-r--r--vendor/modules.txt2
7 files changed, 81 insertions, 11 deletions
diff --git a/go.mod b/go.mod
index 06ee515f8..9edc119e8 100644
--- a/go.mod
+++ b/go.mod
@@ -18,7 +18,7 @@ require (
codeberg.org/gruf/go-store/v2 v2.2.2
github.com/DmitriyVTitov/size v1.5.0
github.com/KimMachineGun/automemlimit v0.3.0
- github.com/abema/go-mp4 v1.0.0
+ github.com/abema/go-mp4 v1.1.1
github.com/buckket/go-blurhash v1.1.0
github.com/coreos/go-oidc/v3 v3.6.0
github.com/disintegration/imaging v1.6.2
diff --git a/go.sum b/go.sum
index 43779789f..cd84fb3e2 100644
--- a/go.sum
+++ b/go.sum
@@ -91,8 +91,8 @@ github.com/DmitriyVTitov/size v1.5.0 h1:/PzqxYrOyOUX1BXj6J9OuVRVGe+66VL4D9FlUaW5
github.com/DmitriyVTitov/size v1.5.0/go.mod h1:le6rNI4CoLQV1b9gzp1+3d7hMAD/uu2QcJ+aYbNgiU0=
github.com/KimMachineGun/automemlimit v0.3.0 h1:khgwM5ESVN85cE6Bq2ozMAAWDfrOEwQ51D/YlmThE04=
github.com/KimMachineGun/automemlimit v0.3.0/go.mod h1:pJhTW/nWJMj6SnWSU2TEKSlCaM+1N5Mej+IfS/5/Ol0=
-github.com/abema/go-mp4 v1.0.0 h1:SvfJv+fi2Bpa1uInouqIYpEUFN3yyYCQMXlf4ijOHf0=
-github.com/abema/go-mp4 v1.0.0/go.mod h1:vPl9t5ZK7K0x68jh12/+ECWBCXoWuIDtNgPtU2f04ws=
+github.com/abema/go-mp4 v1.1.1 h1:OfzkdMO6SWTBR1ltNSVwlTHatrAK9I3iYLQfkdEMMuc=
+github.com/abema/go-mp4 v1.1.1/go.mod h1:vPl9t5ZK7K0x68jh12/+ECWBCXoWuIDtNgPtU2f04ws=
github.com/ajg/form v1.5.1 h1:t9c7v8JUKu/XxOGBU0yjNpaMloxGEJhUkqFRq0ibGeU=
github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY=
github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
diff --git a/vendor/github.com/abema/go-mp4/box_info.go b/vendor/github.com/abema/go-mp4/box_info.go
index b5c587fd9..402b418ef 100644
--- a/vendor/github.com/abema/go-mp4/box_info.go
+++ b/vendor/github.com/abema/go-mp4/box_info.go
@@ -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
}
diff --git a/vendor/github.com/abema/go-mp4/box_types_etsi_ts_102_366.go b/vendor/github.com/abema/go-mp4/box_types_etsi_ts_102_366.go
new file mode 100644
index 000000000..7436e1833
--- /dev/null
+++ b/vendor/github.com/abema/go-mp4/box_types_etsi_ts_102_366.go
@@ -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()
+}
diff --git a/vendor/github.com/abema/go-mp4/box_types_iso14496_12.go b/vendor/github.com/abema/go-mp4/box_types_iso14496_12.go
index f87fb467b..017fd918d 100644
--- a/vendor/github.com/abema/go-mp4/box_types_iso14496_12.go
+++ b/vendor/github.com/abema/go-mp4/box_types_iso14496_12.go
@@ -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())
diff --git a/vendor/github.com/abema/go-mp4/marshaller.go b/vendor/github.com/abema/go-mp4/marshaller.go
index 18ff79a0c..ff6c64c32 100644
--- a/vendor/github.com/abema/go-mp4/marshaller.go
+++ b/vendor/github.com/abema/go-mp4/marshaller.go
@@ -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
diff --git a/vendor/modules.txt b/vendor/modules.txt
index aba19f24a..40ecdb295 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -77,7 +77,7 @@ github.com/DmitriyVTitov/size
## explicit; go 1.19
github.com/KimMachineGun/automemlimit
github.com/KimMachineGun/automemlimit/memlimit
-# github.com/abema/go-mp4 v1.0.0
+# github.com/abema/go-mp4 v1.1.1
## explicit; go 1.14
github.com/abema/go-mp4
github.com/abema/go-mp4/internal/bitio