don't restart streamer with the same params

This commit is contained in:
Devaev Maxim 2020-05-26 21:19:26 +03:00
parent 99f994c866
commit 00bf4a2ab1
2 changed files with 8 additions and 3 deletions

View File

@ -206,13 +206,15 @@ class KvmdServer(HttpServer): # pylint: disable=too-many-arguments,too-many-ins
@exposed_http("POST", "/streamer/set_params") @exposed_http("POST", "/streamer/set_params")
async def __streamer_set_params_handler(self, request: aiohttp.web.Request) -> aiohttp.web.Response: async def __streamer_set_params_handler(self, request: aiohttp.web.Request) -> aiohttp.web.Response:
current_params = self.__streamer.get_params()
for (name, validator) in [ for (name, validator) in [
("quality", valid_stream_quality), ("quality", valid_stream_quality),
("desired_fps", valid_stream_fps), ("desired_fps", valid_stream_fps),
]: ]:
value = request.query.get(name) if (value := request.query.get(name)):
if value: value = validator(value)
self.__new_streamer_params[name] = validator(value) if current_params[name] != value:
self.__new_streamer_params[name] = value
await self.__streamer_notifier.notify() await self.__streamer_notifier.notify()
return make_json_response() return make_json_response()

View File

@ -173,6 +173,9 @@ class Streamer: # pylint: disable=too-many-instance-attributes
] ]
} }
def get_params(self) -> Dict:
return dict(self.__params)
async def get_state(self) -> Dict: async def get_state(self) -> Dict:
state = None state = None
if self.__streamer_task: if self.__streamer_task: