From f35e4b5be9208bfa1250d5dda425861b766e9452 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Tue, 31 May 2022 16:21:37 +0200 Subject: [PATCH] Derive stream contenttype from grouped player childs (#352) * Derive stream contenttype for grouped player childs --- music_assistant/models/player.py | 15 +++++++++++++++ music_assistant/models/player_queue.py | 7 ++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/music_assistant/models/player.py b/music_assistant/models/player.py index 26c2dfa6..3af07abc 100755 --- a/music_assistant/models/player.py +++ b/music_assistant/models/player.py @@ -387,6 +387,21 @@ class PlayerGroup(Player): return child_player.current_url return super().current_url + @property + def supported_content_types(self) -> Tuple[ContentType]: + """Return the content types this player supports.""" + # return contenttypes that are supported by all child players + return tuple( + content_type + for content_type in ContentType + if all( + ( + content_type in child_player.supported_content_types + for child_player in self._get_child_players(False, False) + ) + ) + ) + async def stop(self) -> None: """Send STOP command to player.""" if not self.use_multi_stream: diff --git a/music_assistant/models/player_queue.py b/music_assistant/models/player_queue.py index 3cfdf43e..628bfccc 100644 --- a/music_assistant/models/player_queue.py +++ b/music_assistant/models/player_queue.py @@ -8,7 +8,6 @@ from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Union from music_assistant.helpers.audio import get_stream_details from music_assistant.models.enums import ( - ContentType, EventType, MediaType, QueueOption, @@ -311,8 +310,6 @@ class PlayerQueue: if self.player.use_multi_stream: # multi stream enabled, all child players should receive the same audio stream # redirect command to all (powered) players - # TODO: this assumes that all client players support flac - content_type = ContentType.FLAC coros = [] expected_clients = set() for child_id in self.player.group_childs: @@ -320,7 +317,7 @@ class PlayerQueue: if child_player.powered: # TODO: this assumes that all client players support flac player_url = self.mass.streams.get_stream_url( - self.queue_id, child_id, content_type + self.queue_id, child_id, self._settings.stream_type ) expected_clients.add(child_id) coros.append(child_player.play_url(player_url)) @@ -328,7 +325,7 @@ class PlayerQueue: # TODO: this assumes that all client players support flac self.queue_id, expected_clients, - content_type, + self._settings.stream_type, ) await asyncio.gather(*coros) elif not passive: -- 2.34.1