diff --git a/camera/camera_test.go b/camera/camera_test.go index 20e736f..ba2b04c 100644 --- a/camera/camera_test.go +++ b/camera/camera_test.go @@ -2,11 +2,11 @@ package camera import ( "fmt" - "image/jpeg" - "os" - "path/filepath" + "io" "testing" "time" + + "github.com/gen2brain/cam2ip/image" ) func TestCamera(t *testing.T) { @@ -15,16 +15,14 @@ func TestCamera(t *testing.T) { t.Fatal(err) } - defer camera.Close() + defer func(camera *Camera) { + err := camera.Close() + if err != nil { + t.Error(err) + } + }(camera) - tmpdir, err := os.MkdirTemp(os.TempDir(), "cam2ip*") - if err != nil { - t.Error(err) - } - - defer os.RemoveAll(tmpdir) - - var i int64 + var i int var n = 10 timeout := time.After(time.Duration(n) * time.Second) @@ -32,7 +30,7 @@ func TestCamera(t *testing.T) { for { select { case <-timeout: - //fmt.Printf("Fps: %d\n", i/n) + fmt.Printf("FPS: %.2f\n", float64(i)/float64(n)) return default: i += 1 @@ -42,17 +40,7 @@ func TestCamera(t *testing.T) { t.Error(err) } - file, err := os.Create(filepath.Join(tmpdir, fmt.Sprintf("%03d.jpg", i))) - if err != nil { - t.Error(err) - } - - err = jpeg.Encode(file, img, &jpeg.Options{Quality: 75}) - if err != nil { - t.Error(err) - } - - err = file.Close() + err = image.NewEncoder(io.Discard).Encode(img) if err != nil { t.Error(err) } diff --git a/image/base64.go b/image/base64.go index be691ac..7d9dbbd 100644 --- a/image/base64.go +++ b/image/base64.go @@ -1,5 +1,4 @@ //go:build !amd64 -// +build !amd64 package image diff --git a/image/base64_amd64.go b/image/base64_amd64.go index de73a70..a2a67b8 100644 --- a/image/base64_amd64.go +++ b/image/base64_amd64.go @@ -1,5 +1,4 @@ //go:build amd64 -// +build amd64 package image diff --git a/image/image_test.go b/image/image_test.go new file mode 100644 index 0000000..d576efa --- /dev/null +++ b/image/image_test.go @@ -0,0 +1,43 @@ +package image_test + +import ( + "bytes" + _ "embed" + "image/jpeg" + "io" + "testing" + + "github.com/gen2brain/cam2ip/image" +) + +//go:embed testdata/test.jpg +var testJpg []byte + +func BenchmarkDecode(b *testing.B) { + for i := 0; i < b.N; i++ { + _, err := image.NewDecoder(bytes.NewReader(testJpg)).Decode() + if err != nil { + b.Fatal(err) + } + } +} + +func BenchmarkEncode(b *testing.B) { + img, err := jpeg.Decode(bytes.NewReader(testJpg)) + if err != nil { + b.Fatal(err) + } + + for i := 0; i < b.N; i++ { + err := image.NewEncoder(io.Discard).Encode(img) + if err != nil { + b.Fatal(err) + } + } +} + +func BenchmarkBase64(b *testing.B) { + for i := 0; i < b.N; i++ { + _ = image.EncodeToString(testJpg) + } +} diff --git a/image/testdata/test.jpg b/image/testdata/test.jpg new file mode 100644 index 0000000..67e431f Binary files /dev/null and b/image/testdata/test.jpg differ