Thread (13 messages) flat view 13 messages, 2 authors, 2011-10-17

Re: [PATCH 3/5] AVRCP: respond with UINT32_MAX if duration is not available

From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Date: 2011-10-17 07:57:26

Hi Lucas,

On Sat, Oct 15, 2011 at 12:28 AM, Lucas De Marchi
[off-list ref] wrote:
quoted hunk ↗ jump to hunk
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.
---
 audio/avrcp.c     |    2 +-
 doc/media-api.txt |    4 +++-
 2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/audio/avrcp.c b/audio/avrcp.c
index 8b48e83..1b55e33 100644
--- a/audio/avrcp.c
+++ b/audio/avrcp.c
@@ -808,7 +808,7 @@ static uint8_t avrcp_handle_get_play_status(struct avrcp_player *player,
                                               AVRCP_MEDIA_ATTRIBUTE_DURATION,
                                               player->user_data));

-       duration = htonl(duration);
+       duration = duration ? htonl(duration) : UINT32_MAX;
       position = htonl(position);
I would prefer doing this on RegisterPlayer/parse_player_metadata as
we do with title, so if is not present then we set UINT32_MAX.
quoted hunk ↗ jump to hunk
       memcpy(&pdu->params[0], &duration, 4);
diff --git a/doc/media-api.txt b/doc/media-api.txt
index b8dcdbd..204f33e 100644
--- a/doc/media-api.txt
+++ b/doc/media-api.txt
@@ -114,7 +114,9 @@ Methods             void RegisterEndpoint(object endpoint, dict properties)
                               uint32 Duration:

-                                       Track duration in milliseconds
+                                       Track duration in milliseconds. If it's
+                                       set to 0 or left blank, it will be
+                                       treated as not available.
0 might be a valid duration so I would just treat as not available if
Duration is not part of the metadata or if the value is actually
UINT32_MAX which can happen if the duration exceeds 32 bits.


-- 
Luiz Augusto von Dentz
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help