From: "Frédéric Danis" <frederic.danis@collabora.com>
To: linux-bluetooth@vger.kernel.org
Subject: [PATCH BlueZ 3/7] player: Add image handle support property
Date: Wed, 4 Sep 2024 16:04:17 +0200 [thread overview]
Message-ID: <20240904140421.283166-4-frederic.danis@collabora.com> (raw)
In-Reply-To: <20240904140421.283166-1-frederic.danis@collabora.com>
This is part of the metadata when the AVRCP target supports covert
art download and a OBEX BIP session is connected.
The image handle references the cover art associated to the track,
and is valid only during OBEX BIP session.
---
doc/org.bluez.MediaPlayer.rst | 4 ++++
monitor/avctp.c | 3 +++
profiles/audio/avrcp.c | 7 ++++++-
profiles/audio/avrcp.h | 3 ++-
tools/parser/avrcp.c | 3 +++
5 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/doc/org.bluez.MediaPlayer.rst b/doc/org.bluez.MediaPlayer.rst
index f1e999bdf..5bb38e7c2 100644
--- a/doc/org.bluez.MediaPlayer.rst
+++ b/doc/org.bluez.MediaPlayer.rst
@@ -237,6 +237,10 @@ dict Track [readonly]
Track duration in milliseconds
+ :string ImgHandle:
+
+ Track image handle
+
object Device [readonly]
````````````````````````
diff --git a/monitor/avctp.c b/monitor/avctp.c
index c59e93b20..4da448750 100644
--- a/monitor/avctp.c
+++ b/monitor/avctp.c
@@ -156,6 +156,7 @@
#define AVRCP_MEDIA_ATTRIBUTE_TOTAL 0x05
#define AVRCP_MEDIA_ATTRIBUTE_GENRE 0x06
#define AVRCP_MEDIA_ATTRIBUTE_DURATION 0x07
+#define AVRCP_MEDIA_ATTRIBUTE_IMG_HANDLE 0x08
/* play status */
#define AVRCP_PLAY_STATUS_STOPPED 0x00
@@ -582,6 +583,8 @@ static const char *mediattr2str(uint32_t attr)
return "Genre";
case AVRCP_MEDIA_ATTRIBUTE_DURATION:
return "Track duration";
+ case AVRCP_MEDIA_ATTRIBUTE_IMG_HANDLE:
+ return "Imaging handle";
default:
return "Reserved";
}
diff --git a/profiles/audio/avrcp.c b/profiles/audio/avrcp.c
index 61558e492..fe24b5a92 100644
--- a/profiles/audio/avrcp.c
+++ b/profiles/audio/avrcp.c
@@ -417,7 +417,8 @@ static sdp_record_t *avrcp_ct_record(bool browsing)
uint16_t feat = ( AVRCP_FEATURE_CATEGORY_1 |
AVRCP_FEATURE_CATEGORY_2 |
AVRCP_FEATURE_CATEGORY_3 |
- AVRCP_FEATURE_CATEGORY_4);
+ AVRCP_FEATURE_CATEGORY_4 |
+ AVRCP_FEATURE_CT_GET_THUMBNAIL);
record = sdp_record_alloc();
if (!record)
@@ -883,6 +884,8 @@ static const char *metadata_to_str(uint32_t id)
return "NumberOfTracks";
case AVRCP_MEDIA_ATTRIBUTE_DURATION:
return "Duration";
+ case AVRCP_MEDIA_ATTRIBUTE_IMG_HANDLE:
+ return "ImgHandle";
}
return NULL;
@@ -1197,6 +1200,8 @@ static uint32_t str_to_metadata(const char *str)
return AVRCP_MEDIA_ATTRIBUTE_N_TRACKS;
else if (strcasecmp(str, "Duration") == 0)
return AVRCP_MEDIA_ATTRIBUTE_DURATION;
+ else if (strcasecmp(str, "ImgHandle") == 0)
+ return AVRCP_MEDIA_ATTRIBUTE_IMG_HANDLE;
return 0;
}
diff --git a/profiles/audio/avrcp.h b/profiles/audio/avrcp.h
index dcc580e37..59117e946 100644
--- a/profiles/audio/avrcp.h
+++ b/profiles/audio/avrcp.h
@@ -46,7 +46,8 @@
#define AVRCP_MEDIA_ATTRIBUTE_N_TRACKS 0x05
#define AVRCP_MEDIA_ATTRIBUTE_GENRE 0x06
#define AVRCP_MEDIA_ATTRIBUTE_DURATION 0x07
-#define AVRCP_MEDIA_ATTRIBUTE_LAST AVRCP_MEDIA_ATTRIBUTE_DURATION
+#define AVRCP_MEDIA_ATTRIBUTE_IMG_HANDLE 0x08
+#define AVRCP_MEDIA_ATTRIBUTE_LAST AVRCP_MEDIA_ATTRIBUTE_IMG_HANDLE
/* play status */
#define AVRCP_PLAY_STATUS_STOPPED 0x00
diff --git a/tools/parser/avrcp.c b/tools/parser/avrcp.c
index e73a6317e..d574c7ee3 100644
--- a/tools/parser/avrcp.c
+++ b/tools/parser/avrcp.c
@@ -160,6 +160,7 @@
#define AVRCP_MEDIA_ATTRIBUTE_TOTAL 0x5
#define AVRCP_MEDIA_ATTRIBUTE_GENRE 0x6
#define AVRCP_MEDIA_ATTRIBUTE_DURATION 0x7
+#define AVRCP_MEDIA_ATTRIBUTE_IMG_HANDLE 0x08
/* play status */
#define AVRCP_PLAY_STATUS_STOPPED 0x00
@@ -933,6 +934,8 @@ static const char *mediattr2str(uint32_t attr)
return "Genre";
case AVRCP_MEDIA_ATTRIBUTE_DURATION:
return "Track duration";
+ case AVRCP_MEDIA_ATTRIBUTE_IMG_HANDLE:
+ return "Imaging handle";
default:
return "Reserved";
}
--
2.34.1
next prev parent reply other threads:[~2024-09-04 14:04 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-04 14:04 [PATCH BlueZ 0/7] Add BIP for AVRCP covert art OBEX client Frédéric Danis
2024-09-04 14:04 ` [PATCH BlueZ 1/7] obexd: Add PSM support to session create Frédéric Danis
2024-09-04 17:22 ` Add BIP for AVRCP covert art OBEX client bluez.test.bot
2024-09-04 14:04 ` [PATCH BlueZ 2/7] player: Add OBEX PSM port for cover art support Frédéric Danis
2024-09-04 15:14 ` Luiz Augusto von Dentz
2024-09-04 17:08 ` Frédéric Danis
2024-09-04 14:04 ` Frédéric Danis [this message]
2024-09-04 15:07 ` [PATCH BlueZ 3/7] player: Add image handle support property Luiz Augusto von Dentz
2024-09-04 14:04 ` [PATCH BlueZ 4/7] obexd: Add BIP client for AVRCP cover art download Frédéric Danis
2024-09-04 14:04 ` [PATCH BlueZ 5/7] obexd: Add GetImageProperties to bip-avrcp Frédéric Danis
2024-09-04 14:04 ` [PATCH BlueZ 6/7] obexd: Add GetImage " Frédéric Danis
2024-09-04 14:04 ` [PATCH BlueZ 7/7] doc: Add description of org.bluez.obex.BipAvrcp Frédéric Danis
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240904140421.283166-4-frederic.danis@collabora.com \
--to=frederic.danis@collabora.com \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox