mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-11-01 14:42:25 -05:00
[feature] Enable basic video support (mp4 only) (#1274)
* [feature] basic video support * fix missing semicolon * replace text shadow with stacked icons Co-authored-by: f0x <f0x@cthu.lu>
This commit is contained in:
parent
0f38e7c9b0
commit
2bbc64be43
39 changed files with 6276 additions and 93 deletions
188
vendor/github.com/abema/go-mp4/box.go
generated
vendored
Normal file
188
vendor/github.com/abema/go-mp4/box.go
generated
vendored
Normal file
|
|
@ -0,0 +1,188 @@
|
|||
package mp4
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"io"
|
||||
"math"
|
||||
|
||||
"github.com/abema/go-mp4/bitio"
|
||||
)
|
||||
|
||||
const LengthUnlimited = math.MaxUint32
|
||||
|
||||
type ICustomFieldObject interface {
|
||||
// GetFieldSize returns size of dynamic field
|
||||
GetFieldSize(name string, ctx Context) uint
|
||||
|
||||
// GetFieldLength returns length of dynamic field
|
||||
GetFieldLength(name string, ctx Context) uint
|
||||
|
||||
// IsOptFieldEnabled check whether if the optional field is enabled
|
||||
IsOptFieldEnabled(name string, ctx Context) bool
|
||||
|
||||
// StringifyField returns field value as string
|
||||
StringifyField(name string, indent string, depth int, ctx Context) (string, bool)
|
||||
|
||||
IsPString(name string, bytes []byte, remainingSize uint64, ctx Context) bool
|
||||
|
||||
BeforeUnmarshal(r io.ReadSeeker, size uint64, ctx Context) (n uint64, override bool, err error)
|
||||
|
||||
OnReadField(name string, r bitio.ReadSeeker, leftBits uint64, ctx Context) (rbits uint64, override bool, err error)
|
||||
|
||||
OnWriteField(name string, w bitio.Writer, ctx Context) (wbits uint64, override bool, err error)
|
||||
}
|
||||
|
||||
type BaseCustomFieldObject struct {
|
||||
}
|
||||
|
||||
// GetFieldSize returns size of dynamic field
|
||||
func (box *BaseCustomFieldObject) GetFieldSize(string, Context) uint {
|
||||
panic(errors.New("GetFieldSize not implemented"))
|
||||
}
|
||||
|
||||
// GetFieldLength returns length of dynamic field
|
||||
func (box *BaseCustomFieldObject) GetFieldLength(string, Context) uint {
|
||||
panic(errors.New("GetFieldLength not implemented"))
|
||||
}
|
||||
|
||||
// IsOptFieldEnabled check whether if the optional field is enabled
|
||||
func (box *BaseCustomFieldObject) IsOptFieldEnabled(string, Context) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
// StringifyField returns field value as string
|
||||
func (box *BaseCustomFieldObject) StringifyField(string, string, int, Context) (string, bool) {
|
||||
return "", false
|
||||
}
|
||||
|
||||
func (*BaseCustomFieldObject) IsPString(name string, bytes []byte, remainingSize uint64, ctx Context) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (*BaseCustomFieldObject) BeforeUnmarshal(io.ReadSeeker, uint64, Context) (uint64, bool, error) {
|
||||
return 0, false, nil
|
||||
}
|
||||
|
||||
func (*BaseCustomFieldObject) OnReadField(string, bitio.ReadSeeker, uint64, Context) (uint64, bool, error) {
|
||||
return 0, false, nil
|
||||
}
|
||||
|
||||
func (*BaseCustomFieldObject) OnWriteField(string, bitio.Writer, Context) (uint64, bool, error) {
|
||||
return 0, false, nil
|
||||
}
|
||||
|
||||
// IImmutableBox is common interface of box
|
||||
type IImmutableBox interface {
|
||||
ICustomFieldObject
|
||||
|
||||
// GetVersion returns the box version
|
||||
GetVersion() uint8
|
||||
|
||||
// GetFlags returns the flags
|
||||
GetFlags() uint32
|
||||
|
||||
// CheckFlag checks the flag status
|
||||
CheckFlag(uint32) bool
|
||||
|
||||
// GetType returns the BoxType
|
||||
GetType() BoxType
|
||||
}
|
||||
|
||||
// IBox is common interface of box
|
||||
type IBox interface {
|
||||
IImmutableBox
|
||||
|
||||
// SetVersion sets the box version
|
||||
SetVersion(uint8)
|
||||
|
||||
// SetFlags sets the flags
|
||||
SetFlags(uint32)
|
||||
|
||||
// AddFlag adds the flag
|
||||
AddFlag(uint32)
|
||||
|
||||
// RemoveFlag removes the flag
|
||||
RemoveFlag(uint32)
|
||||
}
|
||||
|
||||
type Box struct {
|
||||
BaseCustomFieldObject
|
||||
}
|
||||
|
||||
// GetVersion returns the box version
|
||||
func (box *Box) GetVersion() uint8 {
|
||||
return 0
|
||||
}
|
||||
|
||||
// SetVersion sets the box version
|
||||
func (box *Box) SetVersion(uint8) {
|
||||
}
|
||||
|
||||
// GetFlags returns the flags
|
||||
func (box *Box) GetFlags() uint32 {
|
||||
return 0x000000
|
||||
}
|
||||
|
||||
// CheckFlag checks the flag status
|
||||
func (box *Box) CheckFlag(flag uint32) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
// SetFlags sets the flags
|
||||
func (box *Box) SetFlags(uint32) {
|
||||
}
|
||||
|
||||
// AddFlag adds the flag
|
||||
func (box *Box) AddFlag(flag uint32) {
|
||||
}
|
||||
|
||||
// RemoveFlag removes the flag
|
||||
func (box *Box) RemoveFlag(flag uint32) {
|
||||
}
|
||||
|
||||
// FullBox is ISOBMFF FullBox
|
||||
type FullBox struct {
|
||||
BaseCustomFieldObject
|
||||
Version uint8 `mp4:"0,size=8"`
|
||||
Flags [3]byte `mp4:"1,size=8"`
|
||||
}
|
||||
|
||||
// GetVersion returns the box version
|
||||
func (box *FullBox) GetVersion() uint8 {
|
||||
return box.Version
|
||||
}
|
||||
|
||||
// SetVersion sets the box version
|
||||
func (box *FullBox) SetVersion(version uint8) {
|
||||
box.Version = version
|
||||
}
|
||||
|
||||
// GetFlags returns the flags
|
||||
func (box *FullBox) GetFlags() uint32 {
|
||||
flag := uint32(box.Flags[0]) << 16
|
||||
flag ^= uint32(box.Flags[1]) << 8
|
||||
flag ^= uint32(box.Flags[2])
|
||||
return flag
|
||||
}
|
||||
|
||||
// CheckFlag checks the flag status
|
||||
func (box *FullBox) CheckFlag(flag uint32) bool {
|
||||
return box.GetFlags()&flag != 0
|
||||
}
|
||||
|
||||
// SetFlags sets the flags
|
||||
func (box *FullBox) SetFlags(flags uint32) {
|
||||
box.Flags[0] = byte(flags >> 16)
|
||||
box.Flags[1] = byte(flags >> 8)
|
||||
box.Flags[2] = byte(flags)
|
||||
}
|
||||
|
||||
// AddFlag adds the flag
|
||||
func (box *FullBox) AddFlag(flag uint32) {
|
||||
box.SetFlags(box.GetFlags() | flag)
|
||||
}
|
||||
|
||||
// RemoveFlag removes the flag
|
||||
func (box *FullBox) RemoveFlag(flag uint32) {
|
||||
box.SetFlags(box.GetFlags() & (^flag))
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue