- Remove the namespaced versions of the thumbnail types - Add the "base64" and "base64-bob" types
5.3 KiB
File Thumbnails
Introduction
When sending media, it is often helpful for users when a thumbnail can be shown before the actual file is finished downloading.
XMPP already has a protocol for specifying thumbails, Jingle Content Thumbnails. However, this protocol requires that the thumbnail is a base64-encoded image published using Bits of Binary. This prevents clients from implementing newer technologies, such as Blurhash.
This document specifies are more general and extensible element for specifiying thumbnails.
Usage
<file-thumbnail type="blurhash" xmlns="proto:urn:xmpp:file-thumbnails:0">
<blurhash>LEHV6nWB2yk8pyoJadR*.7kCMdnj</blurhash>
</thumbnail>
In this example, the thumbnail is specified of type proto:urn:xmpp:file-thumbnails:0:blurhash
, which means that a supporting
client should decode the <blurhash/>
element using the Blurhash algorithm.
Other extensions may define similar types. Note that the content of the <file-thumbnail />
element
is dependent on the type specified in the <file-thumbnail />
element.
Thumbnail Types
Blurhash
If a sender specifies the type to be of blurhash
, then the <file-thumbnail />
element must contain the
image data as specified by the Blurhash algorithm. Care should be taken to prevent
the blurhash data from growing to large in order to prevent hitting the stanza size limit.
<file-thumbail xmlns="proto:urn:xmpp:file-thumbnails:0" type="blurhash">
<blurhash>LEHV6nWB2yk8pyoJadR*.7kCMdnj</blurhash>
</file-thumbnail>
Jingle Content Thumbnail Compatability
In order to enable a pseudo-interoperability with Jingle Content Thumbnails, a type
base64-bob
is defined.
If a sender specified the type to be of base64-bob
, then the <file-thumbnail />
element must contain exactly one <base64-bob />
element. The attributes of the element are the same
as the <thumbnail />
element specified in Jingle Content Thumbnails.
<file-thumbail xmlns="proto:urn:xmpp:file-thumbnails:0" type="base64-bob">
<base64-bob uri="cid:sha1+...@bob.xmpp.org" media-type="image/png" width="128" height="96" />
</file-thumbnail>
This allows clients that already support Jingle Content Thumbnails to reuse the same logic they use for retrieving thumbnail data.
Base64 Data
If a sender specified the type to be of base64
, then the <file-thumbnail />
element must
contain exactly one <base64 />
element. The element must posess an media-type
attribute, whose value
contains the mime type of the thumbnail data, while the inner text of the element contains the base64-encoded
binary thumbnail data.
<file-thumbail xmlns="proto:urn:xmpp:file-thumbnails:0" type="base64">
<base64 media-type="image/png" width="128" height="96">
[base64 data]
</base64>
</file-thumbnail>
Note that this thumbnail type is essentially the same as the base64-bob
type, but allowing the thumbnail to be used even if
the sender is not available on a server that does not cache Bits of Binary data or has it otherwise not available.
If using this thumbnail type, care has to be taken in order to not hit any existing stanza size limits.
Usage Example with Stateless Inline Media Sharing
NOTE: This example is taken from Stateless Inline Media Sharing and modified for this protocol.
<message to='julient@shakespeare.lit' from='romeo@montague.lit'>
<body>Look at the nice view from the summit.</body>
<reference xmlns='urn:xmpp:reference:0' begin='17' end='20' type='data'>
<media-sharing xmlns='urn:xmpp:sims:1'>
<file xmlns='urn:xmpp:jingle:apps:file-transfer:5'>
<media-type>image/jpeg</media-type>
<name>summit.jpg</name>
<size>3032449</size>
<hash xmlns='urn:xmpp:hashes:2' algo='sha3-256'>2XarmwTlNxDAMkvymloX3S5+VbylNrJt/l5QyPa+YoU=</hash>
<hash xmlns='urn:xmpp:hashes:2' algo='id-blake2b256'>2AfMGH8O7UNPTvUVAM9aK13mpCY=</hash>
<desc>Photo from the summit.</desc>
<file-thumbnail type="base64-bob" xmlns='urn:xmpp:thumbnail:0'>
<base64-bob uri="cid:sha1+ffd7c8d28e9c5e82afea41f97108c6b4@bob.xmpp.org" media-type="image/png" width="128" height="96" />
</thumbnail>
<file-thumbnail type="blurhash" xmlns="proto:urn:xmpp:file-thumbnails:0">
<blurhash>LEHV6nWB2yk8pyoJadR*.7kCMdnj</blurhash>
</thumbnail>
</file>
<sources>
<reference xmlns='urn:xmpp:reference:0' type='data' uri='https://download.montague.lit/4a771ac1-f0b2-4a4a-9700-f2a26fa2bb67/summit.jpg' />
<reference xmlns='urn:xmpp:reference:0' type='data' uri='xmpp:romeo@montague.lit/resource?jingle;id=9559976B-3FBF-4E7E-B457-2DAA225972BB' />
</sources>
</media-sharing>
</reference>
</message>
Security Considerations
The same considerations apply as specified by Jingle Content Thumbnails.
Info
Key | Value |
---|---|
Author | PapaTutuWawa |
Version | 0.0.3 |