x264 source for verification 2026-05-22
This commit is contained in:
52
tools/countquant_x264.pl
Executable file
52
tools/countquant_x264.pl
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/bin/env perl
|
||||
# countquant_x264.pl: displays statistics from x264 multipass logfiles
|
||||
# by Loren Merritt, 2005-4-5
|
||||
|
||||
@size{I,P,B} =
|
||||
@n{I,P,B} = (0)x3;
|
||||
|
||||
sub proc_file {
|
||||
my $fh = shift;
|
||||
while(<$fh>) {
|
||||
/type:(.) q:(\d+\.\d+) tex:(\d+) mv:(\d+) misc:(\d+)/ or next;
|
||||
$type = uc $1;
|
||||
$n{$type} ++;
|
||||
$q[int($2+.5)] ++;
|
||||
$avgq += $2;
|
||||
$avgq{$type} += $2;
|
||||
my $bytes = ($3+$4+$5)/8;
|
||||
$size{$type} += $bytes;
|
||||
}
|
||||
$size = $size{I} + $size{P} + $size{B};
|
||||
$n = $n{I} + $n{P} + $n{B};
|
||||
$n or die "unrecognized input\n";
|
||||
}
|
||||
|
||||
if(@ARGV) {
|
||||
foreach(@ARGV) {
|
||||
open $fh, "<", $_ or die "can't open '$_': $!";
|
||||
proc_file($fh);
|
||||
}
|
||||
} else {
|
||||
proc_file(STDIN);
|
||||
}
|
||||
|
||||
for(0..51) {
|
||||
$q[$_] or next;
|
||||
printf "q%2d: %6d %4.1f%%\n", $_, $q[$_], 100*$q[$_]/$n;
|
||||
}
|
||||
print "\n";
|
||||
$digits = int(log($n+1)/log(10))+2;
|
||||
printf "All: %${digits}d %s avgQP:%5.2f avgBytes:%5d\n",
|
||||
$n, $n==$n{I}?" ":"", $avgq/$n, $size/$n;
|
||||
foreach(qw(I P B S)) {
|
||||
$n{$_} or next;
|
||||
printf "%s: %${digits}d (%4.1f%%) avgQP:%5.2f avgBytes:%5d\n",
|
||||
$_, $n{$_}, 100*$n{$_}/$n, $avgq{$_}/$n{$_}, $size{$_}/$n{$_};
|
||||
}
|
||||
print "\n";
|
||||
printf "total size: $size B = %.2f KiB = %.2f MiB\n",
|
||||
$size/2**10, $size/2**20;
|
||||
print "bitrate: ", join("\n = ",
|
||||
map sprintf("%.2f kbps @ %s fps", $_*$size*8/1000/$n, $_),
|
||||
23.976, 25, 29.97), "\n";
|
||||
Reference in New Issue
Block a user