diff options
Diffstat (limited to 'debian/transcode/transcode-1.1.7/testsuite/test.pl')
| -rw-r--r-- | debian/transcode/transcode-1.1.7/testsuite/test.pl | 264 |
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)); |
