Added go tests for libdav1d / libaom

This commit is contained in:
DataHoarder 2022-11-11 11:13:08 +01:00
parent 86a790167d
commit 432b2dfc10
Signed by: DataHoarder
SSH key fingerprint: SHA256:OLTRf6Fl87G52SiR7sWLGNzlJt4WOX+tfI2yxo0z7xk
6 changed files with 105 additions and 3 deletions

View file

@ -33,7 +33,7 @@ steps:
- apk update
- apk add --no-cache git gcc g++ musl-dev bash cmake make libtool meson ccache nasm perl xxd pkgconfig
- cd /tmp
- git clone --depth 1 --branch v2.3.1 https://github.com/Netflix/vmaf.git && cd vmaf/libvmaf && meson setup build . --prefix /drone/src/build_deps --buildtype release -Denable_float=true -Dbuilt_in_models=true && ninja -vC build && ninja -vC build install && cd ..
- git clone --depth 1 --branch v2.3.1 https://github.com/Netflix/vmaf.git && cd vmaf/libvmaf && meson setup build . --prefix /drone/src/build_deps --buildtype release -Denable_float=true -Dbuilt_in_models=true && ninja -vC build && ninja -vC build install && cd ../..
- git clone --depth 1 --branch v3.5.0 https://aomedia.googlesource.com/aom.git && cd aom && mkdir b && cd b && cmake .. -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -D CMAKE_INSTALL_PREFIX:PATH=/drone/src/build_deps -DENABLE_DOCS=OFF -DENABLE_EXAMPLES=OFF -DENABLE_TOOLS=OFF -DENABLE_TESTS=OFF -DENABLE_CCACHE=ON -DCONFIG_FRAME_PARALLEL_ENCODE=1 -DCONFIG_AV1_TEMPORAL_DENOISING=1 -DCONFIG_BITRATE_ACCURACY=1 -DCONFIG_TUNE_VMAF=1 -DCONFIG_NN_V2=1 -DCONFIG_RT_ML_PARTITIONING=1 -DCONFIG_THREE_PASS=1 -DCONFIG_AV1_ENCODER=1 -DCONFIG_AV1_DECODER=1 && make -j$(nproc) && make install && cd ..
- name: build-dav1d
image: alpine

View file

@ -1,7 +1,34 @@
package libdav1d
import "testing"
import (
"git.gammaspectra.live/S.O.N.G/Ignite/testdata"
"os"
"testing"
)
func TestVersion(t *testing.T) {
t.Logf("dav1d version: %s", Version())
}
func TestDecodeYUV420_8bit(t *testing.T) {
f, err := os.Open(testdata.AV1_Sintel_Trailer_720p24_YUV420_8bit_Low)
if err != nil {
t.Fatal(err)
}
defer f.Close()
if decoder, err := NewDecoder(f, nil); err != nil {
t.Fatal(err)
} else {
defer decoder.Close()
decoded := 0
for range decoder.DecodeStream().Channel() {
//ingest
decoded++
}
if decoded != 1253 {
t.Fatalf("expected %d frames, got %d", 1253, decoded)
}
}
}

View file

@ -1,9 +1,79 @@
package libaom
import (
"git.gammaspectra.live/S.O.N.G/Ignite/decoder/y4m"
"git.gammaspectra.live/S.O.N.G/Ignite/testdata"
"os"
"runtime"
"sync"
"testing"
)
func TestVersion(t *testing.T) {
t.Logf("libaom version: %s", Version())
}
func TestEncode(t *testing.T) {
f, err := os.Open(testdata.Y4M_Sintel_Trailer_720p24_YUV420_8bit)
if err != nil {
t.Fatal(err)
}
defer f.Close()
if pipe, err := y4m.New(f, nil); err != nil {
t.Fatal(err)
} else {
target, err := os.CreateTemp("", "encode_test_*.ivf")
if err != nil {
t.Fatal(err)
return
}
defer func() {
name := target.Name()
target.Close()
os.Remove(name)
}()
stream := pipe.DecodeStream()
settings := make(map[string]any)
settings["threads"] = runtime.NumCPU()
settings["row-mt"] = 1
settings["cpu-used"] = 8
settings["use-16bit-internal"] = 1
settings["frame-parallel"] = 1
settings["lag-in-frames"] = 12
settings["tile-columns"] = 4
settings["tile-rows"] = 4
if encoder, err := NewEncoder(target, stream.Properties(), settings); err != nil {
t.Fatal(err)
} else {
defer encoder.Close()
s := stream.Copy(2)
encoded := 0
var wg sync.WaitGroup
wg.Add(1)
go func() {
defer wg.Done()
for range s[0].Channel() {
if encoded%10 == 0 {
t.Logf("frame %d/1253", encoded)
}
encoded++
}
}()
if err = encoder.EncodeStream(s[1]); err != nil {
t.Error(err)
}
wg.Wait()
if encoded != 1253 {
t.Fatalf("expected %d frames, got %d", 1253, encoded)
}
}
}
}

1
testdata/.gitattributes vendored Normal file
View file

@ -0,0 +1 @@
*.ivf filter=lfs diff=lfs merge=lfs -text

BIN
testdata/sintel_trailer_2k_720p24_av1_low.ivf (Stored with Git LFS) vendored Normal file

Binary file not shown.

View file

@ -17,5 +17,6 @@ func init() {
}
const (
Y4M_Sintel_Trailer_720p24_YUV420_8bit = "testdata/sintel_trailer_2k_720p24.y4m"
Y4M_Sintel_Trailer_720p24_YUV420_8bit = "testdata/sintel_trailer_2k_720p24.y4m"
AV1_Sintel_Trailer_720p24_YUV420_8bit_Low = "testdata/sintel_trailer_2k_720p24_av1_low.ivf"
)