mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-10-29 07:02:26 -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
|
||||
}
|
||||
|
||||
// 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
|
||||
// (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 {
|
||||
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
|
||||
}
|
||||
for _, checkfmt := range alphaPixelFormats {
|
||||
if pixfmt == checkfmt {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue