summaryrefslogtreecommitdiffstats
path: root/debian/transcode/transcode-1.1.7/testsuite/test.pl
diff options
context:
space:
mode:
Diffstat (limited to 'debian/transcode/transcode-1.1.7/testsuite/test.pl')
-rw-r--r--debian/transcode/transcode-1.1.7/testsuite/test.pl264
1 files changed, 264 insertions, 0 deletions
diff --git a/debian/transcode/transcode-1.1.7/testsuite/test.pl b/debian/transcode/transcode-1.1.7/testsuite/test.pl
new file mode 100644
index 00000000..3f59faa5
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/testsuite/test.pl
@@ -0,0 +1,264 @@
+#!/usr/bin/perl -w
+
+# dependencies: perl ImageMagick mjpegtools
+
+my($testdir) = "transcode-test";
+my($frames) = 5;
+
+my(%testdata) =
+(
+ import =>
+ {
+ },
+
+ export =>
+ {
+ ppm =>
+ {
+ "" =>
+ {
+ yuv =>
+ {
+ "output000000.ppm" => "2d366b437ced6b4b82ddab406cfc272d",
+ "output000001.ppm" => "a744069a2eaf23f3441a838c5748a746",
+ "output000002.ppm" => "4ba2a5195b2c53eb6228f702394d1166",
+ "output000003.ppm" => "f4324b1d944d4541948cd8d0221a8c89",
+ "output000004.ppm" => "f01e6f29b62abf96f0ef58ba34328fa5"
+ },
+
+ rgb =>
+ {
+ "output000000.ppm" => "415f11d450796f2a0c181b4fe2bba462",
+ "output000001.ppm" => "920db15b73c796c31b11dade8e802a1c",
+ "output000002.ppm" => "c0dbe650840584e222df6de880debe1d",
+ "output000003.ppm" => "f0fa9f76d284f3082ffdb2d4790de300",
+ "output000004.ppm" => "bfd12d139827eab1974a8b32f871d5d2"
+ }
+ }
+ },
+
+ ffmpeg =>
+ {
+ "mpeg2" =>
+ {
+ yuv =>
+ {
+ "output.m2v" => "58a158043a2ed9dce23c5892af4fe39d"
+ },
+
+ rgb =>
+ {
+ "output.m2v" => "af88136aaa2e5c69a1cd418e15d6ef0f"
+ }
+ },
+
+ "mpeg4" =>
+ {
+ yuv =>
+ {
+ "output" => "350c502d87ed9e4a3bb8c1567f8cdc3e"
+ },
+
+ rgb =>
+ {
+ "output" => "6026db8ebfdefccbdc5f4c37f5ac3938"
+ }
+ }
+ }
+ },
+
+ filter =>
+ {
+ }
+);
+
+sub checkfiles($ $ $ $)
+{
+ my($type, $module, $codec, $mode) = @_;
+ my($file, $fsfile, $file1, $sum, $sum1, $result);
+
+ $result = 0;
+
+ for $file (sort(keys(%{$testdata{$type}{$module}{$codec}{$mode}})))
+ {
+ $fsfile = "$module-$codec-$mode-$file";
+
+ printf(" Checking file %s: ", $file);
+
+ if(! -f $fsfile)
+ {
+ printf("FAILED (file not found)\n");
+ $result = 1;
+ next;
+ }
+
+ $sum = $testdata{$type}{$module}{$codec}{$mode}{$file};
+
+ ($sum1, $file1) = split(" ", qx[md5sum $fsfile]);
+
+ if($sum ne $sum1)
+ {
+ printf("FAILED (bad checksum) [%s != %s]\n", $sum, $sum1);
+ $result= 1;
+ next;
+ }
+
+ printf("OK\n");
+ }
+
+ return($result);
+}
+
+sub testmodule($ $ $ $ $ $ $)
+{
+ my($type, $import_module, $import_file, $export_module, $export_file, $mode, $codec) = @_;
+ my($cmdline, $fsfile);
+
+ $fsfile = "$export_module-$codec-$mode-$export_file";
+
+ if($type ne "filter")
+ {
+ $cmdline = "transcode -H 0 -c 0-5 -i $import_file -x $import_module,null -o $fsfile -y $export_module,null >> log 2>&1";
+ }
+ else
+ {
+ return(1);
+ }
+
+ $cmdline .= " -V rgb24" if($mode eq "rgb");
+ $cmdline .= " -F $codec" if(defined($codec) && $codec ne "");
+
+ open(my($fd), ">>log");
+ printf $fd (">>> $cmdline\n");
+ close($fd);
+
+ return(1) if(system($cmdline));
+
+ return(0);
+}
+
+sub main($)
+{
+ my($frame, $name, @allnames, @report);
+ my($module, $mode, $sum, $result);
+ my($import_module, $import_file, $export_module, $export_file);
+
+ mkdir($testdir);
+ chdir($testdir);
+
+ unlink("log");
+
+ if(! -f "testimg.ppm")
+ {
+ printf("Generating base testimage\n");
+ if(system(q[convert xc:black -resize 720x576! \
+ -fill red -draw "rectangle 0,0,213,480" \
+ -fill green -draw "rectangle 214,0,426,480" \
+ -fill blue -draw "rectangle 427,0,640,480" \
+ -fill white -font "-*-helvetica-bold-r-*-*-24-*-*-*-*-*-*-1" \
+ -fill white -draw "text 100,240 'RED'" \
+ -draw "text 313,240 'GREEN'" \
+ -draw "text 526,240 'BLUE'" -quality 100 testimg.ppm >> log 2>&1]))
+ {
+ die("convert");
+ }
+ }
+
+ for($frame = 0; $frame < $frames; $frame++)
+ {
+ $name = sprintf("testframe-%3.3d.ppm", $frame);
+
+ if(! -f $name)
+ {
+ printf("Generating test frame $name\n");
+
+ if(system(q[convert xc:black -resize 720x576! \
+ -fill red -draw "rectangle 0,0,213,480" \
+ -fill green -draw "rectangle 214,0,426,480" \
+ -fill blue -draw "rectangle 427,0,640,480" \
+ -fill white -font "-*-helvetica-bold-r-*-*-24-*-*-*-*-*-*-1" \
+ -fill white -draw "text 100,240 'RED'" \
+ -draw "text 313,240 'GREEN'" \
+ -draw "text 526,240 'BLUE'" \
+ -draw "text 300,400] . qq['Frame #$frame'" ] .
+ qq[-format ppm $name >> log 2>&1]))
+ {
+ die("convert");
+ }
+ }
+
+ push(@allnames, $name);
+ }
+
+ if(! -f "testmovie.yuv4mpeg")
+ {
+ printf("Generating test movie\n");
+
+ if(system("cat " . join(" ", @allnames) . " | ppmtoy4m -F 25:1 -A 59:54 -I t -L -S 420mpeg2 > testmovie.yuv4mpeg 2>> log"))
+ {
+ die("ppmtoy4m");
+ }
+ }
+
+ if(qx[md5sum testmovie.yuv4mpeg 2>> log] !~ /^485df9fc04b510eb9d09af1d0b445307\b/)
+ {
+ die("testmovie.yuv4mpeg md5sum incorrect");
+ }
+
+ for $type (sort(keys(%testdata)))
+ {
+ for $module (sort(keys(%{$testdata{$type}})))
+ {
+ for $codec (sort(keys(%{$testdata{$type}{$module}})))
+ {
+ for $mode (sort(keys(%{$testdata{$type}{$module}{$codec}})))
+ {
+ printf("Testing %s_%s in %s mode\n", $type, $module, $mode);
+
+ if($type eq "import")
+ {
+ $import_module = $module;
+ $import_file = "testmovie.$import_module";
+ $export_module = "yuv4mpeg";
+ $export_file = "output";
+ }
+ else
+ {
+ if($type eq "export")
+ {
+ $import_module = "yuv4mpeg";
+ $import_file = "testmovie.yuv4mpeg";
+ $export_module = $module;
+ $export_file = "output";
+ }
+ else
+ {
+ # filter
+ }
+ }
+
+ $result = testmodule($type, $import_module, $import_file, $export_module, $export_file, $mode, $codec);
+ $result = checkfiles($type, $module, $codec, $mode) if(!$result);
+ push(@report, sprintf("%-16.16s %8.8s %4.4s %6.6s", $type . "_" . $module, $codec, $mode, $result ? "FAILED" : "OK"));
+ }
+ }
+ }
+ }
+
+ printf("\n");
+ printf("%-16.16s %8.8s %-4.4s %-6.6s\n", "module", "codec", "mode", "result");
+ printf("%s %s %s %s\n", "-" x 16, "-" x 8, "-" x 4, "-" x 6);
+ printf(join("\n", @report));
+ printf("\n%s\n", "-" x 37);
+
+ open(my($fd), ">>log");
+ printf $fd ("\n");
+ printf $fd ("%-16.16s %8.8s %-4.4s %-6.6s\n", "module", "codec", "mode", "result");
+ printf $fd ("%s %s %s %s\n", "-" x 16, "-" x 8, "-" x 4, "-" x 6);
+ printf $fd (join("\n", @report));
+ printf $fd ("\n%s\n", "-" x 37);
+ close($fd);
+
+}
+
+exit(main(%ARGV));