changeset 8464:85ebbeeb913b

scripts mentioned by DOCS/tech/encoding-tips.txt written by Moritz Bunkus
author arpi
date Sun, 15 Dec 2002 18:44:24 +0000
parents e421b4ab7815
children 42484db3c5b7
files TOOLS/calcbpp.pl TOOLS/countquant.pl
diffstat 2 files changed, 58 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TOOLS/calcbpp.pl	Sun Dec 15 18:44:24 2002 +0000
@@ -0,0 +1,21 @@
+#!/usr/bin/perl -w
+
+use POSIX;
+
+sub round {
+  my $v = shift;
+  
+  return floor($v + 0.5) != floor($v) ?
+    floor($v + 0.5) :
+    floor($v);
+}
+
+if (scalar(@ARGV) < 4) {
+  print("Please provide a) the cropped but unscaled resolution (e.g. " .
+        "716x524), b) the aspect ratio (either 4/3 or 16/9 for most DVDs), " .
+        "c) the video bitrate in kbps (e.g. 800) and d) the movie's fps.\n");
+  exit(1);
+}
+
+($unscaled_width, $unscaled_height) = split('x', $ARGV[0]);.$encoded_at = $ARGV[1];.if ($encoded_at =~ /\//) {.  my @a = split(/\//, $encoded_at);.  $encoded_at = $a[0] / $a[1];.}.$scaled_width = $unscaled_width * ($encoded_at / (5/4));.$scaled_height = $unscaled_height;.$picture_ar = $scaled_width / $scaled_height;.($bps, $fps) = @ARGV[2, 3];..printf("Prescaled picture: %dx%d, AR %.2f\n", $scaled_width, $scaled_height,.       $picture_ar);.for ($width = 720; $width >= 320; $width -= 16) {.  $height = 16 * round($width / $picture_ar / 16);.  $diff = round($width / $picture_ar - $height);.  $new_ar = $width / $height;.  $picture_ar_error = abs(100 - $picture_ar / $new_ar * 100);.  printf("${width}x${height}, diff % 3d, new AR %.2f, AR error %.2f%% " ..         "scale=%d:%d bpp: %.3f\n", $diff, $new_ar, $picture_ar_error, $width,.         $height, ($bps * 1000) / ($width * $height * $fps));.}.
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TOOLS/countquant.pl	Sun Dec 15 18:44:24 2002 +0000
@@ -0,0 +1,37 @@
+#!/usr/bin/perl -w
+
+sub display_quants {
+  $frames = 0;
+  foreach $key (sort(keys(%quants))) {
+    $frames += $quants{$key};
+  }
+  foreach $key (sort({ $a <=> $b } keys(%quants))) {
+    printf("q=%d:\t% 6d, % 6.2f%%\n", $key, $quants{$key}, $quants{$key} *
+           100 / $frames);
+  }
+  print("$lines lines processed, $frames frames found\n");
+  printf("average quant. is: %f\n", $quant_total/$frames);
+}
+
+$lines = 0;
+$thislines = 0;
+$quant_total = 0;
+
+while (<STDIN>) {
+  $lines++;
+  $thislines++;
+  if (/ q:([0-9]+) /) {
+    $quants{$1}++;
+  } elsif (/ q:(([0-9]+)\.[0-9]+) /) {
+    $quants{$2}++;
+    $quant_total += $1;
+  }
+  if ((scalar(@ARGV) > 0) && ($thislines > $ARGV[0])) {
+    display_quants();
+    $thislines = 0;
+  }
+}
+
+display_quants();
+
+