commit 5089b45b2813af6723b8133fe90a73ee95ca1290
parent c47859304e78ea6698ba3c3d33a0a29c999a9a4b
Author: Jack Mordaunt <jackmordaunt.dev@gmail.com>
Date: Wed, 10 Jul 2024 16:51:29 +0800
lib/dynamic/webp: [Linux] remove lossless hack
After some testing it seems that we can use float arguments just fine.
Signed-off-by: Jack Mordaunt <jackmordaunt.dev@gmail.com>
Diffstat:
3 files changed, 7 insertions(+), 38 deletions(-)
diff --git a/lib/dynamic/webp/encode_cgo.go b/lib/dynamic/webp/encode_cgo.go
@@ -1,16 +0,0 @@
-//go:build linux && cgo
-
-package webp
-
-import (
- "image"
- "io"
-
- "git.sr.ht/~jackmordaunt/go-libwebp/lib/common"
-)
-
-// HACK: always use lossless when cgo is activated on linux. cgo on linux provokes
-// a bug in purego when using float arguments.
-func encodeImpl(w io.Writer, m *image.NRGBA, quality float32) error {
- return common.Encode(w, m, quality, wrappedLossless, WebPFree)
-}
diff --git a/lib/dynamic/webp/encode_default.go b/lib/dynamic/webp/encode_default.go
@@ -1,21 +0,0 @@
-//go:build !(linux && cgo)
-
-package webp
-
-import (
- "fmt"
- "image"
- "io"
-
- "git.sr.ht/~jackmordaunt/go-libwebp/lib/common"
-)
-
-func encodeImpl(w io.Writer, m *image.NRGBA, quality float32) error {
- if quality >= 1.0 {
- return common.Encode(w, m, quality, wrappedLossless, WebPFree)
- }
- if WebPEncodeRGBA == nil || WebPFree == nil {
- return fmt.Errorf("functions not initialized")
- }
- return common.Encode(w, m, quality, WebPEncodeRGBA, WebPFree)
-}
diff --git a/lib/dynamic/webp/lib.go b/lib/dynamic/webp/lib.go
@@ -79,7 +79,13 @@ func DecodeImpl(buf []byte) (image.Image, error) {
}
func EncodeImpl(w io.Writer, m *image.NRGBA, quality float32) error {
- return encodeImpl(w, m, quality)
+ if WebPEncodeRGBA == nil || WebPFree == nil {
+ return fmt.Errorf("functions not initialized")
+ }
+ if quality >= 1.0 {
+ return common.Encode(w, m, quality, wrappedLossless, WebPFree)
+ }
+ return common.Encode(w, m, quality, WebPEncodeRGBA, WebPFree)
}
// wrappedLossless drops the quality param and does a lossless encode.