Replace vscale_integer with vscale_mode with extended functionality.

This commit is contained in:
sorgelig
2018-12-21 04:42:10 +08:00
parent bd6a1ad711
commit 1f4fe8a264
4 changed files with 31 additions and 21 deletions

View File

@@ -3064,24 +3064,32 @@ static uint32_t show_video_info(int force)
Info(str, cfg.video_info * 1000);
}
if (cfg.vscale_border && height && (height <= vitems[5]))
uint32_t scrh = vitems[5];
if (height && scrh)
{
uint32_t border = cfg.vscale_border * 2;
if ((border + 100) > vitems[5]) border = vitems[5] - 100;
height = vitems[5] - border;
printf("Set vertical scaling to : %d\n", height);
spi_uio_cmd16(UIO_SETHEIGHT, height);
}
else if (cfg.vscale_integer && height && (height <= vitems[5]))
{
uint32_t mag = vitems[5] / height;
height *= mag;
printf("Set Integer V scaling: %d\n", height);
spi_uio_cmd16(UIO_SETHEIGHT, height);
}
else
{
spi_uio_cmd16(UIO_SETHEIGHT, 0);
if (cfg.vscale_border)
{
uint32_t border = cfg.vscale_border * 2;
if ((border + 100) > scrh) border = scrh - 100;
scrh -= border;
}
if (cfg.vscale_mode)
{
uint32_t div = 1 << (cfg.vscale_mode - 1);
uint32_t mag = (scrh*div) / height;
scrh = (height * mag) / div;
}
if(cfg.vscale_border || cfg.vscale_mode)
{
printf("*** Set vertical scaling to : %d\n", scrh);
spi_uio_cmd16(UIO_SETHEIGHT, scrh);
}
else
{
spi_uio_cmd16(UIO_SETHEIGHT, 0);
}
}
if (vtime && vtimeh) ret = vtime;