fixed VNC for capture without quality control

This commit is contained in:
Devaev Maxim 2020-08-22 22:35:37 +03:00
parent 7f74d7ee45
commit f0882df330
2 changed files with 20 additions and 5 deletions

View File

@ -274,9 +274,11 @@ class _Client(RfbClient): # pylint: disable=too-many-instance-attributes
async def _on_set_encodings(self) -> None:
assert self.__authorized.done()
assert self.__kvmd_session
get_logger(0).info("[main] %s: Applying streamer params: quality=%d%%; desired_fps=%d ...",
self._remote, self._encodings.tight_jpeg_quality, self.__desired_fps)
await self.__kvmd_session.streamer.set_params(self._encodings.tight_jpeg_quality, self.__desired_fps)
has_quality = (await self.__kvmd_session.streamer.get_state())["features"]["quality"]
quality = (self._encodings.tight_jpeg_quality if has_quality else None)
get_logger(0).info("[main] %s: Applying streamer params: quality=%s; desired_fps=%d ...",
self._remote, quality, self.__desired_fps)
await self.__kvmd_session.streamer.set_params(quality, self.__desired_fps)
async def _on_fb_update_request(self) -> None:
async with self.__lock:

View File

@ -66,11 +66,24 @@ class _AuthApiPart(_BaseApiPart):
class _StreamerApiPart(_BaseApiPart):
async def set_params(self, quality: int, desired_fps: int) -> None:
async def get_state(self) -> Dict:
session = self._ensure_http_session()
async with session.get(self._make_url("streamer")) as response:
htclient.raise_not_200(response)
return (await response.json())["result"]
async def set_params(self, quality: Optional[int]=None, desired_fps: Optional[int]=None) -> None:
session = self._ensure_http_session()
async with session.post(
url=self._make_url("streamer/set_params"),
params={"quality": quality, "desired_fps": desired_fps},
params={
key: value
for (key, value) in [
("quality", quality),
("desired_fps", desired_fps),
]
if value is not None
},
) as response:
htclient.raise_not_200(response)