You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
2.2 KiB
57 lines
2.2 KiB
#!/usr/bin/perl
|
|
#
|
|
# This script has been (or is hereby) released into the public domain by
|
|
# its author, Karl J. Runge <runge@karlrunge.com>. This applies worldwide.
|
|
#
|
|
# In case this is not legally possible: Karl J. Runge grants anyone the
|
|
# right to use this work for any purpose, without any conditions, unless
|
|
# such conditions are required by law.
|
|
|
|
$saw_mark = 0;
|
|
$done = 0;
|
|
|
|
while (<>) {
|
|
if (! $saw_mark && /case rfbEncodingServerIdentity:/) {
|
|
$saw_mark = 1;
|
|
}
|
|
if ($saw_mark && !$done && /default:/) {
|
|
print;
|
|
|
|
print <<END;
|
|
/* for turbovnc */
|
|
#define rfbJpegQualityLevel1 0xFFFFFE01
|
|
#define rfbJpegQualityLevel100 0xFFFFFE64
|
|
#define rfbJpegSubsamp1X 0xFFFFFD00
|
|
#define rfbJpegSubsamp4X 0xFFFFFD01
|
|
#define rfbJpegSubsamp2X 0xFFFFFD02
|
|
#define rfbJpegSubsampGray 0xFFFFFD03
|
|
|
|
if ( enc >= (uint32_t)rfbJpegSubsamp1X &&
|
|
enc <= (uint32_t)rfbJpegSubsampGray ) {
|
|
/* XXX member really should be tightSubsample not correMaxWidth */
|
|
cl->correMaxWidth = enc & 0xFF;
|
|
rfbLog("Using JPEG subsampling %d for client %s\\n",
|
|
cl->correMaxWidth, cl->host);
|
|
} else if ( enc >= (uint32_t)rfbEncodingQualityLevel0 &&
|
|
enc <= (uint32_t)rfbEncodingQualityLevel9 ) {
|
|
static int JPEG_QUAL[10] = {
|
|
5, 10, 15, 25, 37, 50, 60, 70, 75, 80
|
|
};
|
|
cl->tightQualityLevel = JPEG_QUAL[enc & 0x0F];
|
|
/* XXX member really should be tightSubsample not correMaxWidth */
|
|
cl->correMaxWidth = 2;
|
|
rfbLog("Using image level Subsample %d Quality %d for client %s\\n",
|
|
cl->correMaxWidth, cl->tightQualityLevel, cl->host);
|
|
} else if ( enc >= (uint32_t)rfbJpegQualityLevel1 &&
|
|
enc <= (uint32_t)rfbJpegQualityLevel100 ) {
|
|
cl->tightQualityLevel = enc & 0xFF;
|
|
rfbLog("Using image quality level %d for client %s\\n",
|
|
cl->tightQualityLevel, cl->host);
|
|
} else
|
|
END
|
|
$done = 1;
|
|
next;
|
|
}
|
|
print;
|
|
}
|