Added go tests for libdav1d / libaom
This commit is contained in:
parent
86a790167d
commit
432b2dfc10
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
1
testdata/.gitattributes
vendored
Normal 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
BIN
testdata/sintel_trailer_2k_720p24_av1_low.ivf
(Stored with Git LFS)
vendored
Normal file
Binary file not shown.
3
testdata/testdata.go
vendored
3
testdata/testdata.go
vendored
|
@ -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"
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue