mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[feature] support processing of (many) more media types (#3090)
* initial work replacing our media decoding / encoding pipeline with ffprobe + ffmpeg * specify the video codec to use when generating static image from emoji * update go-storage library (fixes incompatibility after updating go-iotools) * maintain image aspect ratio when generating a thumbnail for it * update readme to show go-ffmpreg * fix a bunch of media tests, move filesize checking to callers of media manager for more flexibility * remove extra debug from error message * fix up incorrect function signatures * update PutFile to just use regular file copy, as changes are file is on separate partition * fix remaining tests, remove some unneeded tests now we're working with ffmpeg/ffprobe * update more tests, add more code comments * add utilities to generate processed emoji / media outputs * fix remaining tests * add test for opus media file, add license header to utility cmds * limit the number of concurrently available ffmpeg / ffprobe instances * reduce number of instances * further reduce number of instances * fix envparsing test with configuration variables * update docs and configuration with new media-{local,remote}-max-size variables
This commit is contained in:
164
vendor/github.com/tetratelabs/wazero/internal/wasip1/fs.go
generated
vendored
Normal file
164
vendor/github.com/tetratelabs/wazero/internal/wasip1/fs.go
generated
vendored
Normal file
@ -0,0 +1,164 @@
|
||||
package wasip1
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
)
|
||||
|
||||
const (
|
||||
FdAdviseName = "fd_advise"
|
||||
FdAllocateName = "fd_allocate"
|
||||
FdCloseName = "fd_close"
|
||||
FdDatasyncName = "fd_datasync"
|
||||
FdFdstatGetName = "fd_fdstat_get"
|
||||
FdFdstatSetFlagsName = "fd_fdstat_set_flags"
|
||||
FdFdstatSetRightsName = "fd_fdstat_set_rights"
|
||||
FdFilestatGetName = "fd_filestat_get"
|
||||
FdFilestatSetSizeName = "fd_filestat_set_size"
|
||||
FdFilestatSetTimesName = "fd_filestat_set_times"
|
||||
FdPreadName = "fd_pread"
|
||||
FdPrestatGetName = "fd_prestat_get"
|
||||
FdPrestatDirNameName = "fd_prestat_dir_name"
|
||||
FdPwriteName = "fd_pwrite"
|
||||
FdReadName = "fd_read"
|
||||
FdReaddirName = "fd_readdir"
|
||||
FdRenumberName = "fd_renumber"
|
||||
FdSeekName = "fd_seek"
|
||||
FdSyncName = "fd_sync"
|
||||
FdTellName = "fd_tell"
|
||||
FdWriteName = "fd_write"
|
||||
|
||||
PathCreateDirectoryName = "path_create_directory"
|
||||
PathFilestatGetName = "path_filestat_get"
|
||||
PathFilestatSetTimesName = "path_filestat_set_times"
|
||||
PathLinkName = "path_link"
|
||||
PathOpenName = "path_open"
|
||||
PathReadlinkName = "path_readlink"
|
||||
PathRemoveDirectoryName = "path_remove_directory"
|
||||
PathRenameName = "path_rename"
|
||||
PathSymlinkName = "path_symlink"
|
||||
PathUnlinkFileName = "path_unlink_file"
|
||||
)
|
||||
|
||||
// oflags are open flags used by path_open
|
||||
// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-oflags-flagsu16
|
||||
const (
|
||||
// O_CREAT creates a file if it does not exist.
|
||||
O_CREAT uint16 = 1 << iota //nolint
|
||||
// O_DIRECTORY fails if not a directory.
|
||||
O_DIRECTORY
|
||||
// O_EXCL fails if file already exists.
|
||||
O_EXCL //nolint
|
||||
// O_TRUNC truncates the file to size 0.
|
||||
O_TRUNC //nolint
|
||||
)
|
||||
|
||||
func OflagsString(oflags int) string {
|
||||
return flagsString(oflagNames[:], oflags)
|
||||
}
|
||||
|
||||
var oflagNames = [...]string{
|
||||
"CREAT",
|
||||
"DIRECTORY",
|
||||
"EXCL",
|
||||
"TRUNC",
|
||||
}
|
||||
|
||||
// file descriptor flags
|
||||
// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#fdflags
|
||||
const (
|
||||
FD_APPEND uint16 = 1 << iota //nolint
|
||||
FD_DSYNC
|
||||
FD_NONBLOCK
|
||||
FD_RSYNC
|
||||
FD_SYNC
|
||||
)
|
||||
|
||||
func FdFlagsString(fdflags int) string {
|
||||
return flagsString(fdflagNames[:], fdflags)
|
||||
}
|
||||
|
||||
var fdflagNames = [...]string{
|
||||
"APPEND",
|
||||
"DSYNC",
|
||||
"NONBLOCK",
|
||||
"RSYNC",
|
||||
"SYNC",
|
||||
}
|
||||
|
||||
// See https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#lookupflags
|
||||
const (
|
||||
// LOOKUP_SYMLINK_FOLLOW expands a path if it resolves into a symbolic
|
||||
// link.
|
||||
LOOKUP_SYMLINK_FOLLOW uint16 = 1 << iota //nolint
|
||||
)
|
||||
|
||||
var lookupflagNames = [...]string{
|
||||
"SYMLINK_FOLLOW",
|
||||
}
|
||||
|
||||
func LookupflagsString(lookupflags int) string {
|
||||
return flagsString(lookupflagNames[:], lookupflags)
|
||||
}
|
||||
|
||||
// DirentSize is the size of the dirent struct, which should be followed by the
|
||||
// length of a file name.
|
||||
const DirentSize = uint32(24)
|
||||
|
||||
const (
|
||||
FILETYPE_UNKNOWN uint8 = iota
|
||||
FILETYPE_BLOCK_DEVICE
|
||||
FILETYPE_CHARACTER_DEVICE
|
||||
FILETYPE_DIRECTORY
|
||||
FILETYPE_REGULAR_FILE
|
||||
FILETYPE_SOCKET_DGRAM
|
||||
FILETYPE_SOCKET_STREAM
|
||||
FILETYPE_SYMBOLIC_LINK
|
||||
)
|
||||
|
||||
// FiletypeName returns string name of the file type.
|
||||
func FiletypeName(filetype uint8) string {
|
||||
if int(filetype) < len(filetypeToString) {
|
||||
return filetypeToString[filetype]
|
||||
}
|
||||
return fmt.Sprintf("filetype(%d)", filetype)
|
||||
}
|
||||
|
||||
var filetypeToString = [...]string{
|
||||
"UNKNOWN",
|
||||
"BLOCK_DEVICE",
|
||||
"CHARACTER_DEVICE",
|
||||
"DIRECTORY",
|
||||
"REGULAR_FILE",
|
||||
"SOCKET_DGRAM",
|
||||
"SOCKET_STREAM",
|
||||
"SYMBOLIC_LINK",
|
||||
}
|
||||
|
||||
// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#fstflags
|
||||
const (
|
||||
FstflagsAtim uint16 = 1 << iota
|
||||
FstflagsAtimNow
|
||||
FstflagsMtim
|
||||
FstflagsMtimNow
|
||||
)
|
||||
|
||||
var fstflagNames = [...]string{
|
||||
"ATIM",
|
||||
"ATIM_NOW",
|
||||
"MTIM",
|
||||
"MTIM_NOW",
|
||||
}
|
||||
|
||||
func FstflagsString(fdflags int) string {
|
||||
return flagsString(fstflagNames[:], fdflags)
|
||||
}
|
||||
|
||||
// https://github.com/WebAssembly/WASI/blob/snapshot-01/phases/snapshot/docs.md#-advice-enumu8
|
||||
const (
|
||||
FdAdviceNormal byte = iota
|
||||
FdAdviceSequential
|
||||
FdAdviceRandom
|
||||
FdAdviceWillNeed
|
||||
FdAdviceDontNeed
|
||||
FdAdviceNoReuse
|
||||
)
|
Reference in New Issue
Block a user