tests: Provide SRU unit test
authorKieran Bingham <kieran@bingham.xyz>
Tue, 13 Sep 2016 12:44:10 +0000 (13:44 +0100)
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Tue, 13 Sep 2016 17:17:22 +0000 (20:17 +0300)
Provide a pipeline configuration in vsp-lib, and simple tests for the
SRU processing unit

Signed-off-by: Kieran Bingham <kieran@bingham.xyz>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
scripts/vsp-lib.sh
tests/vsp-unit-test-0015.sh [new file with mode: 0755]

index 7c012d0..3261ad7 100755 (executable)
@@ -397,6 +397,14 @@ pipe_rpf_uds_bru() {
        __vsp_wpf_index=0
 }
 
+pipe_rpf_sru() {
+       $mediactl -d $mdev -l "'$dev rpf.0':1 -> '$dev sru':0 [1]"
+       $mediactl -d $mdev -l "'$dev sru':1 -> '$dev wpf.0':0 [1]"
+       $mediactl -d $mdev -l "'$dev wpf.0':1 -> '$dev wpf.0 output':0 [1]"
+
+       __vsp_wpf_index=0
+}
+
 pipe_rpf_wpf() {
        local rpf=$1
        local wpf=$2
@@ -590,6 +598,23 @@ format_rpf_uds_bru() {
        __vsp_wpf_format=$3
 }
 
+format_rpf_sru() {
+       local infmt=$(format_v4l2_to_mbus $1)
+       local insize=$2
+       local outfmt=$(format_v4l2_to_mbus $3)
+       local outsize=$4
+
+       $mediactl -d $mdev -V "'$dev rpf.0':0 [fmt:$infmt/$insize]"
+       $mediactl -d $mdev -V "'$dev sru':0 [fmt:$infmt/$insize]"
+       $mediactl -d $mdev -V "'$dev sru':1 [fmt:$infmt/$outsize]"
+       $mediactl -d $mdev -V "'$dev wpf.0':0 [fmt:$infmt/$outsize]"
+       $mediactl -d $mdev -V "'$dev wpf.0':1 [fmt:$outfmt/$outsize]"
+
+       [ $insize != $outsize ] && __vsp_uds_scale=true
+       __vsp_rpf_format=$1
+       __vsp_wpf_format=$3
+}
+
 format_rpf_wpf() {
        local rpf=$1
        local wpf=$2
diff --git a/tests/vsp-unit-test-0015.sh b/tests/vsp-unit-test-0015.sh
new file mode 100755 (executable)
index 0000000..3818537
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+#
+# Test SRU upscaling in RGB and YUV modes.
+#
+# SRU processing of RGB data may generate adverse effects such as color blue.
+# YUV processing is thus recommended, RGB processing must be evaluated
+# carefully before putting it into practical use.
+#
+
+source vsp-lib.sh
+
+features="rpf.0 sru wpf.0"
+formats="RGB24 YUV444M"
+
+test_sru() {
+       local format=$1
+       local insize=$2
+       local outsize=$3
+
+       test_start "SRU scaling from $insize to $outsize in $format"
+
+       pipe_configure rpf-sru
+       format_configure rpf-sru $format $insize $format $outsize
+
+       vsp_runner rpf.0 &
+       vsp_runner wpf.0
+
+       local result=$(compare_frames)
+
+       test_complete $result
+}
+
+test_main() {
+       local format
+
+       for format in $formats ; do
+               test_sru $format 1024x768 1024x768  # without scaling
+               test_sru $format 1024x768 2048x1536 # SRUx2
+       done
+}
+
+test_init $0 "$features"
+test_run