mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-29 19:52:24 -05:00 
			
		
		
		
	[performance] use faster pixel format matching function (#4271)
Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4271 Co-authored-by: kim <grufwub@gmail.com> Co-committed-by: kim <grufwub@gmail.com>
This commit is contained in:
		
					parent
					
						
							
								726584287a
							
						
					
				
			
			
				commit
				
					
						76e7fd62d2
					
				
			
		
					 1 changed files with 100 additions and 62 deletions
				
			
		|  | @ -348,71 +348,109 @@ func generateWebpBlurhash(filepath string) (string, error) { | ||||||
| 	return blurhash, nil | 	return blurhash, nil | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // List of pixel formats that have an alpha layer. |  | ||||||
| // Derived from the following very messy command: |  | ||||||
| // |  | ||||||
| //	for res in $(ffprobe -show_entries pixel_format=name:flags=alpha | grep -B1 alpha=1 | grep name); do echo $res | sed 's/name=//g' | sed 's/^/"/g' | sed 's/$/",/g'; done |  | ||||||
| var alphaPixelFormats = []string{ |  | ||||||
| 	"pal8", |  | ||||||
| 	"argb", |  | ||||||
| 	"rgba", |  | ||||||
| 	"abgr", |  | ||||||
| 	"bgra", |  | ||||||
| 	"yuva420p", |  | ||||||
| 	"ya8", |  | ||||||
| 	"yuva422p", |  | ||||||
| 	"yuva444p", |  | ||||||
| 	"yuva420p9be", |  | ||||||
| 	"yuva420p9le", |  | ||||||
| 	"yuva422p9be", |  | ||||||
| 	"yuva422p9le", |  | ||||||
| 	"yuva444p9be", |  | ||||||
| 	"yuva444p9le", |  | ||||||
| 	"yuva420p10be", |  | ||||||
| 	"yuva420p10le", |  | ||||||
| 	"yuva422p10be", |  | ||||||
| 	"yuva422p10le", |  | ||||||
| 	"yuva444p10be", |  | ||||||
| 	"yuva444p10le", |  | ||||||
| 	"yuva420p16be", |  | ||||||
| 	"yuva420p16le", |  | ||||||
| 	"yuva422p16be", |  | ||||||
| 	"yuva422p16le", |  | ||||||
| 	"yuva444p16be", |  | ||||||
| 	"yuva444p16le", |  | ||||||
| 	"rgba64be", |  | ||||||
| 	"rgba64le", |  | ||||||
| 	"bgra64be", |  | ||||||
| 	"bgra64le", |  | ||||||
| 	"ya16be", |  | ||||||
| 	"ya16le", |  | ||||||
| 	"gbrap", |  | ||||||
| 	"gbrap16be", |  | ||||||
| 	"gbrap16le", |  | ||||||
| 	"ayuv64le", |  | ||||||
| 	"ayuv64be", |  | ||||||
| 	"gbrap12be", |  | ||||||
| 	"gbrap12le", |  | ||||||
| 	"gbrap10be", |  | ||||||
| 	"gbrap10le", |  | ||||||
| 	"gbrapf32be", |  | ||||||
| 	"gbrapf32le", |  | ||||||
| 	"yuva422p12be", |  | ||||||
| 	"yuva422p12le", |  | ||||||
| 	"yuva444p12be", |  | ||||||
| 	"yuva444p12le", |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // containsAlpha returns whether given pixfmt | // containsAlpha returns whether given pixfmt | ||||||
| // (i.e. colorspace) contains an alpha channel. | // (i.e. colorspace) contains an alpha channel. | ||||||
|  | // | ||||||
|  | // generated with: for entry in $(ffprobe.wasm -show_entries pixel_format=name:flags=alpha 2>/dev/null | grep -B1 alpha=1 | sed -n '/name=/{ s|name=||; p }'); do printf '\tcase "%s":\n\t\treturn true\n' "$entry"; done | ||||||
| func containsAlpha(pixfmt string) bool { | func containsAlpha(pixfmt string) bool { | ||||||
| 	if pixfmt == "" { | 	switch pixfmt { | ||||||
|  | 	case "pal8": | ||||||
|  | 		return true | ||||||
|  | 	case "argb": | ||||||
|  | 		return true | ||||||
|  | 	case "rgba": | ||||||
|  | 		return true | ||||||
|  | 	case "abgr": | ||||||
|  | 		return true | ||||||
|  | 	case "bgra": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva420p": | ||||||
|  | 		return true | ||||||
|  | 	case "ya8": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva422p": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva444p": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva420p9be": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva420p9le": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva422p9be": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva422p9le": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva444p9be": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva444p9le": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva420p10be": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva420p10le": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva422p10be": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva422p10le": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva444p10be": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva444p10le": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva420p16be": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva420p16le": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva422p16be": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva422p16le": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva444p16be": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva444p16le": | ||||||
|  | 		return true | ||||||
|  | 	case "rgba64be": | ||||||
|  | 		return true | ||||||
|  | 	case "rgba64le": | ||||||
|  | 		return true | ||||||
|  | 	case "bgra64be": | ||||||
|  | 		return true | ||||||
|  | 	case "bgra64le": | ||||||
|  | 		return true | ||||||
|  | 	case "ya16be": | ||||||
|  | 		return true | ||||||
|  | 	case "ya16le": | ||||||
|  | 		return true | ||||||
|  | 	case "gbrap": | ||||||
|  | 		return true | ||||||
|  | 	case "gbrap16be": | ||||||
|  | 		return true | ||||||
|  | 	case "gbrap16le": | ||||||
|  | 		return true | ||||||
|  | 	case "ayuv64le": | ||||||
|  | 		return true | ||||||
|  | 	case "ayuv64be": | ||||||
|  | 		return true | ||||||
|  | 	case "gbrap12be": | ||||||
|  | 		return true | ||||||
|  | 	case "gbrap12le": | ||||||
|  | 		return true | ||||||
|  | 	case "gbrap10be": | ||||||
|  | 		return true | ||||||
|  | 	case "gbrap10le": | ||||||
|  | 		return true | ||||||
|  | 	case "gbrapf32be": | ||||||
|  | 		return true | ||||||
|  | 	case "gbrapf32le": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva422p12be": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva422p12le": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva444p12be": | ||||||
|  | 		return true | ||||||
|  | 	case "yuva444p12le": | ||||||
|  | 		return true | ||||||
|  | 	default: | ||||||
| 		return false | 		return false | ||||||
| 	} | 	} | ||||||
| 	for _, checkfmt := range alphaPixelFormats { |  | ||||||
| 		if pixfmt == checkfmt { |  | ||||||
| 			return true |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	return false |  | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue