Files
monibuca/plugin/mp4/pkg/box/stbl.go
langhuihui f4923d9df6 in progress
2025-02-11 20:21:37 +08:00

65 lines
989 B
Go

package box
import (
"bytes"
"io"
)
type SampleTable struct {
STSD *STSDBox
STTS *STTSBox
CTTS *CTTSBox
STSC *STSCBox
STSZ *STSZBox
STSS *STSSBox
STCO *STCOBox
}
type SampleTableBox struct {
BaseBox
SampleTable
}
func (stbl *SampleTableBox) WriteTo(w io.Writer) (n int64, err error) {
return WriteTo(w, stbl.STSD, stbl.STTS, stbl.CTTS, stbl.STSC, stbl.STSZ, stbl.STSS, stbl.STCO)
}
func (stbl *SampleTableBox) Unmarshal(buf []byte) (IBox, error) {
r := bytes.NewReader(buf)
for {
box, err := ReadFrom(r)
if err != nil {
break
}
switch box := box.(type) {
case *STSDBox:
stbl.STSD = box
case *STTSBox:
stbl.STTS = box
case *CTTSBox:
stbl.CTTS = box
case *STCOBox:
stbl.STCO = box
case *CO64Box:
co64 := STCOBox(*box)
stbl.STCO = &co64
case *STSCBox:
stbl.STSC = box
case *STSZBox:
stbl.STSZ = box
case *STSSBox:
stbl.STSS = box
}
}
return stbl, nil
}
func init() {
RegisterBox[*SampleTableBox](TypeSTBL)
}