mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-11-25 21:24:16 +08:00
AVRCP: respond with UINT32_MAX if duration is not available
Section 5.4.1 of AVRCP 1.3 spec says: If TG does not support SongLength And SongPosition on TG, then TG shall return 0xFFFFFFFF. SongPosition is always available, but song length depends on user to provied it.
This commit is contained in:
parent
2c920f6d68
commit
464c36f7d8
@ -796,6 +796,7 @@ static uint8_t avrcp_handle_get_play_status(struct avrcp_player *player,
|
||||
uint16_t len = ntohs(pdu->params_len);
|
||||
uint32_t position;
|
||||
uint32_t duration;
|
||||
void *pduration;
|
||||
|
||||
if (len != 0) {
|
||||
pdu->params_len = htons(1);
|
||||
@ -804,11 +805,13 @@ static uint8_t avrcp_handle_get_play_status(struct avrcp_player *player,
|
||||
}
|
||||
|
||||
position = player->cb->get_position(player->user_data);
|
||||
duration = GPOINTER_TO_UINT(player->cb->get_metadata(
|
||||
AVRCP_MEDIA_ATTRIBUTE_DURATION,
|
||||
player->user_data));
|
||||
pduration = player->cb->get_metadata(AVRCP_MEDIA_ATTRIBUTE_DURATION,
|
||||
player->user_data);
|
||||
if (pduration != NULL)
|
||||
duration = htonl(GPOINTER_TO_UINT(pduration));
|
||||
else
|
||||
duration = htonl(UINT32_MAX);
|
||||
|
||||
duration = htonl(duration);
|
||||
position = htonl(position);
|
||||
|
||||
memcpy(&pdu->params[0], &duration, 4);
|
||||
|
Loading…
Reference in New Issue
Block a user