Add MediaPlayerSupportedFormat (#925)

Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
This commit is contained in:
Michael Hansen 2024-08-27 18:26:07 -05:00 committed by GitHub
parent 7d071972cd
commit 2ba7774360
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 250 additions and 187 deletions

View File

@ -1134,6 +1134,19 @@ enum MediaPlayerCommand {
MEDIA_PLAYER_COMMAND_MUTE = 3;
MEDIA_PLAYER_COMMAND_UNMUTE = 4;
}
enum MediaPlayerFormatPurpose {
MEDIA_PLAYER_FORMAT_PURPOSE_DEFAULT = 0;
MEDIA_PLAYER_FORMAT_PURPOSE_ANNOUNCEMENT = 1;
}
message MediaPlayerSupportedFormat {
option (id) = 119;
option (ifdef) = "USE_MEDIA_PLAYER";
string format = 1;
uint32 sample_rate = 2;
uint32 num_channels = 3;
MediaPlayerFormatPurpose purpose = 4;
}
message ListEntitiesMediaPlayerResponse {
option (id) = 63;
option (source) = SOURCE_SERVER;
@ -1149,6 +1162,8 @@ message ListEntitiesMediaPlayerResponse {
EntityCategory entity_category = 7;
bool supports_pause = 8;
repeated MediaPlayerSupportedFormat supported_formats = 9;
}
message MediaPlayerStateResponse {
option (id) = 64;

File diff suppressed because one or more lines are too long

View File

@ -820,10 +820,40 @@ class MediaPlayerCommand(APIIntEnum):
UNMUTE = 4
class MediaPlayerFormatPurpose(APIIntEnum):
DEFAULT = 0
ANNOUNCEMENT = 1
@_frozen_dataclass_decorator
class MediaPlayerSupportedFormat(APIModelBase):
format: str
sample_rate: int
num_channels: int
purpose: MediaPlayerFormatPurpose | None = converter_field(
default=MediaPlayerFormatPurpose.DEFAULT,
converter=MediaPlayerFormatPurpose.convert,
)
@classmethod
def convert_list(cls, value: list[Any]) -> list[MediaPlayerSupportedFormat]:
ret = []
for x in value:
if isinstance(x, dict):
ret.append(MediaPlayerSupportedFormat.from_dict(x))
else:
ret.append(MediaPlayerSupportedFormat.from_pb(x))
return ret
@_frozen_dataclass_decorator
class MediaPlayerInfo(EntityInfo):
supports_pause: bool = False
supported_formats: list[MediaPlayerSupportedFormat] = converter_field(
default_factory=list, converter=MediaPlayerSupportedFormat.convert_list
)
@_frozen_dataclass_decorator
class MediaPlayerEntityState(EntityState):