mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-01 01:02:26 -05: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:
		
					parent
					
						
							
								5bc567196b
							
						
					
				
			
			
				commit
				
					
						cde2fb6244
					
				
			
		
					 376 changed files with 8026 additions and 54091 deletions
				
			
		
							
								
								
									
										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
 | 
			
		||||
)
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue