mirror of
https://github.com/wader/fq.git
synced 2024-11-23 09:56:07 +03:00
mp4: Add tapt, prof, enof and clap boxes
This commit is contained in:
parent
9cba69e64d
commit
278e909a2f
@ -274,6 +274,7 @@ func init() {
|
|||||||
d.FieldU24("flags")
|
d.FieldU24("flags")
|
||||||
d.FieldU16("graphicsmode")
|
d.FieldU16("graphicsmode")
|
||||||
d.FieldArray("opcolor", func(d *decode.D) {
|
d.FieldArray("opcolor", func(d *decode.D) {
|
||||||
|
// TODO: is FP16?
|
||||||
d.FieldU16("value")
|
d.FieldU16("value")
|
||||||
d.FieldU16("value")
|
d.FieldU16("value")
|
||||||
d.FieldU16("value")
|
d.FieldU16("value")
|
||||||
@ -1205,5 +1206,34 @@ func init() {
|
|||||||
d.FieldRawLen("data", d.BitsLeft())
|
d.FieldRawLen("data", d.BitsLeft())
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"tapt": decodeBoxes,
|
||||||
|
"clef": func(_ *decodeContext, d *decode.D) {
|
||||||
|
d.FieldU8("version")
|
||||||
|
d.FieldU24("flags")
|
||||||
|
d.FieldFP32("width")
|
||||||
|
d.FieldFP32("height")
|
||||||
|
},
|
||||||
|
"prof": func(_ *decodeContext, d *decode.D) {
|
||||||
|
d.FieldU8("version")
|
||||||
|
d.FieldU24("flags")
|
||||||
|
d.FieldFP32("width")
|
||||||
|
d.FieldFP32("height")
|
||||||
|
},
|
||||||
|
"enof": func(_ *decodeContext, d *decode.D) {
|
||||||
|
d.FieldU8("version")
|
||||||
|
d.FieldU24("flags")
|
||||||
|
d.FieldFP32("width")
|
||||||
|
d.FieldFP32("height")
|
||||||
|
},
|
||||||
|
"clap": func(_ *decodeContext, d *decode.D) {
|
||||||
|
d.FieldU32("aperture_width_n")
|
||||||
|
d.FieldU32("aperture_width_d")
|
||||||
|
d.FieldU32("aperture_height_n")
|
||||||
|
d.FieldU32("aperture_height_d")
|
||||||
|
d.FieldU32("horiz_off_n")
|
||||||
|
d.FieldU32("horiz_off_d")
|
||||||
|
d.FieldU32("vert_off_n")
|
||||||
|
d.FieldU32("vert_off_d")
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -358,7 +358,7 @@ func (d *D) tryFE(nBits int, endian Endian) (float64, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *D) tryFPE(nBits int, fBits int64, endian Endian) (float64, error) {
|
func (d *D) tryFPE(nBits int, fBits int, endian Endian) (float64, error) {
|
||||||
n, err := d.bits(nBits)
|
n, err := d.bits(nBits)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
|
@ -12798,9 +12798,9 @@ func (d *D) FieldF64BE(name string, sfns ...ScalarFn) float64 {
|
|||||||
// Reader FP
|
// Reader FP
|
||||||
|
|
||||||
// TryFP tries to read nBits fixed-point number in current endian
|
// TryFP tries to read nBits fixed-point number in current endian
|
||||||
func (d *D) TryFP(nBits int, fBits int64) (float64, error) { return d.tryFPE(nBits, fBits, d.Endian) }
|
func (d *D) TryFP(nBits int, fBits int) (float64, error) { return d.tryFPE(nBits, fBits, d.Endian) }
|
||||||
|
|
||||||
func (d *D) ScalarFP(nBits int, fBits int64) func(Scalar) (Scalar, error) {
|
func (d *D) ScalarFP(nBits int, fBits int) func(Scalar) (Scalar, error) {
|
||||||
return func(s Scalar) (Scalar, error) {
|
return func(s Scalar) (Scalar, error) {
|
||||||
v, err := d.tryFPE(nBits, fBits, d.Endian)
|
v, err := d.tryFPE(nBits, fBits, d.Endian)
|
||||||
s.Actual = v
|
s.Actual = v
|
||||||
@ -12809,7 +12809,7 @@ func (d *D) ScalarFP(nBits int, fBits int64) func(Scalar) (Scalar, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FP reads nBits fixed-point number in current endian
|
// FP reads nBits fixed-point number in current endian
|
||||||
func (d *D) FP(nBits int, fBits int64) float64 {
|
func (d *D) FP(nBits int, fBits int) float64 {
|
||||||
v, err := d.tryFPE(nBits, fBits, d.Endian)
|
v, err := d.tryFPE(nBits, fBits, d.Endian)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(IOError{Err: err, Op: "FP", Pos: d.Pos()})
|
panic(IOError{Err: err, Op: "FP", Pos: d.Pos()})
|
||||||
@ -12818,7 +12818,7 @@ func (d *D) FP(nBits int, fBits int64) float64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TryFieldFP tries to add a field and read nBits fixed-point number in current endian
|
// TryFieldFP tries to add a field and read nBits fixed-point number in current endian
|
||||||
func (d *D) TryFieldFP(name string, nBits int, fBits int64, sfns ...ScalarFn) (float64, error) {
|
func (d *D) TryFieldFP(name string, nBits int, fBits int, sfns ...ScalarFn) (float64, error) {
|
||||||
v, err := d.TryFieldScalar(name, d.ScalarFP(nBits, fBits), sfns...)
|
v, err := d.TryFieldScalar(name, d.ScalarFP(nBits, fBits), sfns...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
@ -12827,7 +12827,7 @@ func (d *D) TryFieldFP(name string, nBits int, fBits int64, sfns ...ScalarFn) (f
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FieldFP adds a field and reads nBits fixed-point number in current endian
|
// FieldFP adds a field and reads nBits fixed-point number in current endian
|
||||||
func (d *D) FieldFP(name string, nBits int, fBits int64, sfns ...ScalarFn) float64 {
|
func (d *D) FieldFP(name string, nBits int, fBits int, sfns ...ScalarFn) float64 {
|
||||||
v, err := d.TryFieldFP(name, nBits, fBits, sfns...)
|
v, err := d.TryFieldFP(name, nBits, fBits, sfns...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(IOError{Err: err, Name: name, Op: "FP", Pos: d.Pos()})
|
panic(IOError{Err: err, Name: name, Op: "FP", Pos: d.Pos()})
|
||||||
@ -12838,11 +12838,11 @@ func (d *D) FieldFP(name string, nBits int, fBits int64, sfns ...ScalarFn) float
|
|||||||
// Reader FPE
|
// Reader FPE
|
||||||
|
|
||||||
// TryFPE tries to read nBits fixed-point number in specified endian
|
// TryFPE tries to read nBits fixed-point number in specified endian
|
||||||
func (d *D) TryFPE(nBits int, fBits int64, endian Endian) (float64, error) {
|
func (d *D) TryFPE(nBits int, fBits int, endian Endian) (float64, error) {
|
||||||
return d.tryFPE(nBits, fBits, endian)
|
return d.tryFPE(nBits, fBits, endian)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *D) ScalarFPE(nBits int, fBits int64, endian Endian) func(Scalar) (Scalar, error) {
|
func (d *D) ScalarFPE(nBits int, fBits int, endian Endian) func(Scalar) (Scalar, error) {
|
||||||
return func(s Scalar) (Scalar, error) {
|
return func(s Scalar) (Scalar, error) {
|
||||||
v, err := d.tryFPE(nBits, fBits, endian)
|
v, err := d.tryFPE(nBits, fBits, endian)
|
||||||
s.Actual = v
|
s.Actual = v
|
||||||
@ -12851,7 +12851,7 @@ func (d *D) ScalarFPE(nBits int, fBits int64, endian Endian) func(Scalar) (Scala
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FPE reads nBits fixed-point number in specified endian
|
// FPE reads nBits fixed-point number in specified endian
|
||||||
func (d *D) FPE(nBits int, fBits int64, endian Endian) float64 {
|
func (d *D) FPE(nBits int, fBits int, endian Endian) float64 {
|
||||||
v, err := d.tryFPE(nBits, fBits, endian)
|
v, err := d.tryFPE(nBits, fBits, endian)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(IOError{Err: err, Op: "FPE", Pos: d.Pos()})
|
panic(IOError{Err: err, Op: "FPE", Pos: d.Pos()})
|
||||||
@ -12860,7 +12860,7 @@ func (d *D) FPE(nBits int, fBits int64, endian Endian) float64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// TryFieldFPE tries to add a field and read nBits fixed-point number in specified endian
|
// TryFieldFPE tries to add a field and read nBits fixed-point number in specified endian
|
||||||
func (d *D) TryFieldFPE(name string, nBits int, fBits int64, endian Endian, sfns ...ScalarFn) (float64, error) {
|
func (d *D) TryFieldFPE(name string, nBits int, fBits int, endian Endian, sfns ...ScalarFn) (float64, error) {
|
||||||
v, err := d.TryFieldScalar(name, d.ScalarFPE(nBits, fBits, endian), sfns...)
|
v, err := d.TryFieldScalar(name, d.ScalarFPE(nBits, fBits, endian), sfns...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
@ -12869,7 +12869,7 @@ func (d *D) TryFieldFPE(name string, nBits int, fBits int64, endian Endian, sfns
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FieldFPE adds a field and reads nBits fixed-point number in specified endian
|
// FieldFPE adds a field and reads nBits fixed-point number in specified endian
|
||||||
func (d *D) FieldFPE(name string, nBits int, fBits int64, endian Endian, sfns ...ScalarFn) float64 {
|
func (d *D) FieldFPE(name string, nBits int, fBits int, endian Endian, sfns ...ScalarFn) float64 {
|
||||||
v, err := d.TryFieldFPE(name, nBits, fBits, endian, sfns...)
|
v, err := d.TryFieldFPE(name, nBits, fBits, endian, sfns...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(IOError{Err: err, Name: name, Op: "FPE", Pos: d.Pos()})
|
panic(IOError{Err: err, Name: name, Op: "FPE", Pos: d.Pos()})
|
||||||
|
@ -76,14 +76,14 @@
|
|||||||
{
|
{
|
||||||
"name": "",
|
"name": "",
|
||||||
"args": "nBits, fBits",
|
"args": "nBits, fBits",
|
||||||
"params": "nBits int, fBits int64",
|
"params": "nBits int, fBits int",
|
||||||
"call": "d.tryFPE(nBits, fBits, d.Endian)",
|
"call": "d.tryFPE(nBits, fBits, d.Endian)",
|
||||||
"doc": "nBits fixed-point number in current endian"
|
"doc": "nBits fixed-point number in current endian"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "E",
|
"name": "E",
|
||||||
"args": "nBits, fBits, endian",
|
"args": "nBits, fBits, endian",
|
||||||
"params": "nBits int, fBits int64, endian Endian",
|
"params": "nBits int, fBits int, endian Endian",
|
||||||
"call": "d.tryFPE(nBits, fBits, endian)",
|
"call": "d.tryFPE(nBits, fBits, endian)",
|
||||||
"doc": "nBits fixed-point number in specified endian"
|
"doc": "nBits fixed-point number in specified endian"
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user