mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 06:42:25 -05:00 
			
		
		
		
	* 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
		
	
			
		
			
				
	
	
		
			164 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			164 lines
		
	
	
	
		
			4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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
 | |
| )
 |