Files
overlord/Overlord-Client/cmd/agent/capture/jpeg_std.go
T
2026-07-30 14:16:34 -05:00

44 lines
909 B
Go

//go:build !turbojpeg
package capture
import (
"bytes"
"image"
"image/jpeg"
"sync"
)
var jpegBufPool = sync.Pool{
New: func() interface{} {
b := bytes.NewBuffer(make([]byte, 0, 128*1024))
return b
},
}
func encodeJPEG(img image.Image, quality int) ([]byte, error) {
buf := jpegBufPool.Get().(*bytes.Buffer)
buf.Reset()
err := jpeg.Encode(buf, img, &jpeg.Options{Quality: jpegEncoderQuality(quality)})
if err != nil {
jpegBufPool.Put(buf)
return nil, err
}
out := make([]byte, buf.Len())
copy(out, buf.Bytes())
jpegBufPool.Put(buf)
return out, nil
}
func encodeJPEGToBuf(dst *bytes.Buffer, img image.Image, quality int) error {
buf := jpegBufPool.Get().(*bytes.Buffer)
buf.Reset()
if err := jpeg.Encode(buf, img, &jpeg.Options{Quality: jpegEncoderQuality(quality)}); err != nil {
jpegBufPool.Put(buf)
return err
}
dst.Write(buf.Bytes())
jpegBufPool.Put(buf)
return nil
}