From bf290b026c1037ba0ff839a41d42d86f666d4455 Mon Sep 17 00:00:00 2001 From: Abdarrakhman Akhmetgali Date: Sat, 15 Apr 2023 17:56:41 +0600 Subject: [PATCH] fix i422ToI420 calculation, add mock FastBoxSampling --- pkg/io/video/convert_nocgo.go | 4 ++-- pkg/io/video/scale_test.go | 3 +++ pkg/io/video/scaler_nocgo.go | 22 ++++++++++++++++++++++ 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 pkg/io/video/scaler_nocgo.go diff --git a/pkg/io/video/convert_nocgo.go b/pkg/io/video/convert_nocgo.go index 5b5ebc6c..b60ba300 100644 --- a/pkg/io/video/convert_nocgo.go +++ b/pkg/io/video/convert_nocgo.go @@ -57,8 +57,8 @@ func i422ToI420(img image.YCbCr, dst []uint8) image.YCbCr { for j := 0; j < img.CStride; j++ { cb := uint16(img.Cb[addrSrc]) + uint16(img.Cb[addrSrc+img.CStride]) cr := uint16(img.Cr[addrSrc]) + uint16(img.Cr[addrSrc+img.CStride]) - cbDst[addrDst] = uint8(cb / 4) - crDst[addrDst] = uint8(cr / 4) + cbDst[addrDst] = uint8(cb / 2) + crDst[addrDst] = uint8(cr / 2) addrSrc++ addrDst++ } diff --git a/pkg/io/video/scale_test.go b/pkg/io/video/scale_test.go index 4c0d448a..6bfda5c6 100644 --- a/pkg/io/video/scale_test.go +++ b/pkg/io/video/scale_test.go @@ -526,6 +526,9 @@ func TestScale(t *testing.T) { } func TestScaleFastBoxSampling(t *testing.T) { + if !hasCGOConvert { + t.Skip("Skip: nocgo implementation is not supported for FastBoxSampling") + } cases := map[string]struct { src image.Image width, height int diff --git a/pkg/io/video/scaler_nocgo.go b/pkg/io/video/scaler_nocgo.go new file mode 100644 index 00000000..4774fbcc --- /dev/null +++ b/pkg/io/video/scaler_nocgo.go @@ -0,0 +1,22 @@ +//go:build !cgo +// +build !cgo + +package video + +import ( + "golang.org/x/image/draw" + "image" +) + +// ScalerFastBoxSampling mock scaler for nocgo implementation to pass tests for CGO_ENABLED=0 +var ( + ScalerFastBoxSampling = Scaler(&FastBoxSampling{}) +) + +// FastBoxSampling mock implementation for nocgo implementation +// TODO implement nocgo FastBoxSampling scaling algorithm +type FastBoxSampling struct { +} + +func (f *FastBoxSampling) Scale(_ draw.Image, _ image.Rectangle, _ image.Image, _ image.Rectangle, _ draw.Op, _ *draw.Options) { +}